OpenClaw
§1 · OpenClaw 是什么
Section titled “§1 · OpenClaw 是什么”TypeScript、Node 写的多通道个人 agent 控制面。定位是把多个 messaging channel 和一个 agent 后端串起来。同一个用户可以同时在 Discord、iMessage、Web 客户端和 IDE 里跟同一个 agent 对话,agent 在背后做 routing、记忆、定时任务。
§2 · 按目录分层的架构栈
Section titled “§2 · 按目录分层的架构栈”| 维度 | Codex | Claude Code | OpenClaw | Hermes |
|---|---|---|---|---|
| 通道 | `channels/` 通道抽象层 | `discord/` Discord bot | `imessage/` iMessage 桥(macOS AppleScript) | `acp/` Agent Conversation Protocol(IDE、编辑器) |
| 后端 | `agents/` agent 注册表 | `gateway/` 模型网关加限流 | `context-engine/` 上下文组装 | `coordinator/` 多 agent 协作 |
| 记忆 | `memory/` MEMORY.md 加 memory/*.md | SQLite 加 FTS5(lexical)加 sqlite-vec(vector) | `temporal-decay.ts` 半衰期 30 天衰减 | qmd(query-driven memory directory)作用域 |
| Sandbox 与 exec | `sandbox/` 跨后端 exec 抽象 | local、docker、singularity、modal、daytona、ssh 6 后端 | `browser/` headless Chrome 沙箱 | `canvas-host/` 隔离 canvas 进程 |
| 定时任务 | `cron/` 子系统 | 3 种调度(at、every、cron)加 tz 加 staggerMs | isolated-agent 独立 session 加 skills-snapshot | failure-alert(cooldownMs 加独立 destination) |
| 观测与计费 | 13 类 `DiagnosticEvent` | 全局 listener 加 recursion guard | `cost-tracker` 按 channel、agent 聚合 | `security/audit.ts` 30+ check |
§3 · 工程亮点
Section titled “§3 · 工程亮点”- 通道齐:4 种 channel 加一层通道抽象,让一个 agent 跨平台对话。
- 记忆检索是行业天花板:FTS5 加 sqlite-vec 双索引加 temporal decay 加 qmd scope。本地单进程能跑的最完整方案。
- cron 子系统完整:at、every、cron 三种调度,加 isolated-agent 独立执行,加 failure-alert 闭环,加 13 个 issue-named regression test 锁边角。
security/目录 29 文件:audit.ts30+ check,external-content.ts用 12 条 SUSPICIOUS_PATTERNS 加 8 字节随机 ID 防边界伪造,skill-scanner静态扫描 skill,dangerous-tools默认 HTTP deny list。- 6 种 exec backend:local、docker、singularity、modal、daytona、ssh 各有独立后端。一份代码覆盖大多数 agent 部署场景。
§4 · 短板
Section titled “§4 · 短板”- 复杂度高:30+ 子目录,运维门槛远高于其他三家。
- 缺乏官方托管:自托管为主,跨设备同步需要自行实现。
- 没有 Phase2 风格的 memory consolidation:完全靠 retrieval,存了什么就有什么。
- iMessage 桥脆:依赖 macOS AppleScript,跨 macOS 版本兼容性要自己背。
§5 · 5 件最值得借鉴的工程动作
Section titled “§5 · 5 件最值得借鉴的工程动作”security/audit.ts30+ check 模板:把 agent 安全审计做成可枚举列表。每条 check 带 severity 加 remediation 提示。external-content.ts边界伪造防御:12 条 SUSPICIOUS_PATTERNS 加 8 字节随机 ID 包裹外部内容。防 prompt 注入用]\n\n[/external_content]逃逸。- cron 子系统 13 个 regression test:每个 issue 编号对应一个 test,把生产边角钉死。
temporal-decay.ts半衰期公式:weight = base * exp(-ln(2) * age_days / halfLife)。与 FTS5 加 vector 检索分数线性叠加。- 6 种 exec backend 抽象:
run_terminal(cmd, env_type)一个签名,6 种实现。local 到 daytona 全覆盖。