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() {
-
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`.