ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Gemini CLI 任务规划实战:用 write_todos 让复杂任务按步骤落地并全程可追踪

Gemini CLI 任务规划实战:用 write_todos 让复杂任务按步骤落地并全程可追踪 Gemini CLI 任务规划实战用 write_todos 让复杂任务按步骤落地并全程可追踪【免费下载链接】gemini-cliAn open-source AI agent that brings the power of Gemini directly into your terminal.项目地址: https://gitcode.com/GitHub_Trending/gemi/gemini-cliGemini CLI 内置的 task planning任务规划机制让你在提出复杂任务前就能预览 Agent 的执行计划并在执行过程中实时跟踪每一步状态。读完本文你将掌握如何显式请求规划、审阅并迭代计划、执行计划、用 CtrlT 查看完整待办清单以及处理计划中途变更同时会理解底层write_todos工具的参数结构、校验规则与 UI 渲染链路做到“既会用又懂原理”。前置条件开始之前请确保已安装并完成认证authentication的 Gemini CLI你手里有一个足够复杂的任务例如多文件重构或一个全新特性——规划机制对这类任务的价值最大。为什么需要任务规划标准 LLM 的上下文窗口有限在连续十余轮代码生成之后Agent 可能“忘记”最初的总体目标。任务规划用一份结构化的 todo 清单来解决这个问题它提供三方面收益可见性Visibility在 Agent 动手之前你就能精确看到它打算做什么聚焦FocusAgent 始终清楚当前正在执行哪一步韧性Resilience当 Agent 中途卡住时计划可以帮助它回到正轨。如何请求生成计划最可靠的方式是显式要求规划。推荐提示词I want to migrate this project from JavaScript to TypeScript. Please make a plan first.Gemini 会先分析你的代码库然后调用write_todos工具生成一份结构化清单。例如针对上述迁移任务典型计划是Createtsconfig.json.Rename.jsfiles to.ts.Fix type errors inutils.js.Fix type errors inserver.js.Verify build passes.从源码看write_todos执行时会将清单渲染为带序号与状态的文本回传给模型格式为1. [status] description见 write-todos.ts 中execute的todoListString拼接逻辑因此模型在后续轮次里“看到”的正是这种带状态的列表这也是它能持续跟踪进度的原因。如何审阅并迭代计划计划生成后会显示在 CLI 中先审阅再放行有遗漏步骤直接指出例如“You forgot to add a step for installingtypes/node.”顺序不对例如“Lets verify the buildaftereach file, not just at the end.”Agent 会动态更新 todo 清单而不是从头重做。这一机制的关键在于write_todos每次传入的是完整清单会整体覆盖旧列表write-todos.ts 中WriteTodosToolParams.todos的注释明确写着 “This will overwrite any existing list”。因此“迭代”在实现上就是模型重写整份带最新状态的清单。如何执行计划审阅通过后提示 Agent 开始即可Looks good. Start with the first step.执行过程中你会看到输入框上方的 todo 清单实时更新当前焦点正在进行中的任务会被高亮例如[IN_PROGRESS] Create tsconfig.json进度已完成的步骤会被标记为 done。如何用 CtrlT 监控完整进度在长任务中完整 todo 列表可能被收起以节省屏幕空间。随时按下CtrlT可以切换完整视图显示包括 pending、in-progress、completed 在内的所有条目——这是不用往上翻历史就能回答“还剩多少没做”的好办法。这一快捷键在源码中的链路非常清晰键位定义keyBindings.ts 将ctrlt绑定到Command.SHOW_FULL_TODOS命令说明为 “Toggle the full TODO list.”UI 状态showFullTodos是 AppContainer.tsx 中的状态变量切换后注入 UIStateContext渲染Todo.tsx 中的TodoTray将uiState.showFullTodos传给Checklist的isExpanded并展示 “CtrlT to toggle” 提示。从 UI 实现看TodoTray会从历史末尾向前扫描取最近一次输出了todos的工具结果例如write_todos的调用作为当前清单Todo.tsx。这意味着多次调用write_todos后界面永远只展示最新那份清单与“整表覆盖”的语义一致。如何处理计划中的意外变更计划会变——比如做到一半发现某个库不兼容。此时只需说明Actually, lets skip the server.js refactor for now. Its too risky.Agent 会把该任务标记为cancelled或直接移除然后继续下一项。这种动态调整正是 todo 系统的价值所在——它是一份“活文档”living document而不是一块静态文本。write_todos 的状态机与校验规则todo 条目支持 5 种状态pending、in_progress、completed、cancelled、blocked。这一约束由工具实现层强制执行从源码看合法状态常量定义在 write-todos.ts 的TODO_STATUSESvalidateToolParamValues会逐条校验todos必须是数组、每项description必须是非空字符串、状态必须落在上述枚举内排他性约束同一时刻最多只能有一个任务处于in_progress否则直接返回错误 “Only one task can be in_progress at a time.”write-todos.ts。这与工具参考文档 todos.md 中 “Only one task can be markedin_progressat any time” 的说明一致。参数层面的技术规格来自 todos.md参数类型说明todosobject 数组必填完整任务列表整体覆盖现有清单todos[].descriptionstring任务描述todos[].statusenumpending/in_progress/completed/cancelled/blocked其他技术行为要点界面更新位于 CLI 输入提示符上方的进度指示器排他性任意时刻仅一个任务可为in_progress持久化todo 状态仅限当前会话session 作用域清空会话或重新开始时不再保留。工具名与声明的注册位置可追溯到 base-declarations.ts 中的WRITE_TODOS_TOOL_NAME write_todos工具在不同模型族下有各自的 schema 变体如 default-legacy.ts 与 gemini-3.ts由getSchema按modelId动态解析。其调用与校验行为有对应测试覆盖见 write-todos.test.ts。典型工作流小结请求规划在提示词末尾加 “Please make a plan first.”审阅迭代用自然语言指出遗漏或顺序问题让 Agent 重写清单放行执行“Looks good. Start with the first step.”跟踪进度默认查看输入框上方摘要CtrlT展开完整清单应对变更中途调整需求时直接说明任务会被标记cancelled或移除。下一步了解 Session management保存当前计划明天继续执行查阅 Todo 工具参考write_todos的完整技术规格学习 Memory management持久化规划偏好例如 “Always create a test plan first”。【免费下载链接】gemini-cliAn open-source AI agent that brings the power of Gemini directly into your terminal.项目地址: https://gitcode.com/GitHub_Trending/gemi/gemini-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表