Chat TODO 计划
这是什么
- 一个限于本次对话的计划——你的会话任务。显示在待办事项面板中供用户查看;跟随会话存在(不提交到版本库)。
- 组 = 任务,项 = 步骤。 一个用户请求 = 一个组;组的标题是结果(如“修复登录重定向”),而不是过程。组内的步骤是项——每个项有标题、状态(
pending→in_progress→done)和可选的备注(将完成标准放在那里,例如“登录端到端测试通过”)。任务自身的状态从不直接存储——它由其步骤衍生而来。 - 自由项是用户的车道——且它们位于计划末尾。 它们保存用户从界面添加的内容;你需要处理它们,但绝不能对它们进行分组、重写或删除。
todo_list将它们渲染在最后,所有组之后,有意为之:用户在任务中途添加的请求会排队在你当前工作之后。因此,先完成(或恢复)你正在进行的任务,再处理自由项——不要跳到一个新添加的用户项上,放弃你正在进行的步骤。你不创建自由项(工具需要group或after锚点);一个很小的请求可以是一个小分组(1-2 步没问题),或者根本不用列表。 - 它是共享且实时的:你维护它,而用户在你工作时编辑它——添加任务,删除他们放弃的任务。存储的列表是真相来源;你记忆的只是快照。重新读取它(
todo_list) 以保持同步,不要相信你的记忆。 - 它是用户的状态窗口——用户无需阅读对话就能快速了解正在发生什么。简短、具体的步骤标题;状态始终保持最新。
粒度
| 请求大小 | 计划中的形式 |
|---|---|
| 琐碎(一个回答,一次编辑) | 无列表 |
| 1–7 步 | 一个组(小请求 = 1-2 步的组,这没问题) |
| 超过约 10 步 | 这些不是步骤,而是任务——拆分为多个组 |
步骤是可验证的且大约相当于一次提交的大小:“易于随时勾选完成”,而不是“阶段 1”。
如何使用
- 先提出计划——这是列表的意义所在。 当你理解一个需要不止几步的请求时,你的第一个操作是**
todo_write,包含你提出的计划——每个任务一个组,组内有步骤——在你提出澄清问题之前和在**你开始工作之前。然后随着了解更多,在原地完善它。(一次性回答不需要列表。) - 严格按顺序工作,一次一步:
- 开始执行步骤时将其翻转为
in_progress,完成时翻转为done。开始新步骤会自动将任何其他in_progress步骤恢复为pending——所以在继续之前先完成(标记为done),否则前一步会明显回退到未完成状态。 - 当前组还有未关闭的步骤时,不要开始下一个组。唯一的例外是:一个真正阻塞的任务——在步骤的
note中记录原因,告知用户,然后继续下一个组。 - 在每个下一步之前,再次执行
todo_list。 用户可能在工作途中进行了编辑:注意新内容(它会被追加到用户车道的末尾——在你当前步骤之后再处理,不要抢占正在进行的步骤),如果你计划中的某项消失了,说明用户已放弃——跳过它,不要重新添加。 - 工具结果会帮助你:完成
done后会显示任务的下一步;当没有in_progress项时,会提醒你翻转当前步骤。遵循这些提示。
- 开始执行步骤时将其翻转为
- 会话中途的新请求 = 追加一个新组(使用
todo_add配合group:,每次一个步骤——或者通过多次调用todo_add来布置新任务的步骤)。切勿将新请求的步骤混入当前组。在任务中途发现的步骤 通过todo_add after: <当前步骤 id>插入(锚定到你的某个步骤——锚定到用户自己的某项会被拒绝,因为你的项永远不会在用户的车道中)——不要为此用todo_write重建计划。 - 结束前进行协调。 在一个轮次结束时,再次执行
todo_list。如果还有未关闭的步骤(包括用户刚添加的项),要么完成它们,要么清晰地说明剩下的内容和原因——不要悄无声息地闲置,留下新项未处理。
不变规则
- 已完成项保留。 完成一个步骤 =
todo_update→done。永远不要删除一个已完成的项——它是用户的历史。todo_remove仅用于用户明确要求删除某个内容时。 - 精确编辑。 在初始计划之后,使用
todo_update/todo_add(它们只触及一个项)。永远不要用todo_write调整现有列表——它会替换一切;todo_write仅用于布置全新的计划。 - 尊重用户的编辑。 列表是共享的;将用户的添加视为新请求,将用户的删除视为取消。自由项属于用户——处理它们,但重新规划时不要重写或删除它们。(
todo_write会为你保留用户项和已完成项,但不要依赖于此——使用todo_add/todo_update进行编辑,将todo_write保留给真正全新的计划。)
工具
todo_list— 读取当前计划(真相来源;重新读取以捕捉用户的编辑)。todo_add— 添加一个步骤(放入某个group,或置于某个已有步骤after;不影响其余部分)。todo_update— 推进一个步骤(开始时设为in_progress,完成时设为done;已完成项保留)。todo_remove— 删除一个项(仅在用户要求时)。todo_write— 布置一个全新的计划(仅组——每个任务一个组;替换你的未完成项;仅在开始时使用一次)。