架构

CLI-JAW 是一个基于 Node.js 22 的多 AI 运行时服务器。根处理器和 200 个 API/媒体端点为 CLI、TUI、Web PWA、Electron 桌面、Telegram、Discord 和 Manager Dashboard 提供同一套会话、记忆和项目上下文。

系统概览

所有运行表面都经过 server.ts。服务器处理认证、安全、SSE 事件和启动引导,然后委托给 src/routes/ 与核心子系统。

CLI/TUI/Electron/Web/Telegram/Discord ──HTTP──→ server.ts
Web events                             ──SSE──→ GET /api/events
Dashboard (port 24576)                 ─proxy→ src/manager/
Agent streams                          ─NDJSON→ provider runtime + traces

server.ts ──→ src/routes/* ──→ src/core/ | src/agent/ | src/orchestrator/
                         └──→ src/memory/ | src/messaging/ | src/browser/

运行表面

表面入口传输方式
CLIbin/cli-jaw.ts + bin/commands/*.tsHTTP 到服务器
Terminal TUIsrc/tui/终端渲染 + 服务器命令
Web UIpublic/index.htmlHTTP + SSE
Electron Desktopelectron/src/打包 sidecar 服务器 + WebView
Telegramsrc/telegram/bot.tsGrammy bot 轮询
Discordsrc/discord/bot.tsdiscord.js 网关
Manager Dashboardsrc/manager/ + public/manager/独立端口扫描、代理、实例管理

路由模块

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

模块路由数职责
server.ts(基础)14健康检查、会话、消息、认证、命令、停止、清除
settings.ts18设置、提示词、heartbeat-md、MCP、CLI 注册表、配额
browser.ts43浏览器原语、标签页管理、web-ai 自动化和 code-mode 回收
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 + 30 command files
│   ├── cli-jaw.ts          # Root CLI router
│   └── commands/           # serve, init, doctor, chat, browser, ...
├── server.ts               # Express/SSE bootstrap (593L)
├── src/
│   ├── core/               # 30 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/             # 32 route registrars
│   ├── manager/            # Dashboard server
│   ├── security/           # Path guards, input validation
│   └── shared/             # Tool-log sanitization
├── public/                 # Web UI (Vanilla TS + Vite 8)
│   ├── js/                 # 86 TypeScript modules
│   ├── css/                # 11 CSS files
│   ├── manager/            # React 19 dashboard app
│   └── dist/               # Build output
├── electron/               # Electron desktop shell + packaged sidecar
├── 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 自动化、provider 适配器
消息传递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