Skip to content

Repository files navigation

mo — 一个从 0 到 1 的学习型 CodeAgent

这不是一个产品,是一次学习工程。 目标是通过亲手构建一个完整的 CodeAgent,摸透业界主流实现(Claude Code、Codex CLI 等)在 agent harness 上的工程实践,并形成"复杂度应该放在哪里"的第一手判断。

设计原则

  1. 模型与 harness 严格解耦。模型是可替换的决策核心,harness 负责环境感知、工具执行与状态维持;换模型不重写 harness。
  2. 事件日志是唯一事实来源。上下文、会话恢复、回放、评估全部从同一条 append-only 事件流派生(事件溯源)。
  3. 核心循环保持小。loop 本身几百行就该写完;一切新能力以工具/策略/插件的形式挂在循环外,而不是改循环。

快速开始

前置:Node.js ≥ 22,以及一个 Anthropic 兼容端点的 API key(默认对接 GLM 的 Anthropic 兼容端点;任何兼容端点都可通过 MO_BASE_URL 替换)。

git clone <repo-url> mo && cd mo
npm install
cp .env.example .env      # 编辑 .env,填入 MO_API_KEY
npm run mo                # 交互式 REPL;一次性执行:npm run mo -- -p "任务描述"

常用入口(完整参数见 mo --helpsrc/args.ts):

npm run mo -- --preset minimal -p "..."      # 极简形态(bash + editor 两工具)
npm run mo -- --permission auto -p "..."     # 权限模式:ask | auto | edit-only
npm run mo -- --sandbox seatbelt -p "..."    # macOS Seatbelt 系统级沙箱
npm run mo -- --resume traces/<sid>.jsonl    # 进程被杀后从事件流无损恢复
npm run mo -- --replay traces/<sid>.jsonl    # 本地确定性回放校验(不调 API)

npm test && npm run typecheck               # 测试与类型检查

文档导航

路径 内容
docs/adr/ 架构决策记录(不可逆决策的背景/决策/备选/后果)
docs/decisions/ 轻量决策日志(一般性结论的落盘位置)
docs/plan/roadmap.md 总路线图:里程碑、贯穿性纪律、风险对策
docs/plan/milestones/ 每个里程碑的 spec(范围、Not-in-scope、DoD)与 retro
docs/notes/reading-list.md 按里程碑组织的源码阅读与资料清单
docs/eval/ 评估纪律、任务集格式、trace 归档规则

当前状态

M1–M6 已完成(minimal agent → 可观测与可恢复 → 能力扩展 → 插件化 → 沙箱与权限 → 评估闭环,详见 docs/eval/runs/roadmap)。

M4 — 插件化(已完成,2026-08-25)--preset minimal|standard 纯配置切运行形态(核心 loop 零改动),--plugin <path> 装配期加载第三方工具,--config <json> 声明式自定义组合。minimal 形态重跑 M1 任务集 5/5(与 M1 基线一致)、standard 6/6。接口文档见 docs/plugins.md

M5 — 沙箱与权限(已完成,2026-08-26):ADR-0007 的权限通道上构建两轴体系——权限决策层(bash 命令静态解析 + 规则引擎 verdict 三态 × 模式矩阵 --permission ask|auto|edit-only,ADR-0008 uncertain fail-closed)与 macOS Seatbelt 系统级沙箱(--sandbox seatbelt,workspace-write 式,与权限模式正交)。五类危险命令(递归删除/网络外传/写敏感路径/后台驻留/混淆)全部前置拦截且审计事件可归因(source + 命中规则)。对照笔记见 docs/notes/m5-sandbox-notes.md

M6 — 评估闭环(已完成,2026-08-27):评估 harness 成体系——24 个任务的 mini-eval 集合(20 个自建 + 4 个 vendored Terminal-Bench 任务,Apache-2.0,来源与改动见各任务 SOURCE.md),runner 产出结构化 run JSON,compare-runs.mjs 生成同口径对比报告(口径告警 / 翻转明细 / per-task 指标);验收器洁净副本执行 + 考卷哈希钉死。评估纪律与任务集格式见 docs/eval/

管理方式

  • ADR 纪律:任何"改起来疼"的决策,动手前必须先有 ADR。
  • 里程碑流程:spec → 实现 → tag(m1-minimal …)→ retro 复盘。
  • 评估门禁:从 M1 起维护固定的 mini-eval 任务集(初版 5 个,M6 扩至 24 个),每个里程碑收尾必跑。
  • 三次法则:第一次写死,第二次抽接口,第三次才泛化。插件化(M4)由前三个里程碑的真实痛点驱动,不凭想象抽象。
  • 狗粮:M1 完成后,用 mo 开发 mo。

技术栈

TypeScript + Node.js(ADR-0001),极简 CLI、内核渲染分离(ADR-0002)。

许可

MITdocs/eval/tasks/TB*/ 下 4 个 vendored 任务来自 terminal-bench(Apache-2.0),来源与改动记录在各任务 SOURCE.md

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages