架构

CLI-JAW 是一个 Node.js 服务器,包含 15 个路由模块中的 141 个 API 端点。四个接口(CLI、Web、Telegram、Discord)通过一个中央服务器连接,该服务器将请求分发到代理、编排、记忆和浏览器子系统。

系统概览

所有四个接口都通过 server.ts 传入,它处理认证、安全、WebSocket 和启动引导,然后委托给 src/routes/ 中的路由模块。

CLI (bin/commands/*)  ──HTTP──→  server.ts (glue)
Web (public/)         ──HTTP+WS→      │
Telegram Bot          ──HTTP──→       │
Discord Bot           ──HTTP──→       │
                                      ↓
Dashboard (port 24576) ─scan/proxy→ src/manager/
                                      │
                        src/routes/* ──┤──→ src/core/
                                      ├──→ src/agent/
                                      ├──→ src/orchestrator/
                                      ├──→ src/prompt/
                                      ├──→ src/memory/
                                      ├──→ src/messaging/
                                      ├──→ src/telegram/
                                      ├──→ src/discord/
                                      └──→ src/browser/

四个接口

接口入口传输方式
CLIbin/cli-jaw.ts + bin/commands/*.tsHTTP 到服务器
Web UIpublic/index.htmlHTTP + WebSocket
Telegramsrc/telegram/bot.tsGrammy bot 轮询
Discordsrc/discord/bot.tsdiscord.js 网关

路由模块

服务器注册了 15 个路由模块。每个模块都是一个独立的注册函数,接收 Express 应用和认证中间件。

模块路由数职责
server.ts(基础)14健康检查、会话、消息、认证、命令、停止、清除
settings.ts18设置、提示词、heartbeat-md、MCP、CLI 注册表、配额
browser.ts41浏览器原语、标签页管理、web-ai 自动化
memory.ts13记忆运行时、KV 存储、记忆文件
jaw-memory.ts11Jaw 记忆搜索、读取、保存、soul、刷新、反思
orchestrate.ts11PABCD 状态、工作者、调度、队列管理
goal.ts3持久化目标状态、历史记录
goal-run.ts3有界目标运行生命周期
messaging.ts6上传、文件打开、语音、频道发送
employees.ts5员工 CRUD 和重置
skills.ts5技能列表、启用、禁用、重置
avatar.ts4代理/用户头像管理
traces.ts3公开追踪摘要和事件读取
heartbeat.ts2心跳 GET 和验证 PUT
i18n.ts2语言列表和语言包

文件树概览

cli-jaw/
├── bin/                    # CLI entry + 23 command files
│   ├── cli-jaw.ts          # Root CLI router
│   └── commands/           # serve, init, doctor, chat, browser, ...
├── server.ts               # Express/WS bootstrap (882L)
├── src/
│   ├── core/               # 21 files — config, DB, bus, i18n, employees
│   ├── agent/              # 37 files — spawn, events, lifecycle, ACP
│   ├── orchestrator/       # 10 files — PABCD pipeline, state machine
│   ├── prompt/             # builder + templates
│   ├── memory/             # 13 files — runtime, indexing, flush, identity
│   ├── cli/                # registry, commands, handlers, ACP client
│   ├── messaging/          # shared Telegram/Discord runtime
│   ├── telegram/           # Telegram bot transport
│   ├── discord/            # Discord bot transport
│   ├── browser/            # CDP control + web-ai automation
│   ├── routes/             # 15 route registrars
│   ├── manager/            # Dashboard server (77 TS/TSX files)
│   ├── security/           # Path guards, input validation
│   └── shared/             # Tool-log sanitization
├── public/                 # Web UI (Vanilla TS + Vite 8)
│   ├── js/                 # 80 TypeScript modules
│   ├── css/                # 11 CSS files
│   ├── manager/            # React 19 dashboard app (286 files)
│   └── dist/               # Build output
├── native/                 # jaw-claude-i Rust helper
│   └── jaw-claude-i/       # 15 Rust source files
└── tests/                  # 447 test files

核心子系统

子系统位置职责
代理运行时src/agent/生成 CLI 进程、流式传输 NDJSON 事件、管理会话、队列、回退、重试
编排器src/orchestrator/PABCD 状态机、员工调度、工作者监控
记忆src/memory/三层记忆(结构化/情景/语义)、FTS5 索引、刷新、反思
提示词构建器src/prompt/9 步提示词管道:A1、A2、记忆、编排、心跳、技能、委派
浏览器src/browser/Chrome CDP 控制、视觉点击、标签页生命周期、web-ai 自动化
消息传递src/messaging/共享 Telegram/Discord 频道路由、目标追踪

安全模型

数据存储

CLI-JAW 使用 better-sqlite3 通过 SQLite 存储会话、消息、记忆、员工、编排状态和排队消息。数据库模式定义在 src/core/db.ts 中。

session           # active CLI, session ID, model, working directory
messages          # conversation history with trace and tool log
memory            # key-value memory store
employees         # registered employee agents
employee_sessions # per-employee session tracking
orc_state         # PABCD orchestration state
queued_messages   # pending message queue