1. 多步骤编码任务为什么需要待办清单做多步骤编码任务时最怕的不是某一步难而是步骤一多就乱。比如你让 AI 帮你把一个 Express 项目从 CommonJS 迁移到 ESM它需要先改 package.json再逐个改 import 语法然后处理 __dirname 兼容最后跑测试。中间任何一步断了你都不知道它到底做到哪了。我试过纯靠对话上下文跟踪进度结果 AI 在第 5 轮突然忘了第 2 步还没做完直接跳到第 6 步最后测试报错还得回头补。这种问题在 Roo Code 里有个专门的解法任务待办清单Todo List。它把多步任务拆成一条条可勾选的条目嵌在对话流里AI 每完成一步就更新状态你随时能看到全局进度。Roo Code 的待办清单不是简单的文本列表而是一个交互式、持久化的检查清单。它由update_todo_list工具驱动配合todoListEnabled开关控制是否启用。当 Roo 检测到你的请求涉及多个步骤、阶段或依赖关系时会自动创建清单你也可以手动让它“创建待办清单”。清单会出现在三个位置任务头部摘要只读视图、聊天记录里的交互式工具块可编辑、环境详情中的“提醒事项”表格。适合谁用如果你经常让 AI 做重构、迁移、批量改文件、多模块联调这类任务待办清单能帮你把“它到底做到哪了”这个问题变成一眼可见的状态。下面我从配置开启讲到一次完整的update_todo_list调用再到审批弹窗触发和拒绝后的状态回滚验证每一步都给可复制的参数。2. TaoToken 前置配置与 Roo Code 接入Roo Code 本身是一个 VS Code 扩展它需要连接一个模型服务才能工作。这里我用 TaoToken 作为模型接入层因为它兼容 OpenAI 风格的 API配置简单适合在 Roo Code 里做多步骤编码任务。你需要先拿到 API Key然后配置 Base URL 和 Model ID。2.1 获取 API Key 与确认 Base URL打开 TaoToken 官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册后在控制台创建 API Key。API 端点使用 https://taotoken.net/api注意这个地址不带 UTM 参数直接填在 Roo Code 的 Base URL 里即可。Roo Code 的配置入口在 VS Code 设置里搜索 “Roo Code” 找到 Provider 配置。如果你用的是 Cline 兼容模式也可以直接在 Roo Code 的 settings 里选 “OpenAI Compatible”。2.2 Roo Code 的 settings 配置片段Roo Code 的配置存在 VS Code 的 settings.json 里路径是.vscode/settings.json或全局的settings.json。下面是一个可复制的配置片段包含 Base URL、API Key 和 Model ID 三件套{ rooCode.provider: openai, rooCode.openai.baseUrl: https://taotoken.net/api, rooCode.openai.apiKey: sk-你的TaoToken密钥, rooCode.openai.model: claude-sonnet-4-20250514, rooCode.todoListEnabled: true, rooCode.autoApproveTodoUpdates: false }这里有两个和待办清单直接相关的开关todoListEnabled设为true时Roo 会为复杂任务自动创建待办清单设为false则完全禁用环境详情里的“提醒事项”也会消失。autoApproveTodoUpdates设为false时每次update_todo_list调用都会弹出审批窗口设为true则自动批准适合长工作流减少中断。如果你不想改 settings.json也可以在 Roo Code 的图形界面里操作点击侧边栏的 Roo Code 图标进入 Settings找到 “Todo List” 部分勾选 “Enable Todo List”取消勾选 “Auto Approve Todo Updates”。2.3 模型选择与 Coding Plan多步骤编码任务对模型的指令遵循能力要求较高建议选 Claude Sonnet 系列或同等水平的模型。如果你需要长期做 Agent 类编码任务可以看 TaoToken 的 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite它针对编码场景做了额度优化。模型对话入口在 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewriteAPI Keys 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite。配置完成后在 Roo Code 里发一条测试消息比如“列出当前目录的文件”确认模型能正常响应。如果返回 401说明 API Key 填错了如果返回 model not found说明 Model ID 不对。这两个错误在后面的排障章节会详细讲。3. update_todo_list 调用链路与可复制配置待办清单的核心是update_todo_list工具调用。Roo Code 在检测到多步骤任务时会先创建一份初始清单然后在每一步完成后调用update_todo_list更新状态。你需要理解这个调用链路的参数结构才能在审批时做出正确判断。3.1 update_todo_list 的完整参数示例一次update_todo_list调用包含一个todos数组每个条目有id、content、status三个字段。status的取值有三种pending待处理空心圆、in_progress进行中黄色实心点、completed已完成绿色实心点。下面是一个完整的调用示例场景是把一个 Node.js 项目的日志模块从 console.log 替换成 winston{ tool: update_todo_list, todos: [ { id: 1, content: 安装 winston 依赖并更新 package.json, status: completed }, { id: 2, content: 创建 logger.js 配置文件定义 transports 和 format, status: completed }, { id: 3, content: 替换 src/app.js 中的 console.log 为 logger.info, status: in_progress }, { id: 4, content: 替换 src/routes/*.js 中的 console.error 为 logger.error, status: pending }, { id: 5, content: 运行 npm test 验证日志输出格式, status: pending } ] }这个调用会触发 Roo Code 的审批流程。如果你在 settings 里把autoApproveTodoUpdates设为false聊天界面会弹出一个审批窗口显示这份清单的变更内容。你可以直接点“Approve”批准也可以点“Edit”进入编辑模式。3.2 审批弹窗的触发条件与交互审批弹窗不是每次update_todo_list都弹。Roo Code 的判断逻辑是如果这次更新只是把某个条目的status从in_progress改成completed且没有增删条目通常不会弹窗如果涉及新增条目、删除条目、修改content描述或者一次性变更多个条目的状态就会触发审批。在审批弹窗里你可以做四件事直接修改任务描述、用下拉选择器改状态、点“×”删除任务、点“ 添加待办”新增任务。你的修改是暂存的不会立即生效而是等 Roo 下一次调用update_todo_list时才会应用。这个设计的好处是你可以在 AI 继续工作的同时调整清单不会打断它的执行流。3.3 环境详情中的提醒事项表格除了聊天界面待办清单还会以“提醒事项”表格的形式出现在环境详情里。这个表格是 Roo 持续获取任务状态的来源。如果你在审批时修改了清单下一次 Roo 读取环境详情时就会看到你的修改并据此调整后续步骤。这里有个细节环境详情里的表格是只读的你不能直接在那里编辑。要编辑必须通过聊天记录里的交互式工具块或者审批弹窗。这个设计避免了多处编辑导致的状态冲突。3.4 手动触发待办清单除了自动识别你也可以手动触发。在 Roo Code 的聊天框里输入“使用 update_todo_list 工具创建待办清单”或者直接说“创建待办清单”Roo 就会为当前任务生成一份初始清单。手动触发适合你已经明确知道任务有哪几步不想让 AI 自己拆解的场景。如果你在 settings 里把todoListEnabled设为false手动触发也会失效Roo 会回复“待办清单功能已禁用”。所以如果你发现 AI 不创建清单先检查这个开关。4. 验证请求与成功结果配置完成后需要验证待办清单是否真的在工作。下面是一套完整的验证步骤从发请求到看结果每一步都有预期输出。4.1 发一条多步骤任务请求在 Roo Code 聊天框里输入“帮我把当前项目的 README.md 里的所有 http 链接替换成 https然后检查有没有遗漏最后输出修改的文件列表。”这是一个典型的多步骤任务包含替换、检查、输出三个步骤。发送后观察 Roo 的响应。如果todoListEnabled为trueRoo 应该先回复一段规划文字然后调用update_todo_list创建初始清单。你会在聊天记录里看到一个工具块里面列出三条待办状态都是pending。4.2 观察任务头部摘要在聊天界面顶部会出现一个只读的摘要视图显示“0/3 完成”和下一个待办事项。这个摘要会随着 Roo 的工作自动更新。当 Roo 完成第一步替换后摘要会变成“1/3 完成”下一个事项变成“检查遗漏”。如果你点击这个摘要会弹出一个浮动扩展面板完整展示所有待办项并自动滚动到当前正在处理的任务。面板有展开/收起动画状态指示器会从空心圆变成黄色实心点再变成绿色实心点。4.3 审批弹窗的实际操作当 Roo 完成替换步骤准备把第一条状态改成completed、第二条改成in_progress时如果autoApproveTodoUpdates为false会弹出审批窗口。窗口里显示变更前后的对比第一条从pending变completed第二条从pending变in_progress。你点“Approve”Roo 继续执行。如果你点“Edit”可以修改第二条的描述比如改成“检查 README 和 docs 目录下的遗漏”然后保存。这个修改会暂存等 Roo 下一次更新清单时应用。4.4 验证成功结果任务完成后待办清单应该显示“3/3 完成”所有条目都是绿色实心点。聊天记录里的工具块会显示最终状态环境详情里的“提醒事项”表格也会同步更新。你可以对照 Roo 输出的修改文件列表确认它真的改了那些文件。如果一切正常说明todoListEnabled、update_todo_list调用链路、审批机制都在工作。如果中间某一步没触发参考下一章的排障。5. 本篇常见错排查待办清单功能涉及多个配置项和工具调用出错时症状比较分散。下面按真实报错分类排查。5.1 401 错误API Key 无效症状Roo Code 发请求后立即返回401 Unauthorized聊天框显示“Authentication failed”。原因TaoToken 的 API Key 填错、过期或者 Base URL 写成了带 UTM 的地址。排查检查 settings.json 里的rooCode.openai.apiKey是否以sk-开头是否有多余空格。Base URL 必须是https://taotoken.net/api不要加?utm_source...后缀。如果 Key 没问题去 TaoToken 控制台确认额度是否用完。5.2 local proxy failed本地代理配置冲突症状Roo Code 报local proxy failed或ECONNREFUSED。原因VS Code 或系统设置了 HTTP 代理但代理服务没启动或者代理地址填错。排查检查 VS Code 的http.proxy设置如果不需要代理就清空。检查环境变量HTTP_PROXY和HTTPS_PROXY临时取消设置后重启 VS Code。Roo Code 的请求走的是 Node.js 的 fetch会读取这些环境变量。5.3 reading choices 报错响应格式不匹配症状Roo Code 报Error reading choices或Unexpected response format。原因模型返回的 JSON 结构不符合 OpenAI 兼容格式通常是 Model ID 选错了或者 TaoToken 的 API 版本和 Roo Code 期望的不一致。排查确认rooCode.openai.model填的是 TaoToken 支持的模型 ID比如claude-sonnet-4-20250514。不要填gpt-4这种 OpenAI 原生 ID除非 TaoToken 明确支持。如果问题持续在 TaoToken 的模型对话页面测试同一个 Model ID看是否能正常返回。5.4 OAuth 相关错误认证方式选错症状Roo Code 弹出 OAuth 登录窗口或者报OAuth token invalid。原因Roo Code 的 Provider 选成了需要 OAuth 的模式比如 Anthropic 官方直连而不是 OpenAI Compatible。排查在 Roo Code 设置里把 Provider 改成 “OpenAI Compatible”然后手动填 Base URL 和 API Key。不要选 “Anthropic” 或 “OpenAI” 官方选项那些会走 OAuth 或官方端点。如果你用的是 Claude Code 风格的配置确认auth.json里的baseUrl指向https://taotoken.net/api而不是官方地址。5.5 待办清单不显示todoListEnabled 未开启症状Roo 执行多步骤任务但聊天界面没有待办清单环境详情里也没有“提醒事项”。原因todoListEnabled设为false或者 Roo 判断任务太简单不需要清单。排查检查 settings.json 里的rooCode.todoListEnabled是否为true。如果已经是true试着手动触发“创建待办清单”。如果手动触发也没反应重启 VS Code 让配置生效。5.6 审批弹窗不出现autoApproveTodoUpdates 为 true症状Roo 更新待办清单时直接跳过审批你无法编辑。原因autoApproveTodoUpdates设为true。排查把rooCode.autoApproveTodoUpdates改成false。如果你在图形界面操作取消勾选 “Auto Approve Todo Updates”。注意这个开关只影响待办清单更新不影响其他工具的审批。5.7 状态回滚验证拒绝审批后的行为症状你在审批弹窗里点了“Reject”但不确定清单状态有没有回滚。验证步骤点“Reject”后观察聊天记录里的工具块。清单应该保持上一次批准的状态被拒绝的更新不会应用。比如上一次是“1/3 完成”你拒绝了一次把第二条改成in_progress的更新清单应该还是“1/3 完成”第二条仍是pending。然后 Roo 会重新规划可能再次调用update_todo_list提交新的更新。如果状态没回滚检查是否有多个 Roo 任务并行导致状态串了。6. 把待办清单用进日常编码流待办清单最适合的场景是重构、迁移、批量修改这类步骤明确但容易漏的任务。我的习惯是任务开始前先让 Roo 创建清单审批时快速扫一眼步骤是否合理不合理就当场编辑。执行过程中如果发现新步骤直接在审批弹窗里加一条不用打断 Roo。对于长工作流可以把autoApproveTodoUpdates设为true减少中断但前提是你信任 Roo 的拆解能力。如果任务涉及删文件、改配置这种高风险操作还是保持false每次审批都看一眼。TaoToken 的 API 在 Roo Code 里配置一次就能长期用模型选 Claude Sonnet 系列对工具调用的支持比较稳。如果你还没配好先去 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite拿 Key再按第 2 章的 settings 片段填进去。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite里面有各客户端的详细配置说明。最后提醒一个细节待办清单的编辑是暂存的你改完不会立即生效要等 Roo 下一次update_todo_list调用。所以如果你改完发现没变化别急等 Roo 完成当前步骤后自然会应用。这个设计虽然有点反直觉但避免了你在 AI 执行中途改清单导致状态错乱。
阅读完成 · 觉得有帮助?