Agent 与子任务
Agent 是”带着特定工具集与权限的 AI 角色”。同一个模型,配不同 Agent 会表现出不同的行为边界。
内置 Agent
| Agent | 定位 |
|---|---|
build | 默认 Agent。可读写文件、执行命令,用于完成实际开发任务 |
plan | 只做调查与方案设计,不修改文件,产出计划后交由 build 执行 |
general | 通用对话与问答 |
explore | 只读探索,用于快速理解陌生代码库 |
title | 内部使用,为会话生成标题 |
summary | 内部使用,压缩与总结上下文 |
compaction | 内部使用,上下文压缩 |
title / summary / compaction 由系统自动调用,通常不需要手动选择。
切换 Agent
- TUI:
<leader>a打开 Agent 列表;tab在已用 Agent 间循环 - 桌面端:
mod+.与shift+mod+.切换 - 配置:设置
default_agent
{
"default_agent": "build"
}
default_agent填了不存在的名字时会静默回退到build,不会报错。
自定义 Agent
在配置中覆写内置 Agent,或新增自定义 Agent:
{
"agent": {
"build": {
"model": "anthropic/claude-sonnet-4",
"permission": {
"bash": "ask"
}
},
"reviewer": {
"description": "只读代码审查",
"model": "deepseek/deepseek-chat",
"prompt": "你是一名严格的代码审查者,只报告问题,不修改代码。",
"permission": {
"edit": "deny",
"bash": "deny",
"read": "allow"
}
}
}
}
常用字段:
| 字段 | 说明 |
|---|---|
model | 该 Agent 使用的模型,覆盖全局 model |
prompt | 追加的系统提示词 |
permission | 该 Agent 的权限规则,会与全局权限合并 |
description | 描述,会展示在 Agent 列表与子任务可选清单中 |
tools | 工具开关 |
只有 mode 为非 primary 的 Agent 才会作为子任务类型被主 Agent 调用(task 工具)。
命令行管理:
duoduocode agent list # 列出所有 Agent
duoduocode agent create # 交互式创建自定义 Agent
权限继承
Agent 的权限由三部分合并而成,内置约束优先级最高:
内置默认权限 → 用户在 config 中的 permission → Agent 内置强制约束
这意味着某些结构性限制无法通过配置绕开。例如 explore 作为只读 Agent,其 "*": "deny" 是结构约束——即使你在全局配置里写了 {"permission": {"*": "allow"}},explore 仍然不能写文件。
详见权限。
并行多智能体分发
开启后,复杂需求会在主循环开始前被自动拆成多个子任务并发执行,结果汇总回主循环。
- 开关位于设置面板的「并行多智能体分发」
- 底层为 Rust 侧
LoopConfig.parallel_dispatch,默认关闭 - 并发上限由
max_concurrent_subagents控制(默认 3)
冲突处理
子任务按文件级并行,安全由三层机制保证:
- 冲突分组 —— 用并查集把改动文件有交集的任务归为一组
- 组内串行、组间并行 —— 同组任务依次执行,不同组同时执行
- 黑板协调 —— 子 Agent 通过
blackboard_*系列工具交换进度与草稿
失败的子任务不会中断其他任务,最终结果会连同失败信息一起汇总。
何时开启
- 适合:多个相互独立的文件改动、大范围重构、批量修改
- 不适合:改动高度耦合、需要严格顺序的迁移任务