diff --git a/apps/docs/src/sections/ai/ExternalAgents.tsx b/apps/docs/src/sections/ai/ExternalAgents.tsx index 55b9423e5..4d8b77662 100644 --- a/apps/docs/src/sections/ai/ExternalAgents.tsx +++ b/apps/docs/src/sections/ai/ExternalAgents.tsx @@ -68,7 +68,7 @@ export default function ExternalAgents() {
  1. Install an ACP-compatible agent. Huabu automatically - detects these nine ACP-capable agent commands or adapters after + detects these ten ACP-capable agent commands or adapters after installation:{' '} GitHub Copilot @@ -97,6 +97,10 @@ export default function ExternalAgents() { Cursor + ,{' '} + + CodeBuddy + , and{' '} Hermes Agent diff --git a/apps/server/src/modules/agent/acp/known-agents.test.ts b/apps/server/src/modules/agent/acp/known-agents.test.ts index 06b5a29f4..40023b146 100644 --- a/apps/server/src/modules/agent/acp/known-agents.test.ts +++ b/apps/server/src/modules/agent/acp/known-agents.test.ts @@ -63,6 +63,12 @@ describe('KNOWN_CLIS', () => { binary: 'agent', acpArgs: ['acp'], }, + { + id: 'codebuddy', + displayName: 'CodeBuddy', + binary: 'codebuddy', + acpArgs: ['--acp'], + }, { id: 'hermes', displayName: 'Hermes Agent', @@ -110,6 +116,7 @@ describe('KNOWN_CLIS', () => { args: ['--yolo'], position: 'before-acp', }, + codebuddy: null, hermes: null, }); diff --git a/apps/server/src/modules/agent/acp/known-agents.ts b/apps/server/src/modules/agent/acp/known-agents.ts index 539b3eb2b..1e80bd787 100644 --- a/apps/server/src/modules/agent/acp/known-agents.ts +++ b/apps/server/src/modules/agent/acp/known-agents.ts @@ -157,6 +157,22 @@ export const KNOWN_CLIS: readonly KnownCli[] = [ }, installHint: 'Install from https://cursor.com/docs/cli/installation', }, + { + id: 'codebuddy', + displayName: 'CodeBuddy', + // Tencent Cloud's CodeBuddy Code CLI is built on the same + // architecture as Claude Code (same slash-command surface: /agents, + // /bashes, /compact, …) and speaks ACP natively via `--acp`, so no + // separate adapter binary is needed. + binary: 'codebuddy', + acpArgs: ['--acp'], + // Like Claude Code (which it is architecturally derived from), + // CodeBuddy delegates tool permission decisions to ACP requests + // rather than exposing a documented blanket auto-approve flag for + // `--acp` mode, so there is no official argument-based recipe. + autoApprove: null, + installHint: 'npm install -g @tencent-ai/codebuddy-code', + }, { id: 'hermes', displayName: 'Hermes Agent', diff --git a/docs/architecture/agent-architecture.md b/docs/architecture/agent-architecture.md index 8f65649ff..a5bacb872 100644 --- a/docs/architecture/agent-architecture.md +++ b/docs/architecture/agent-architecture.md @@ -124,7 +124,7 @@ Chat context uses an **envelope-first submission boundary** (see [agent-context. ## 6. External agents (ACP) -[acp/](../../apps/server/src/modules/agent/acp) is the integration layer for external agents. Its trusted built-in catalogue detects and launches GitHub Copilot, Claude Agent, Gemini, Codex, Qwen Code, Kimi Code CLI, OpenCode, Cursor, and Hermes Agent; Manual setup remains available for other ACP-compatible agents and advanced launch commands. Presets with official argument-based full-auto modes expose an auto-approve toggle whose structured recipe controls both the arguments and whether global options precede the ACP subcommand; agents that require environment variables, configuration, or ACP session modes do not expose this launch-command toggle. +[acp/](../../apps/server/src/modules/agent/acp) is the integration layer for external agents. Its trusted built-in catalogue detects and launches GitHub Copilot, Claude Agent, Gemini, Codex, Qwen Code, Kimi Code CLI, OpenCode, Cursor, CodeBuddy, and Hermes Agent; Manual setup remains available for other ACP-compatible agents and advanced launch commands. Presets with official argument-based full-auto modes expose an auto-approve toggle whose structured recipe controls both the arguments and whether global options precede the ACP subcommand; agents that require environment variables, configuration, or ACP session modes do not expose this launch-command toggle. - [service.ts](../../apps/server/src/modules/agent/acp/service.ts) `runAcpAgent()` is the external counterpart of `runAgent`: it performs host rendering, constructs the submission, snapshots a unified Agent Profile for a new thread, and drives one Agenetes turn. A fixed Agent Node may supply bounded launch overrides: `workingDirPath` replaces the effective workload cwd and the cwd embedded in command or manifest recipes, while `additionalInitialPreamble` follows the mandatory Huabu external-agent preamble. Agenetes keeps an already persisted WorkloadSpec authoritative, so later calls cannot mutate a realized thread's launch identity. - [preprocessor.ts](../../apps/server/src/modules/agent/acp/preprocessor.ts) renders the shared `ChatEnvelope` into canonical `AgentInput[]`. Slash commands become one exclusive `AgentCommandInput`; selection and attachments ride its `context`.