Skip to content

Commit 2e9aaf4

Browse files
feat: ACP 协议版本 remote control (#293)
* fix: 添加 usage 字段缺失时的防御性防护 第三方 API(如智谱 GLM)在某些流式响应中不返回 usage 字段, 导致 usage.input_tokens 访问 undefined 崩溃并连锁影响后续所有请求。 - claude.ts: content_block_stop 创建消息时 fallback 到 EMPTY_USAGE - LocalAgentTask.tsx: usage 为 undefined 时提前返回 - tokens.ts: getTokenCountFromUsage 加 null guard 和 ?? 0 - cost-tracker.ts: input_tokens/output_tokens 加 ?? 0 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: ACP Plan 展示 — 支持 session/update plan 类型的可视化 补全 PlanUpdate 类型定义(PlanEntry/Priority/Status),新建 PlanView 组件 渲染进度条、状态图标和优先级标签,在 ChatInterface 中处理 plan 更新逻辑。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: 穷鬼模式下跳过 verification agent 以节省 token Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * test: 补充 RCS 后端 + 前端测试覆盖 (+116 tests) 后端新增 3 个测试文件 (70 tests): - automationState: normalize/snapshot/equals 纯函数 - client-payload: toClientPayload 协议转换 - transport-normalize: normalizePayload + extractContent 前端新增 2 个测试文件 (46 tests): - utils: formatTime/statusClass/truncate/extractEventText 等 - api-client: getUuid/setUuid/api GET/POST 错误处理 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: RCS ACP 页面添加权限模式选择器 + 权限响应修复 - 新增权限模式选择器 UI(6种模式:默认/自动接受编辑/跳过权限/规划/不询问/自动判断) - 权限模式通过 ACP _meta 从 web → acp-link → agent 全链路传递 - 修复 PermissionPanel 点击"允许"发送 cancelled 而非 selected 的 bug - 权限模式和模型选择持久化到 localStorage - acp-link 直接连接路径同步支持 permissionMode 透传 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: RCS Web UI 重构 + QR 修复 + ACP 扫描自动跳转 - RCS Web UI 组件全面重构: Dialog 迁移 Radix UI, lazy loading, 主题系统改进, 组件样式优化 - IdentityPanel QR 码显示修复: requestAnimationFrame 延迟绘制 解决 Radix Dialog Portal 挂载时序问题 - ACP QR 扫描自动跳转: IdentityPanel 扫描 ACP 格式 { url, token } 后存储 sessionStorage 并跳转 /code/?acp=1 - 新增 ACPDirectView 组件: ACP 直连视图, 用 ACPClient 连接并 渲染 ACPMain 聊天界面 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: ACP 权限管道改进 — 模式同步 + bypass 检测 + 统一权限流水线 - agent.ts: applySessionMode 同步 appState.toolPermissionContext.mode - agent.ts: bypassPermissions 可用性检测 (非 root 或 sandbox 环境) - permissions.ts: createAcpCanUseTool 接入 hasPermissionsToUseTool 统一权限流水线, 替代原来分散的处理逻辑 - permissions.ts: 支持 onModeChange 回调, 模式变更时实时同步 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: acp-link 支持 permissionMode 默认值传递给 agent 客户端 (Zed/VS Code 等) 的 new_session 不一定携带 permissionMode, 导致 agent 收到 _meta: undefined, permission 回退到 default。 修复: handleNewSession 使用 fallback 链: 客户端传值 > config.permissionMode > ACP_PERMISSION_MODE 环境变量 使用: ACP_PERMISSION_MODE=auto acp-link claude Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: 更新文档及说明 * fix: 修复类型错误 * chore: 提交脚本 --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 34154ee commit 2e9aaf4

54 files changed

Lines changed: 2401 additions & 436 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.impeccable.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Impeccable Design Context
2+
3+
## Users
4+
5+
**Primary**: Technical teams and enterprises using AI-assisted coding in production workflows.
6+
- DevOps engineers managing remote agents via RCS dashboard
7+
- Development teams collaborating through shared sessions
8+
- Individual developers using terminal CLI daily
9+
10+
**Context**: Used during focused work sessions — debugging, code review, agent orchestration. Users are in "get things done" mode, not browsing. They value efficiency but also appreciate warmth and personality.
11+
12+
**Job to be done**: Make advanced AI coding tools accessible and controllable, especially features that normally require enterprise accounts or Anthropic OAuth.
13+
14+
## Brand Personality
15+
16+
**3 words**: Warm, Considered, Human
17+
18+
**Voice**: Like a knowledgeable colleague who's genuinely enthusiastic about the craft — not a corporate product manager. Community-first, open, slightly playful. Chinese developer community culture (贴吧/discord 温暖氛围).
19+
20+
**Emotional goals**: Confidence (this tool is solid), Warmth (this community is welcoming), Delight (small moments of personality make the difference).
21+
22+
**References**:
23+
- **Anthropic's own design language** — their clean, considered aesthetic with warm undertones. The terra cotta/burnt orange as a human accent. Lots of breathing room. Typography-forward.
24+
- **NOT**: Generic AI product (no ChatGPT blue, no gradient text, no "AI slop"). NOT corporate SaaS (no Salesforce-blue dashboards, no enterprise sterility).
25+
26+
**Anti-references**: Corporate enterprise dashboards, generic AI product pages, anything that looks like it was "designed by committee."
27+
28+
## Aesthetic Direction
29+
30+
**Theme**: Light + Dark dual mode (user/system preference switch)
31+
32+
**Tone**: Anthropomorphic warmth meets terminal precision. The brand orange (Claude's terra cotta) is the thread that ties everything together — it's the human element in a technical world.
33+
34+
**Typography**: Clean, considered, with good hierarchy. Terminal-native for CLI; modern web fonts for Web UI (RCS dashboard, docs). Favor readability and personality.
35+
36+
**Color**:
37+
- Primary: Claude orange family (`#D77757` / terra cotta)
38+
- Accent: Warm neutrals tinted toward orange
39+
- Semantic: Success/Error/Warning following Anthropic's established palette
40+
- Dark mode: Warm dark surfaces (not cold blue-black)
41+
42+
**Differentiation**: The CCB brand sits at the intersection of "serious tool" and "community project." It should feel like Anthropic's design principles applied to an open-source context — less corporate polish, more human craft. The mascot "Clawd" and the playful "踩踩背" naming hint at personality that the design should honor.
43+
44+
**Scope**: All Web UI — RCS control panel, documentation site, landing pages.
45+
46+
## Design Principles
47+
48+
1. **Considered over clever** — Every design choice should feel intentional, not trendy. If it doesn't serve the user, it doesn't ship.
49+
2. **Warmth through subtlety** — Orange tints on neutrals, breathing room in layouts, personality in copy. Not giant emoji or aggressive color.
50+
3. **Density with clarity** — Technical users need information density, but not chaos. Every pixel earns its place.
51+
4. **Community voice** — The design should feel like it was made by people who use it, not by a distant design team. Slightly rough edges are fine if they're honest.
52+
5. **Anthropic's shadow** — When in doubt, follow Anthropic's design instincts — the clean layouts, the generous spacing, the warm color temperature. Then add the community touch.
53+
54+
## Existing Design Assets
55+
56+
### Brand Colors (from theme system)
57+
- Claude Orange: `rgb(215,119,87)` / `#D77757`
58+
- Claude Blue: `rgb(87,105,247)` / `#5769F7`
59+
- Permission Blue: `rgb(87,105,247)`
60+
- Auto Accept Violet: `rgb(135,0,255)`
61+
- Plan Mode Teal: `rgb(0,102,102)`
62+
- Success: `rgb(78,186,101)`
63+
- Error: `rgb(255,107,128)`
64+
- Warning: `rgb(255,193,7)`
65+
66+
### Logo
67+
- CCB text + orange play button icon
68+
- Dark/Light SVG variants in `docs/logo/`
69+
- Favicon: Orange circle `#D97706` with white play triangle
70+
71+
### Mascot
72+
- "Clawd" — terminal-art character with multiple poses
73+
- Theme-aware coloring
74+
75+
### Theme System
76+
- 7 variants: dark, light, dark-ansi, light-ansi, dark-daltonized, light-daltonized, auto
77+
- 89+ semantic color tokens
78+
- Full documentation in `packages/@ant/ink/docs/04-theme-system.md`

CLAUDE.md

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ bun run build
4343
bun run build:vite
4444

4545
# Test
46-
bun test # run all tests (3066 tests / 205 files / 0 fail)
46+
bun test # run all tests (3175 tests / 207 files / 0 fail)
4747
bun test src/utils/__tests__/hash.test.ts # run single file
4848
bun test --coverage # with coverage report
4949

@@ -157,11 +157,12 @@ bun run docs:dev
157157
| `packages/@ant/model-provider/` | Model provider 抽象层 |
158158
| `packages/builtin-tools/` | 内置工具集(60 个 tool 实现,通过 `@claude-code-best/builtin-tools` 导出) |
159159
| `packages/agent-tools/` | Agent 工具集 |
160+
| `packages/acp-link/` | ACP 代理服务器(WebSocket → ACP agent 桥接) |
160161
| `packages/cc-knowledge/` | Claude Code 知识库(非 workspace 包) |
161162
| `packages/langfuse-dashboard/` | Langfuse 可观测性面板(非 workspace 包) |
162163
| `packages/mcp-client/` | MCP 客户端库 |
163164
| `packages/mcp-server/` | MCP 服务端库(非 workspace 包) |
164-
| `packages/remote-control-server/` | 自托管 Remote Control Server(Docker 部署,含 Web UI) |
165+
| `packages/remote-control-server/` | 自托管 Remote Control Server(Docker 部署,含 Web UI)— Web UI 已重构为 React + Vite + Radix UI,支持 ACP agent 接入 |
165166
| `packages/swarm/` | Swarm 解耦模块(非 workspace 包) |
166167
| `packages/shell/` | Shell 抽象(非 workspace 包) |
167168
| `packages/audio-capture-napi/` | 原生音频捕获(已恢复) |
@@ -173,10 +174,17 @@ bun run docs:dev
173174
### Bridge / Remote Control
174175

175176
- **`src/bridge/`** (~38 files) — Remote Control / Bridge 模式。feature-gated by `BRIDGE_MODE`。包含 bridge API、会话管理、JWT 认证、消息传输、权限回调等。Entry: `bridgeMain.ts`
176-
- **`packages/remote-control-server/`** — 自托管 RCS,支持 Docker 部署,含 Web UI 控制面板。通过 `bun run rcs` 启动。
177+
- **`packages/remote-control-server/`** — 自托管 RCS,支持 Docker 部署,含 Web UI 控制面板(React 19 + Vite + Radix UI)。支持 ACP agent 通过 acp-link 接入(ACP WebSocket handler、relay handler、SSE event stream)。通过 `bun run rcs` 启动。
177178
- CLI 快速路径: `claude remote-control` / `claude rc` / `claude bridge`
178179
- 详见 `docs/features/remote-control-self-hosting.md`
179180

181+
### ACP Protocol (Agent Client Protocol)
182+
183+
- **`src/services/acp/`** — ACP agent 实现,包含 `agent.ts`(AcpAgent 类)、`bridge.ts`(Claude Code ↔ ACP 桥接)、`permissions.ts`(权限处理)、`entry.ts`(入口)。
184+
- **`packages/acp-link/`** — ACP 代理服务器,将 WebSocket 客户端桥接到 ACP agent。提供 `acp-link` CLI 命令,支持自定义端口/HTTPS/认证/会话管理、RCS 集成(REST 注册 + WS identify 两步流程)、权限模式透传(fallback: 客户端传值 > config > `ACP_PERMISSION_MODE` 环境变量)。
185+
- ACP 权限管道改进:`createAcpCanUseTool` 统一权限流水线,`applySessionMode` 模式同步,`bypassPermissions` 可用性检测(非 root/sandbox 环境)。
186+
- ACP Plan 可视化已支持 `session/update plan` 类型的消息展示(PlanView 组件,含进度条/状态图标/优先级标签)。
187+
180188
### Daemon Mode
181189

182190
- **`src/daemon/`** — Daemon 模式(长驻 supervisor)。feature-gated by `DAEMON`。包含 `main.ts`(entry)和 `workerRegistry.ts`(worker 管理)。
@@ -209,6 +217,12 @@ Feature flags control which functionality is enabled at runtime. 代码中统一
209217

210218
支持 OpenAI、Gemini、Grok 三种第三方 API,通过 `/login` 命令配置,均采用流适配器模式转为 Anthropic 内部格式。详见各兼容层的 docs 文档。
211219

220+
### 穷鬼模式(Budget Mode)
221+
222+
- 通过 `/poor` 命令切换,持久化到 `settings.json`
223+
- 启用后跳过 `extract_memories``prompt_suggestion``verification_agent`,显著减少 token 消耗。
224+
- 实现在 `src/commands/poor/poorMode.ts`
225+
212226
### Stubbed/Deleted Modules
213227

214228
| Module | Status |
@@ -233,7 +247,7 @@ Feature flags control which functionality is enabled at runtime. 代码中统一
233247
## Testing
234248

235249
- **框架**: `bun:test`(内置断言 + mock)
236-
- **当前状态**: 3066 tests / 205 files / 0 fail
250+
- **当前状态**: 3175 tests / 207 files / 0 fail
237251
- **单元测试**: 就近放置于 `src/**/__tests__/`,文件名 `<module>.test.ts`
238252
- **集成测试**: `tests/integration/` — 4 个文件(cli-arguments, context-build, message-pipeline, tool-chain)
239253
- **共享 mock/fixture**: `tests/mocks/`(api-responses, file-system, fixtures/)
@@ -278,3 +292,29 @@ bun run typecheck # equivalent to bun run typecheck
278292
- **Biome 配置** — 大量 lint 规则被关闭(decompiled 代码不适合严格 lint)。`.tsx` 文件用 120 行宽 + 强制分号;其他文件 80 行宽 + 按需分号。
279293
- **Ink 框架在 `packages/@ant/ink/`** — 不是 `src/ink/`(该目录不存在)。Ink 相关的组件、hooks、keybindings 都在 packages 中。
280294
- **Provider 优先级**`modelType` 参数 > 环境变量 > 默认 `firstParty`。新增 provider 需在 `src/utils/model/providers.ts` 注册。
295+
296+
## Design Context
297+
298+
Impeccable 设计上下文保存在 `.impeccable.md` 中。设计 Web UI(RCS 控制面板、文档站、着陆页)时必须参考该文件。
299+
300+
### 核心设计原则
301+
302+
1. **Considered over clever** — 每个设计选择都应感觉有意为之,而非追逐潮流
303+
2. **Warmth through subtlety** — 通过橙色色调的中性色、留白布局、有温度的文案来传达温暖
304+
3. **Density with clarity** — 技术用户需要信息密度,但不能混乱
305+
4. **Community voice** — 设计应感觉是由使用者创造的,而非遥远的设计团队
306+
5. **Anthropic's shadow** — 遵循 Anthropic 的设计直觉:干净的布局、充足的间距、温暖的色温
307+
308+
### 品牌色
309+
310+
- 主色:Claude Orange `#D77757`(terra cotta)
311+
- 辅色:Claude Blue `#5769F7`
312+
- 暗色模式使用温暖的深色表面(非冷蓝黑色)
313+
314+
### 目标用户
315+
316+
技术团队/企业,在专业工作流中使用 AI 辅助编程。友好的开源社区氛围,非企业 SaaS 风格。
317+
318+
### 视觉参考
319+
320+
Anthropic 公司的设计风格 — 干净、考究、温暖的底色。大量留白,以排版为核心。避免 AI 产品常见的设计套路(渐变文字、玻璃态、霓虹色)。

docs/features/acp-link.md

Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
# acp-link — ACP 代理服务器
2+
3+
> 源码目录:`packages/acp-link/`
4+
> PR: #292
5+
> 新增时间:2026-04-18
6+
7+
## 一、功能概述
8+
9+
`acp-link` 是一个 ACP (Agent Client Protocol) 代理服务器,将 WebSocket 客户端桥接到 ACP agent 的 stdio 接口。它让 ACP agent(如 Claude Code)可以通过 WebSocket 远程访问,而不仅限于本地 stdio。
10+
11+
### 核心特性
12+
13+
- **WebSocket → stdio 桥接**:将浏览器/远程客户端的 WebSocket 连接转换为 ACP agent 的 stdin/stdout NDJSON 流
14+
- **会话管理**:创建、加载、恢复、列出、关闭会话
15+
- **权限审批流程**:客户端可远程审批 agent 的工具权限请求
16+
- **RCS 集成**:可与 Remote Control Server (RCS) 连接,将 ACP agent 注册到 RCS 并通过 Web UI 交互
17+
- **HTTPS 支持**:内置自签名证书生成,支持安全连接
18+
- **Token 认证**:自动生成或通过环境变量配置认证 token
19+
20+
## 二、架构
21+
22+
### 独立模式
23+
24+
```
25+
┌──────────────────┐ WebSocket ┌──────────────────┐ stdio/NDJSON ┌──────────────┐
26+
│ 浏览器/客户端 │ ◄──────────────►│ acp-link │ ◄────────────────►│ ACP Agent │
27+
│ (WS Client) │ ws://host:port │ (Proxy Server) │ spawn subprocess │ (Claude等) │
28+
└──────────────────┘ └──────────────────┘ └──────────────┘
29+
```
30+
31+
### RCS 集成模式
32+
33+
```
34+
┌──────────────┐ WebSocket ┌──────────────────┐ stdio/NDJSON ┌──────────────┐
35+
│ RCS Web UI │ ◄──────────────►│ Remote Control │ ◄─────────────────►│ acp-link │
36+
│ (/code/*) │ ACP Relay WS │ Server (RCS) │ ACP events │ + Agent │
37+
└──────────────┘ └──────────────────┘ └──────────────┘
38+
```
39+
40+
### 文件结构
41+
42+
```
43+
packages/acp-link/
44+
├── src/
45+
│ ├── server.ts # 主服务器:WS 连接管理、会话管理、权限处理、消息桥接
46+
│ ├── rcs-upstream.ts # RCS 上游客户端:REST 注册 + WS identify 两步流程
47+
│ ├── cert.ts # TLS 证书生成(自签名)
48+
│ ├── logger.ts # 日志模块
49+
│ ├── types.ts # JSON-RPC 和 ACP 协议类型定义
50+
│ ├── cli/
51+
│ │ ├── bin.ts # CLI 入口
52+
│ │ ├── command.ts # 命令行参数解析
53+
│ │ ├── app.ts # 应用启动
54+
│ │ └── context.ts # 上下文配置
55+
│ └── __tests__/ # 测试(cert, server, types)
56+
├── package.json
57+
└── tsconfig.json
58+
```
59+
60+
## 三、安装与使用
61+
62+
### 基本用法
63+
64+
```bash
65+
# 直接运行(在 monorepo 中)
66+
# 注意:claude 本身不支持 ACP,需要用 ccb-bun --acp 启动 ACP agent
67+
bun packages/acp-link/src/cli/bin.ts ccb-bun -- --acp
68+
69+
# 指定端口和主机
70+
acp-link --port 9000 --host 0.0.0.0 ccb-bun -- --acp
71+
72+
# 启用 HTTPS(自签名证书)
73+
acp-link --https ccb-bun -- --acp
74+
75+
# 调试模式
76+
acp-link --debug ccb-bun -- --acp
77+
```
78+
79+
### CLI 参考
80+
81+
```
82+
USAGE
83+
acp-link [--port value] [--host value] [--debug] [--no-auth] [--https] <command>...
84+
acp-link --help
85+
acp-link --version
86+
87+
FLAGS
88+
[--port] Port to listen on [default = 9315]
89+
[--host] Host to bind to [default = localhost]
90+
[--debug] Enable debug logging to file
91+
[--no-auth] Disable authentication (dangerous)
92+
[--https] Enable HTTPS with self-signed cert
93+
-h --help Print help information and exit
94+
-v --version Print version information and exit
95+
96+
ARGUMENTS
97+
command... Agent command followed by its arguments (e.g. "ccb-bun -- --acp")
98+
```
99+
100+
## 四、认证
101+
102+
默认启动时自动生成随机 token。客户端连接时需通过 query 参数传递:
103+
104+
```
105+
ws://localhost:9315/ws?token=<your-token>
106+
```
107+
108+
配置固定 token:
109+
110+
```bash
111+
ACP_AUTH_TOKEN=my-fixed-token acp-link ccb-bun -- --acp
112+
```
113+
114+
禁用认证(不推荐,仅用于开发):
115+
116+
```bash
117+
acp-link --no-auth ccb-bun -- --acp
118+
```
119+
120+
## 五、RCS 集成
121+
122+
acp-link 支持将 ACP agent 注册到 Remote Control Server,通过 Web UI 远程操控。
123+
124+
### 连接方式
125+
126+
```bash
127+
# 通过环境变量配置 RCS 连接
128+
ACP_RCS_URL=http://localhost:3000 \
129+
ACP_RCS_TOKEN=sk-rcs-your-key \
130+
ACP_RCS_NAME=my-agent \
131+
acp-link ccb-bun -- --acp
132+
```
133+
134+
### 注册流程(两步)
135+
136+
1. **REST 注册**:通过 `POST /v1/environments/bridge` 向 RCS 注册环境
137+
2. **WS identify**:建立 WebSocket 连接后发送 `identify` 消息(携带 agentId),替代完整 `register`
138+
139+
```
140+
acp-link RCS
141+
│ │
142+
│── POST /v1/environments/bridge ──►│ (REST 注册)
143+
│◄── { agentId, sessionId } ───────│
144+
│ │
145+
│── WS connect ─────────────────►│ (WebSocket)
146+
│── identify { agentId } ────────►│ (WS 标识)
147+
│◄── registered ─────────────────│
148+
│ │
149+
│── ACP events ─────────────────►│ (双向消息转发)
150+
│◄── user prompts/permissions ───│
151+
```
152+
153+
## 六、权限模式
154+
155+
### permissionMode 传递链
156+
157+
权限模式通过整条链路传递:Web UI → RCS → acp-link → ACP agent。
158+
159+
支持的权限模式:
160+
- `default` — 每次请求权限确认
161+
- `auto` — 自动判断
162+
- `acceptEdits` — 自动接受编辑
163+
- `plan` — 规划模式
164+
- `dontAsk` — 不询问
165+
- `bypassPermissions` — 绕过权限(需 sandbox 环境)
166+
167+
### fallback 链
168+
169+
当客户端未显式传递 permissionMode 时,使用以下 fallback 链:
170+
171+
```
172+
客户端传值 > config.permissionMode > ACP_PERMISSION_MODE 环境变量
173+
```
174+
175+
示例:
176+
177+
```bash
178+
ACP_PERMISSION_MODE=auto acp-link ccb-bun -- --acp
179+
```
180+
181+
## 七、权限管道(2026-04-18 改进)
182+
183+
### 模式同步
184+
185+
`applySessionMode` 在 agent 切换权限模式时同步 `appState.toolPermissionContext.mode`,确保内部权限上下文与 ACP 客户端状态一致。
186+
187+
### 统一权限流水线
188+
189+
`createAcpCanUseTool` 接入 `hasPermissionsToUseTool` 统一权限流水线,替代原来分散的处理逻辑。支持 `onModeChange` 回调,模式变更时实时同步。
190+
191+
### bypass 检测
192+
193+
`bypassPermissions` 模式增加可用性检测 — 仅在非 root 或 sandbox 环境中允许启用,防止权限绕过的安全风险。
194+
195+
## 八、环境变量
196+
197+
| 变量 | 说明 |
198+
|------|------|
199+
| `ACP_AUTH_TOKEN` | 固定认证 token(默认自动生成) |
200+
| `ACP_PERMISSION_MODE` | 默认权限模式 fallback |
201+
| `ACP_RCS_URL` | RCS 服务器地址(启用 RCS 集成) |
202+
| `ACP_RCS_TOKEN` | RCS API token |
203+
| `ACP_RCS_NAME` | Agent 名称(在 RCS 中显示) |
204+
| `ACP_RCS_CHANNEL_GROUP` | Channel group ID |
205+
| `ACP_MAX_SESSIONS` | 最大会话数 |

0 commit comments

Comments
 (0)