内置工具
工具是 AI 与你的项目交互的唯一途径。DuoDuoCode 内置下列工具,模型只能看到其中已启用的部分。
文件读写
| 工具 | 说明 |
|---|---|
read | 读取文件内容 |
write | 写入整个文件 |
edit | 精确字符串替换,适合局部修改 |
apply_patch | 补丁式修改 |
edit/write/apply_patch三者互斥:DuoDuoCode 按当前模型自动选择——GPT 系列(不含gpt-4与oss)使用apply_patch,其余模型使用edit与write,同一时刻只有一种改法暴露给模型。
搜索
| 工具 | 说明 |
|---|---|
grep | 基于 ripgrep 的文本搜索,适合日志、配置、字符串等非代码内容 |
glob | 按模式匹配文件名 |
symbol_search | 单文件内的符号查询,精确到定义位置 |
graph_query | 知识图谱查询,用于函数/类定义、调用链、依赖关系 |
search_modifications | 查询本次会话造成了哪些文件改动 |
知识图谱就绪后,搜索行为会自动改变:grep 与 bash 的工具说明里会追加提示,要求模型用 graph_query 做代码结构搜索,而 grep 只用于文本。这让 AI 不再靠关键词瞎猜代码结构。
执行
| 工具 | 说明 |
|---|---|
bash | 执行 shell 命令 |
webfetch | 抓取网页内容 |
bash 与 webfetch 是最需要关注权限的两个工具,建议保持 ask。
任务与协作
| 工具 | 说明 |
|---|---|
task | 派生子任务,交给另一个 Agent 执行 |
todowrite | 维护待办清单,让长任务进度可见 |
skill | 加载技能,注入领域专用的指令与工作流 |
question | 向用户提问并等待回答 |
question 仅在桌面端与 CLI 中启用;在服务端模式下默认关闭,可用环境变量 DUODUO_ENABLE_QUESTION_TOOL 强制开启。
记忆与知识
| 工具 | 说明 |
|---|---|
recall_memory | 跨会话的长期记忆检索 |
详见记忆。
阶段推进
proceed_to_investigate、proceed_to_plan、proceed_to_execute、proceed_to_verify——供 Agent 在调查、规划、执行、验证四个阶段之间显式推进,让长任务的状态可追踪。
多智能体协作
blackboard_read、blackboard_write、blackboard_find、blackboard_submit_draft、blackboard_submit_stable、blackboard_annotate——子 Agent 之间交换进度与草稿的黑板机制,仅在开启并行分发后使用。详见Agent 与子任务。
按需启用
| 工具 | 启用条件 |
|---|---|
lsp | 设置环境变量 DUODUO_EXPERIMENTAL_LSP_TOOL |
plan_exit | 设置 DUODUO_EXPERIMENTAL_PLAN_MODE 且运行在 CLI |
graph_query | 知识图谱索引就绪后自动出现 |
invalid | 内部占位,模型不应调用 |
关闭单个工具
用配置中的 tools 字段:
{
"tools": {
"webfetch": false
}
}
更彻底的做法是用权限 deny——被拒绝的工具不会出现在给模型的清单里:
{
"permission": {
"webfetch": "deny"
}
}
自定义工具
在配置目录下创建 tool/ 或 tools/ 目录,放入 .js 或 .ts 文件:
~/.config/duoduocode/
tool/
deploy.ts # 工具名前缀为 deploy
文件导出多个工具时,工具名为 <文件名>_<导出名>;若导出名为 default,则直接用文件名。
自定义工具会被追加到内置工具之后,参与同样的权限校验。