ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

cc-haha 多 Agent 使用指南:内置子代理、并行编排、Agent Teams 与自定义 Agent 深度解析

cc-haha 多 Agent 使用指南:内置子代理、并行编排、Agent Teams 与自定义 Agent 深度解析 人工智能AI 应用桌面应用代码智能体MCP Clients【免费下载链接】cc-hahaLocal-first cross-platform desktop workspace for Claude Code / agents: multi-agent, Git worktrees, code diffs, skill marketplace, multi-model, Computer Use, task-aware desktop pets, with WeChat, Feishu, DingTalk, Telegram, WhatsApp and H5 access.项目地址https://gitcode.com/gh_mirrors/cl/cc-haha点击查看免费下载cc-hahaClaude Code 开源镜像仓库内置了一套完整的多 Agent 任务编排框架让主 Agent 可以派生出多个专门化的子 Agent 并行执行任务、汇总结果并通过 Agent Teams 实现消息驱动的多 Agent 协作。本文以 docs/en/internals/agent.md 为主体结合仓库源码src/tools/AgentTool/目录深入讲解六种内置 Agent 的工具池与模型策略、Agent 工具的参数语义、后台任务生命周期、团队协作协议、自定义 Agent 的 Markdown 定义格式与同名优先级规则帮助你直接上手并行化拆分复杂任务。什么是多 Agent 系统cc-haha 的多 Agent 系统是一个智能任务编排框架主 Agentprimary agent负责拆解目标将大任务切分为多个专门化的子任务派生出多个子 Agent 独立执行再聚合各子 Agent 的结果返回给用户。核心哲学只有一句话把大任务拆成专门化的小任务并行执行以并行换效率。文档给出了几类典型场景的前后对比场景传统做法多 Agent 做法调研 5 个模块的架构逐个探索5 个 Explore Agent 并行扫描实现 测试 文档串行完成团队成员各负责一部分代码评审单线程、逐文件多个评审 Agent 并行排查复杂 Bug一次验证一个假设多个调试 Agent 并行验证子 Agent 拥有独立的上下文窗口只把结论与证据回传给主会话。这也意味着派生子 Agent 本身有启动成本、上下文传输成本和结果整合成本因此简单搜索、位置明确的少量修改、后续步骤强依赖其结果的短任务应该由主 Agent 直接处理——这一点在 docs/en/desktop/agents.md 中有明确建议。六种内置 Agentcc-haha 随附 6 种专门化的内置 Agent每种都有明确的工具池与适用场景。仓库中这些定义集中在 src/tools/AgentTool/built-in/ 下统一由 src/tools/AgentTool/builtInAgents.ts 收集导出。general-purpose通用 Agent适用场景复杂的多步调研、代码搜索、需要完整工具权限的任务。Agent({ description: Research auth module, prompt: Analyze all files under src/auth/ for the authentication flow..., subagent_type: general-purpose })工具池全部工具*模型继承父级特性全能型选手——拿不准选哪种 Agent 时就用它Explore探索 Agent适用场景快速搜索文件、定位代码模式、回答代码库结构类问题。Agent({ description: Search API endpoints, prompt: Find all REST API endpoint definitions..., subagent_type: Explore })工具池除 Agent、ExitPlanMode、Edit、Write、NotebookEdit 之外的全部工具。Bash 在允许集合内——它无法改文件但可以执行任何只读命令模型Haiku快、低成本特性不能修改文件、速度快、专为调研设计从源码看Explore 的定义严格体现了这一点src/tools/AgentTool/built-in/exploreAgent.ts 中disallowedTools显式排除了Agent、ExitPlanMode、Edit、Write、NotebookEdit其系统提示词要求严格只读禁止创建/修改/删除文件、禁止重定向写入、只允许ls/git status/git log/git diff/find/grep/cat/head/tail等只读 Bash 命令。模型方面外部用户默认haiku而内部ant构建默认inherit以复用主 Agent 模型。Plan规划 Agent适用场景设计实现方案、分析架构取舍、生成分步计划。Agent({ description: Plan refactoring, prompt: Design a plan to split the monolith into microservices..., subagent_type: Plan })工具池与 Explore 相同的禁用列表模型继承父级需要较强推理特性输出结构化计划包含关键文件与依赖分析verification验证 Agent适用场景独立验证实现是否正确、运行测试、做边界检查。Agent({ description: Verify login feature, prompt: Verify the newly implemented login feature works correctly..., subagent_type: verification })工具池与 Explore 相同其系统提示额外允许在tmp下写一次性测试脚本模型继承父级特性始终后台运行输出 PASS/FAIL/PARTIAL 判定以红色徽章展示claude-code-guide指南 Agent适用场景回答关于 Claude Code、Agent SDK 或 Claude API 本身的问题。Agent({ description: Query Claude API usage, prompt: How do I use the tool_use feature..., subagent_type: claude-code-guide })工具池Glob、Grep、Read、WebFetch、WebSearch内部构建会用 Bash 替代 Glob/Grep模型Haiku特性专注于文档类查询使用dontAsk权限模式statusline-setup状态栏配置 Agent适用场景配置 Claude Code 状态栏显示。工具池仅 Read Edit模型Sonnet特性高度专门化职责范围极窄内置 Agent 类型对比Agent访问权限工具池模型用途general-purpose读写全部继承通用任务Explore不能编辑文件全部工具减去编辑类Haiku快速探索Plan不能编辑文件与 Explore 相同继承架构规划verification不能改项目文件与 Explore 相同继承独立验证claude-code-guide只读搜索 网络Haiku文档指南statusline-setup读写Read EditSonnet状态栏配置值得注意的是内置 Agent 集合并非固定不变src/tools/AgentTool/builtInAgents.ts 中Explore/Plan 与 verification 受特性开关控制claude-code-guide 会排除在 SDK entrypoint 之外且非交互模式下可通过CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS环境变量关闭全部内置 Agent。如何派生子 AgentAgent 工具参数参数类型必填说明descriptionstring是3-5 个词的任务摘要promptstring是完整任务描述subagent_typestring否Agent 类型见上文表格modelstring否模型覆盖sonnet/opus/haikurun_in_backgroundboolean否是否后台运行namestring否给 Agent 命名以便通过 SendMessage 寻址team_namestring否加入指定团队modestring否权限模式isolationstring否隔离模式worktree前台同步执行默认最简单的用法——子 Agent 完成后返回结果Agent({ description: Analyze error logs, prompt: Read the latest error logs under logs/ and summarize common error patterns })主 Agent 会等待子 Agent 结束后接收结果再继续工作。后台异步执行适合耗时长、主 Agent 可以同时做其他工作的任务Agent({ description: Full code review, prompt: Review all TypeScript files under src/ for code quality..., run_in_background: true })Agent 立即返回async_launched状态和 taskId主 Agent 无需等待继续干活完成后自动投递task-notification通知通知包含任务状态、输出文件路径与结果摘要并行派生多个 Agent在一条消息中派生多个相互独立的 Agent即可获得真正的并行度// 同时启动 3 个探索 Agent Agent({ description: Explore frontend, prompt: ..., subagent_type: Explore, run_in_background: true }) Agent({ description: Explore backend, prompt: ..., subagent_type: Explore, run_in_background: true }) Agent({ description: Explore database, prompt: ..., subagent_type: Explore, run_in_background: true })Worktree 隔离让 Agent 在独立的 git worktree 中工作不影响主工作区Agent({ description: Experimental refactor, prompt: Try refactoring module X into..., isolation: worktree })自动创建 git worktree在独立分支上Agent 可在隔离环境中自由修改文件若有改动完成时返回 worktree 路径与分支名若无改动自动清理后台任务管理任务状态后台 Agent 有四种状态状态说明running执行中completed成功完成failed执行失败killed手动终止进度追踪后台 Agent 的进度实时更新Token 用量输入/输出 token 计数工具调用已调用的工具数量最近活动最近 5 次工具调用的描述环形缓冲区最后活动时间用于检测卡死任务完成通知后台 Agent 结束时主 Agent 会收到 XML 格式的通知task-notification task-idabc123/task-id statuscompleted/status summaryAgent Explore frontend completed/summary output-file~/.claude/temp/.../tasks/abc123.output/output-file /task-notification自动后台化启用tengu_auto_background_agents特性开关后运行超过120 秒的前台 Agent 会被自动转移到后台执行释放主 Agent 继续工作。Agent Teams —— 多 Agent 协作Agent Teams 是更高级的多 Agent 协作模式多个 Agent 以团队形式工作通过基于消息的通信协调任务。仓库中团队相关的实现位于 src/commands/team.ts 及对应的 src/commands/team.test.ts服务端还有src/server/__tests__/teams.test.ts覆盖 HTTP 侧行为。创建团队TeamCreate({ team_name: feature-team, description: Develop user authentication feature })创建团队后生成团队配置文件~/.claude/teams/{team_name}/config.json创建共享任务目录~/.claude/tasks/{team_name}/当前 Agent 自动成为团队负责人Team Lead添加团队成员在 Agent 工具中指定name和team_name即可派生队友Agent({ description: Frontend development, prompt: Implement the login page React components..., name: frontend-dev, team_name: feature-team }) Agent({ description: Backend development, prompt: Implement the authentication API endpoints..., name: backend-dev, team_name: feature-team })成员间通信使用 SendMessage 工具发送消息// 发送给特定队友 SendMessage({ to: frontend-dev, message: API interface is ready, the format is..., summary: Notify API interface format }) // 广播给所有队友 SendMessage({ to: *, message: Everyone pause, requirements have changed..., summary: Broadcast requirements change })关闭协调任务完成后由团队负责人请求队友关闭// 1. 发送关闭请求 SendMessage({ to: frontend-dev, message: { type: shutdown_request, reason: Task completed } }) // 2. 队友回复同意 SendMessage({ to: team-lead, message: { type: shutdown_response, request_id: ..., approve: true } }) // 3. 所有队友关闭后清理团队 TeamDelete()执行后端Agent Teams 支持两种执行后端后端说明适用场景in-process在同一进程中运行通过 AsyncLocalStorage 隔离默认模式轻量高效tmux在独立 tmux pane 中运行需要独立终端视图时iTerm2在独立 iTerm2 窗口中运行macOS iTerm2 用户自定义 Agent除内置 Agent 外你还可以创建自己的专门化 Agent。桌面端管理与作用域在桌面应用中打开Settings → Agents。桌面端与 CLI 使用同一套 Agent 定义文件配置不会重复存到数据库或localStorage作用域单一事实来源用途用户级~/.claude/agents/*.md每个项目都可用项目级project-directory/.claude/agents/*.md仅当前项目可用同名时覆盖用户级 Agent用户级和项目级 Agent 都可以在桌面端创建、编辑、删除保存时直接写入对应的 Markdown 文件。其他来源内置 Agent、插件、托管策略、CLI 参数也会出现在列表中但由于桌面端不拥有它们的源文件而只读。唯一例外是内置 Agent可以单独覆盖其 model 与 reasoning effort但覆盖值存放在 settings.json 中而非源文件source保持built-in详见下文覆盖内置 Agent 的模型与 Effort。当桌面端连接到活跃会话时创建、编辑或删除 Agent 会就地热重载该会话下一次派生立即使用新定义。如果运行时不可用或重载失败文件仍会保存桌面端显示非阻塞警告已保存的定义会在下次启动时加载。桌面端 Agent 管理的 HTTP 后端对应仓库中的 src/server/api/agents.ts 与 src/server/services/settingsService.ts测试见 src/server/tests/agents-api.test.ts。定义格式在用户级或项目级agents目录下创建.md文件--- name: code-reviewer description: Professional code review agent tools: - Read - Grep - Glob - Bash model: sonnet effort: high permissionMode: dontAsk maxTurns: 10 --- You are a professional code reviewer. Check the following aspects: 1. Code quality and readability 2. Potential security vulnerabilities 3. Performance issues 4. Adherence to best practices可配置字段字段类型说明namestringAgent 类型名descriptionstring何时使用该 Agent 的描述toolsstring[]允许的工具列表[*]表示全部disallowedToolsstring[]禁用的工具列表modelstring使用的模型fable/opus/sonnet/haiku、完整模型 ID 或inheriteffortstring推理强度low/medium/high/xhigh/max受模型能力约束permissionModestring权限模式maxTurnsnumber最大对话轮数mcpServersobject[]必需的 MCP 服务器hooksobjectAgent 专属 hookscolorstringAgent 的显示颜色skillsstring[]可用技能memorystring记忆作用域user/project/localisolationstring隔离模式worktree/remotebackgroundboolean是否默认后台运行模型、推理强度与思考要继承当前会话最清晰的写法是省略对应字段省略model继承主会话模型省略effort继承当前会话强度。model: inherit是模型字段的等价显式写法effort没有inherit值。模型解析优先级从高到低CLAUDE_CODE_SUBAGENT_MODEL中的具体模型inherit不会锁定模型本次Agent({ ..., model: ... })调用传入的模型Agent Markdown frontmatter 中的modelsettings.json 中builtInAgentOverrides的model仅内置 Agent主会话模型推理强度解析优先级从高到低CLAUDE_CODE_EFFORT_LEVELAgent Markdown frontmatter 中的effortsettings.json 中builtInAgentOverrides的effort仅内置 Agent当前会话强度模型默认值覆盖内置 Agent 的模型与 Effort内置 Agent 没有 Markdown 文件因此通过 settings.json 中的builtInAgentOverrides调整其model和effort。键是派生时使用的 agentType区分大小写{ builtInAgentOverrides: { Explore: { model: sonnet, effort: low }, general-purpose: { effort: high } } }有几条容易踩坑的规则只有这两个字段可写。系统提示词、工具范围、颜色仍来自内置定义覆盖不会改变source——所以内置 Agent 保留其内置工具特权。清除覆盖 删除字段而不是写inherit。每个内置 Agent 的默认值不同Explore默认haiku、Plan默认inherit、general-purpose省略model所以model: inherit是跟随主会话的正常值与恢复默认是两回事。未知的 agentType 会被忽略但从不清理。内置集合随特性开关与 entrypoint 变化自动清理会在开关翻转时毁掉有效配置。当托管的strictPluginOnlyCustomization策略包含agents时用户级与项目级覆盖会在加载时被忽略只有托管源生效。与 Agent Markdown 文件一样手工编辑 settings.json 不影响正在运行的会话。桌面端保存时会触发会话重载手工编辑文件则需要重启会话或执行/reload-plugins。源码层面覆盖的解析与合并在 src/tools/AgentTool/builtInAgentOverrides.ts 中实现resolveBuiltInAgentOverrides按启用的 settings 源从低到高遍历记录每个字段最终由哪个源提供字段级 source 归属驱动桌面端控件的可编辑状态并在加载时执行strictPluginOnlyCustomization过滤——这样手工编辑的 settings.json 无法绕过策略。applyBuiltInAgentOverrides则在不改变未覆盖 Agent 对象引用的前提下resumeAgent等调用方持有模块常量引用仅复制真正携带覆盖的条目并通过展开保留getSystemPrompt的函数元数serializeActiveAgent依赖getSystemPrompt.length 0判断是否可无参调用。相关测试见 src/tools/AgentTool/builtInAgentOverrides.test.ts 与 src/utils/settings/tests/builtInAgentOverrides.schema.test.ts。关于 effort 与思考模式还有几点补充Agent工具没有按调用设置的effort参数只能在 Agent 定义或会话层面设置。low/medium/high/xhigh/max的可用性取决于解析出的模型与供应商能力Claude 模型会回退到支持的较低级别其他供应商通过其模型目录归一化不支持 effort 的模型不应用该字段。整数形式的effort值仅保留用于兼容现有 SDK/JSON 与内部配置不是推荐的官方 Agent 配置。桌面端 Agent 管理器只写上述五个命名级别。子 Agent 通常继承主会话的扩展思考extended-thinking设置但解析出的模型要求优先例如 Fable 5 会归一化为自适应思考。不支持按 Agent 设置thinking和thinkingBudgetfrontmattereffort也不是固定的思考 token 预算。同名来源优先级当多个来源定义了同名的 Agent 时cc-haha 按以下顺序选择生效定义从高到低策略 Agentpolicy——组织托管的策略CLI 参数 Agentflag——通过--agents注册项目级 Agentproject——project-directory/.claude/agents/用户级 Agentuser——~/.claude/agents/插件 Agentplugin——由插件提供内置 Agentbuilt-in——系统预定义该优先级在源码中由 src/tools/AgentTool/loadAgentsDir.ts 的getActiveAgentsFromList实现按built-in → plugin → user → project → flag → managed的顺序分组后面的来源通过Map.set覆盖前面的同名条目最终 Map 中保留的就是最高优先级定义同一来源内部则保留最早加载的定义项目级 Markdown 按 cwd 从近到远加载保留第一个。桌面端仍会显示被覆盖的定义及其来源但派生时使用最高优先级的生效定义。权限模式每个 Agent 可以配置不同的权限模式模式说明default正常的权限请求需用户确认plan所有操作都需要明确批准acceptEdits文件编辑自动批准其他操作需要确认bypassPermissions跳过所有权限检查dontAsk拒绝所有未预先批准的操作autoAI 驱动的权限分类仅 Anthropic 内部bubble权限提示冒泡到父 Agent 的终端快速参考操作方法派生子 AgentAgent({ prompt: ..., subagent_type: Explore })后台运行Agent({ ..., run_in_background: true })并行派生在一条消息中发送多个 Agent 调用Worktree 隔离Agent({ ..., isolation: worktree })创建团队TeamCreate({ team_name: ... })发送消息SendMessage({ to: name, message: ... })广播消息SendMessage({ to: *, message: ... })请求关闭SendMessage({ to: name, message: { type: shutdown_request } })删除团队TeamDelete()管理自定义 Agent桌面端Settings → Agents或直接编辑~/.claude/agents/*.md/project-directory/.claude/agents/*.md指定模型Agent({ ..., model: haiku })指定推理强度在 Agent Markdown frontmatter 中设置effort: high给 Agent 命名Agent({ ..., name: researcher })延伸阅读桌面端视角的派生子代理指南何时委派、内置 Agent 一览、创建流程docs/en/desktop/agents.mdAgent 内部实现细节定义加载、记忆、恢复等docs/en/internals/agent-internals.mdAgent 框架核心机制src/tools/AgentTool/下的AgentTool.tsx、runAgent.ts、forkSubagent.ts、resumeAgent.ts等实现文件赞分享人工智能AI 应用桌面应用代码智能体MCP Clients【免费下载链接】cc-hahaLocal-first cross-platform desktop workspace for Claude Code / agents: multi-agent, Git worktrees, code diffs, skill marketplace, multi-model, Computer Use, task-aware desktop pets, with WeChat, Feishu, DingTalk, Telegram, WhatsApp and H5 access.项目地址https://gitcode.com/gh_mirrors/cl/cc-haha点击查看免费下载相关推荐cc-haha 桌面端子 Agent 完整指南任务委派、内置 Agent 与自定义配置cc haha 桌面端子 Agent 完整指南任务委派、内置 Agent 与自定义配置 子 AgentSubagent是 cc haha 桌面端多 Age人工智能AI 应用桌面应用代码智能体MCP Clientscc-haha 桌面端子 Agent 与任务拆分完全指南内置 Agent、来源优先级与自定义配置cc haha 桌面端子 Agent 与任务拆分完全指南内置 Agent、来源优先级与自定义配置 子 AgentSubagent是 Claude Code人工智能AI 应用桌面应用代码智能体MCP Clients使用 GitHub Copilot SDK 定义自定义 Agent 与子代理编排使用 GitHub Copilot SDK 定义自定义 Agent 与子代理编排 本指南讲解 GitHub Copilot SDK本仓库 co/copilot人工智能AI AgentAgent 框架工具调用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表