CLAUDE.md
3.37 KB
CLAUDE.md
项目概述
LemonACP — Claude Code ACP 调用内核。通过 ACP 协议驱动本地 Claude CLI 进程,提供单 Agent 执行和 Master → Sub-Agent 多轮编排能力。Node.js + Express,无数据库依赖。
快速启动
npm install
cp .env.example .env
node server/index.js # 端口 3010(server/config.js 配置)
架构
技术栈
- 后端:Node.js (≥18) + Express
- AI:Claude CLI(本地子进程,
--dangerously-skip-permissions自动批准) - 包管理:pnpm workspace(monorepo)
目录速查
| 目录 | 说明 |
|---|---|
packages/acp-core/ |
ACP 协议层:Protocol / Transport / Launcher 抽象 + ClaudeCliProtocol |
packages/agent-core/ |
Agent 运行时:目录驱动的 Agent、AgentBus、AgentRegistry、AgentScaffold |
server/index.js |
Express 入口(2 个路由:/api/master + /api/config) |
server/src/core/ |
编排引擎:orchestrator、master-session、agent-manager、scheduler、session-pool、stream-executor、parser、prompt-builder |
server/src/engine/ |
进程层:command-queue、process-guard、idle-timer、run-registry、failover-error |
server/src/tools/ |
Master 工具:call-agent-tool、tool-registry |
server/src/standalone-entry.js |
编程 API 入口:runMasterSession / runOrchestration / runSingleAgent |
server/routes/master-chat.js |
SSE 流式对话路由(主入口) |
server/routes/config.js |
配置文件读写路由 |
server/services/ |
conversation-logger、file-parser、memory-service、claude-chat-service |
server/config/backends.json |
ACP Launcher / Client 配置 |
server/config/agents.json |
(可选)静态 Agent 定义 |
API 路由
| 路径 | 说明 |
|---|---|
POST /api/master/chat |
Master Agent 多轮对话(SSE) |
POST /api/master/upload |
文件上传注入对话 |
GET /api/master/sessions |
列出活跃 session |
DELETE /api/master/sessions/:id |
关闭 session |
GET /api/config/items |
列出配置项 |
GET/PUT /api/config/items/:key |
读写配置文件 |
GET /api/health |
健康检查 |
配置文件
| 文件 | 说明 |
|---|---|
.env |
PORT、CORS_ORIGINS 等环境变量;由 cp .env.example .env 生成 |
server/config.js |
端口(默认 3010)、CORS、目录路径 |
server/config/backends.json |
ACP Launcher 定义(command、args、protocol) |
server/config/agents.json |
静态 Agent 注册表(可选,也可由 system/agents/ 目录发现) |
注意事项
- Claude CLI 进程默认带
--dangerously-skip-permissions,写入受限路径前自己评估风险。 server/src/standalone-entry.js的loadConfig()优先读server/config/backends.json+server/config/agents.json,无需数据库。- Agent 记忆存储在 Agent 目录的
memory/子目录,纯文件系统,无 SQLite 依赖。 prompt-builder.js的getSystemStateXML()只返回时间戳(公司/OKR 层已移除)。
!WARNING Master Agent 必读: 当你试图在
Bashtool 中使用带有多重双引号的复杂命令(例如curl -d '{"id":"lemonv"}')时,JSON 转义容易崩溃陷入死循环。 解决方案: 任何需要提交 JSON Payload 的操作,先写入/tmp/*.json文件,再通过curl -d @/tmp/payload.json发送。