MemoryLake
返回全部文章
Tutorial2026 年 11 月 12 日·11 分钟阅读

为什么 Claude Code 任务列表是空的?哪些模型默认获取清单,任务如何在压缩中存续,以及如何在会话间共享列表 (2026)

你以前在 Claude Code 中能看到一个清单:几行带有待处理、进行中和已完成标记的内容,随着 Claude 规划更大的变更而填充。现在你按下 Ctrl+T 却没有任何反应,或者列表根本不出现。这并不是出故障了。在较新的模型上,默认情况下不包含编写该清单的工具。

Anthropic 的文档指出,任务列表“仅在拥有任务跟踪工具的会话中填充”。并指明了这些工具默认开启的范围:“任务跟踪工具 TaskCreate、TaskGet、TaskUpdate、TaskList 和 TodoWrite 仅在 Opus 4.7、Sonnet 4.6、Haiku 4.5 及更早模型上默认可用。”

本指南涵盖了什么是任务列表、为什么它在较新模型上为空、如何重新开启它、Ctrl+T 显示什么、任务如何在 compaction(压缩)中存续并恢复、如何在会话和团队成员之间共享同一个列表、任务列表存储在哪里以及何时被删除,以及清单不包含哪些内容。

什么是任务列表

Anthropic 将其描述为“Claude 的待办事项清单:Claude 为规划多步骤工作而创建的项目,带有显示待处理、进行中或已完成的指示器。”

它很容易与另一种视图混淆。文档将它们分开:任务列表“与后台任务视图是分开的。要查看正在运行的 shell 和 subagents,请改用 /tasks。” /tasks 命令列出当前会话中的后台工作,包括已完成的 subagents。而任务列表是 Claude 的计划。

Claude 使用一组工具编写列表。默认情况下是四个 Task 工具:TaskCreate、TaskGet、TaskList 和 TaskUpdate。一个较旧的工具 TodoWrite 已“默认禁用,取而代之的是”这四个 Task 工具。你可以通过 CLAUDE_CODE_ENABLE_TASKS=0 切换回它,但前提是该会话本身拥有任务跟踪工具。

为什么较新模型上的列表是空的

在较新模型中省去这些工具是有意为之的。Anthropic 的工具参考解释道:“在所有其他模型上,除非你主动选择开启,否则 Claude Code 会排除这些工具。”

原因就在下一句话中:“在较新模型上,Claude 无需书面清单即可跟踪多步骤工作,而工具的定义和提醒会占用 context(上下文)。如果没有这些工具,Claude 在工作时不会向任务列表添加任何内容。”

因此,当你运行较新模型时,Claude 仍然会规划多步骤工作。它只是不会将计划写入清单,因为它没有执行此操作的工具。列表因此保持为空。

另外两种情况也遵循同样的规则:

  • 无法识别的模型。 “这同样适用于 Claude Code 无法识别的模型 ID,例如通过 LLM 网关提供的自定义模型名称。”
  • 版本。 “此处描述的默认设置适用于 Claude Code v2.1.268 及更高版本。”如果列表在更新后消失,请将你的版本与该行进行对比。

还有一个反向的例外。“在后台会话和云端会话中,无论是否列出,Claude Code 在每个模型上都提供相同的工具。”

如何重新开启任务列表

如果你想在较新模型上使用清单,Anthropic 列出了几种开启方式:

  • 环境变量。 在启动 Claude Code 之前导出 CLAUDE_CODE_ENABLE_TODO_TOOLS=1。“Claude Code 随后会在每个模型和每个提供商上提供相同的工具”。这需要 Claude Code v2.1.233 或更高版本。
  • allowed-tools 标志。 在 --allowedTools 中指定其中一个工具,例如 TaskCreate。
  • tools 标志。 在 --tools 中列出工具。Anthropic 指出,此标志“会将会话的内置工具限制为你命名的工具”,因此请务必包含你使用的其他内置工具。
  • Agent SDK。 allowedTools 和 tools 选项的工作方式与上述两个标志相同。

在开启它们之前,请权衡 Anthropic 关闭它们的原因。工具的定义和提醒会占用 context,而较新模型在没有它们的情况下也能跟踪多步骤工作。如果你使用清单主要是为了观察进度,那这是一个公平的权衡。如果你的 context 比较紧张,保持关闭可能更适合该会话。

Ctrl+T 显示什么

在拥有工具的会话中,任务列表是一个开关。Anthropic 的交互模式参考涵盖了它的行为:

  • “按下 Ctrl+T 切换任务列表视图。显示屏一次最多显示五个任务。”
  • “当 Claude 尚未创建任何清单项目时,该切换没有可见效果,因为没有什么可显示的”。
  • 要查看每个任务或清除列表,请直接询问 Claude,例如要求显示所有任务或清除所有任务。

第二点是常见的困惑来源。在没有工具的较新模型上,Ctrl+T 没有内容可显示,因此按下它没有任何反应。

该视图还会记住你离开时的状态。“如果你保持列表展开,Claude Code 会在下次启动仍有任务的会话(例如使用 --resume 或 --continue)时恢复展开视图。当任务列表为空时,Claude Code 启动时会将其折叠”。

Ctrl+T 是任务列表,而不是 transcript(对话记录)。要查看会话中发生的所有记录,Claude Code 有一个单独的 transcript 视图,详见我们的指南:Claude Code 中 transcript 视图显示的内容。

任务如何在压缩中存续

长会话会被压缩(compacted):Claude Code 会总结对话的早期部分以释放 context。任务列表是不依赖于该总结的内容之一。Anthropic 表示:“任务在 context 压缩中保持持久,帮助 Claude 在大型项目中保持条理”。

该列表也保存在对话之外。Anthropic 的目录参考列出了 ~/.claude/ 下的一个 tasks/ 文件夹,其中保存着“由任务工具编写的任务列表,每个列表一个目录”。

恢复工作的方式相同。当你使用 --resume 或 --continue 恢复仍有任务的会话时,Claude Code 会按你离开时的样子恢复列表视图。

如何在会话间共享同一个列表

默认情况下,每个会话的列表是独立的。要在多个会话中使用相同的列表,请设置一个 ID。Anthropic 的示例:CLAUDE_CODE_TASK_LIST_ID=my-project claude。

环境变量参考描述了它的作用:“跨会话共享任务列表。在多个 Claude Code 实例中设置相同的 ID,以便在拥有 Task 工具的会话中协调共享任务列表。”

该 ID 映射到 ~/.claude/tasks/ 中的一个命名目录。任何使用相同 ID 启动的会话都会读取并更新同一个列表。

请记住模型规则。在没有工具的较新模型上的会话无法读取或更新共享列表。每个需要参与的会话都需要拥有工具,无论是通过默认设置还是通过上述开启方式之一。

Subagents 与 Agent 团队

任务工具跟随你的会话。“只有当你的会话拥有任务跟踪工具时,subagent 才拥有这些工具,无论 subagent 运行的是什么模型。”

Agent 团队使用任务列表进行协调。Anthropic 的 agent 团队文档指出:“在 agent 团队中,团队成员共享任务列表、认领工作并直接相互沟通。”它描述了该列表的工作方式:

  • “任务有三种状态:待处理、进行中和已完成。”
  • “一个任务还可以依赖于其他任务,在这些任务完成之前,它在任务列表中显示为已阻塞。”
  • “团队成员不会自动认领已阻塞的任务,但你或负责人仍然可以分配它。”

如果没有工具,团队会退回到消息模式:“没有 Task 工具的 agent 通过消息而不是共享任务列表进行协调。”

团队的列表有自己的文件夹 ~/.claude/tasks/{team-name}/,文档指出:“该目录在会话结束后仍保留在磁盘上。”

分栏(split-pane)团队成员的规则更为详细。分栏团队成员是一个独立的 Claude Code 进程,如果你在 shell 中导出了 CLAUDE_CODE_ENABLE_TODO_TOOLS,Anthropic 表示团队成员不会自动获取它。建议的解决方法是在启动会话时通过 --settings 传递该设置。

任务列表存储在哪里,何时被删除

任务列表是你机器上的文件,它们遵循 Claude Code 的清理规则。

自动清理。 tasks/ 文件夹位于 Claude Code 在超过 cleanupPeriodDays 后删除的路径列表中。“默认值为 30 天,最小值为 1 天”。

自行删除。 在 Anthropic 关于删除 ~/.claude 下路径会损失什么的表格中,~/.claude/tasks/ 的条目写道:“你的任务列表,包括任何仍在使用的列表”。

清除项目。 claude purge 会删除 Claude Code 为一个项目持有的状态,包括“每个会话的 tasks/、debug/ 和 file-history/ 条目”。它会先打印计划并请求确认。

你可能还会看到一个 todos/ 文件夹。Anthropic 将其列为“来自旧版本的遗留目录。不再写入”。

清单不包含哪些内容

任务列表跟踪步骤及其状态。这是它的职责。Anthropic 的文档描述了 Claude 为规划多步骤工作而创建的项目,但并未将其描述为存放计划背后推理的地方,例如为什么一个步骤在另一个步骤之前,或者你已经排除了哪种方法。

项目的这些部分往往比任何单个列表都持久。列表可以被清除,可以在保留期后过期,或者仅仅是完成了。如果这些原因对下一个会话很重要,则需要将它们写在专门为它们准备的地方。

人们首先尝试的操作

在较新模型上按下 Ctrl+T。 没有任务工具,就没有什么可显示的。

重新安装 Claude Code。 自 v2.1.268 起,较新模型上列表为空是文档记录的默认行为。

打开 /tasks 来寻找清单。 该命令显示后台工作,而不是计划。

在没有工具的会话上设置共享列表 ID。 会话在拥有工具之前无法使用该列表。

依赖列表来记录“为什么”。 它保存步骤和状态,而不是背后的推理。

解决方法:获取你预期的清单

第 1 步:检查会话使用的模型

如果不是 Opus 4.7、Sonnet 4.6、Haiku 4.5 或更早版本,任务工具默认是关闭的。

第 2 步:如果你想要列表,请选择开启

在启动 Claude Code 之前导出 CLAUDE_CODE_ENABLE_TODO_TOOLS=1,或者在 --allowedTools 中命名一个 Task 工具。

第 3 步:有目的地共享列表

在每个应该基于同一个列表工作的会话中,将 CLAUDE_CODE_TASK_LIST_ID 设置为相同的值。

第 4 步:写下推理过程

将计划背后的决策(如顺序、约束和被拒绝的方法)保留在清单之外。

在 MemoryLake 中设置

任务列表是记录待办事项的好工具。但其背后的决策(例如为什么在回填之前运行迁移)是下一个会话需要的 context,无论它是否有清单。

MemoryLake 是此类项目 context(如决策、约束和约定)的记忆层,保存在你维护的一个地方,并可供你连接的助手(如 ChatGPT、Claude Code 和 Codex)使用。

你用自己的语言亲自编写条目。不会从你的任务列表、~/.claude 文件夹、会话 transcript、CLAUDE.md 文件、自动记忆或任何供应商的存储中读取、写入或删除任何内容。任务工具、压缩和清理工作仍按 Anthropic 描述的方式运行。

第 1 步:创建 API 密钥

登录并从控制面板生成密钥。像对待任何其他凭据一样,将其存储在代码库之外。

MemoryLake 控制台显示 API 密钥屏幕,在此处创建并复制新密钥以供 agent 使用
MemoryLake 控制台显示 API 密钥屏幕,在此处创建并复制新密钥以供 agent 使用

