☰
Roo Code任务待办清单功能详解:update_todo_list与审批机制实战配置
2026/10/12 20:30:42 网站建设 项目流程

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_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_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 Plan(https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite),它针对编码场景做了额度优化。模型对话入口在 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite,API Keys 管理在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite。

配置完成后,在 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为true,Roo 应该先回复一段规划文字,然后调用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_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite)拿 Key,再按第 2 章的 settings 片段填进去。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,里面有各客户端的详细配置说明。

最后提醒一个细节:待办清单的编辑是暂存的,你改完不会立即生效,要等 Roo 下一次update_todo_list调用。所以如果你改完发现没变化,别急,等 Roo 完成当前步骤后自然会应用。这个设计虽然有点反直觉,但避免了你在 AI 执行中途改清单导致状态错乱。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询