第 2 步:上传你的第一条记忆

从你在解决方法的第 4 步中写下的内容开始:工作的顺序及其原因、约束以及你已排除的方法。每个条目记录一个决策。

MemoryLake 工作区已上传首批文档,列出了每个成为可搜索记忆的文件
MemoryLake 工作区已上传首批文档,列出了每个成为可搜索记忆的文件

第 3 步:连接你的 AI 和 agent

连接 Claude Code 和你使用的任何其他助手。无论是否有任务列表,新会话都可以利用相同的决策。

MemoryLake 集成屏幕列出了可以连接到记忆层的 AI 客户端和 agent 框架
MemoryLake 集成屏幕列出了可以连接到记忆层的 AI 客户端和 agent 框架

这在实践中改变了什么

第一个区别是计划比清单更持久。当列表完成或被清除时,推理过程仍然被记录在案。

第二个区别是减少了对模型默认设置的依赖。无论会话是否拥有任务工具,context 都是相同的。

第三个区别是工具间的连续性。在同一个代码库上工作的 Codex 或其他助手可以使用相同的条目。

Claude Code 任务列表的最佳实践

了解默认设置。 任务工具仅对 Opus 4.7、Sonnet 4.6、Haiku 4.5 及更早版本默认开启。

有意识地开启。 工具会消耗 context,而较新模型在没有它们的情况下也能跟踪工作。

使用 Ctrl+T 查看计划,使用 /tasks 查看后台工作。 它们是不同的视图。

使用 ID 共享列表。 每个参与的会话都需要任务工具。

记住保留期。 任务列表在 cleanupPeriodDays(默认为 30 天)后会被清理。

检查分栏团队成员。 导出的变量不会自动传递给它们。

将“为什么”保留在别处。 列表保存步骤,而不是原因。

结论

如果 Claude Code 任务列表为空,请检查会话的模型是否拥有任务跟踪工具。自 v2.1.268 起,它们仅在 Opus 4.7、Sonnet 4.6、Haiku 4.5 及更早模型上默认开启。Anthropic 表示,较新模型无需书面清单即可跟踪多步骤工作,且工具会占用 context。后台和云端会话在所有模型上都会获得这些工具。

如果你想找回列表,请设置 CLAUDE_CODE_ENABLE_TODO_TOOLS=1 或在 --allowedTools 中命名一个 Task 工具。任务在压缩中保持持久,会话可以通过 CLAUDE_CODE_TASK_LIST_ID 共享列表,任务列表会在 cleanupPeriodDays 后与其他数据一起删除。请将计划背后的推理保存在下一个会话可以读取的地方。

常见问题

为什么我的 Claude Code 任务列表是空的?

一个已记录的原因是会话的模型没有任务跟踪工具。Anthropic 表示它们仅在 Opus 4.7、Sonnet 4.6、Haiku 4.5 及更早模型上默认开启。

如何重新开启任务列表?

在启动 Claude Code 之前导出 CLAUDE_CODE_ENABLE_TODO_TOOLS=1,或者在 --allowedTools 中命名一个 Task 工具。

为什么 Ctrl+T 没有任何反应?

当 Claude 尚未创建任何清单项目时,该切换没有可见效果,因为没有什么可显示的。

任务在压缩中能存续吗?

是的。Anthropic 表示任务在 context 压缩中保持持久。

如何在会话间共享任务列表?

在每个会话中将 CLAUDE_CODE_TASK_LIST_ID 设置为相同的值。每个会话都需要任务工具。

任务列表和 /tasks 有什么区别?

任务列表是 Claude 为多步骤工作准备的清单。/tasks 显示后台工作,如正在运行的 shell 和 subagents。

Claude Code 会保留任务列表多久?

任务列表在超过 cleanupPeriodDays(默认为 30 天)后会与其他应用程序数据一起被删除。