CodeMason README

The project's README from github.com/mufengyuan6/CodeMason. As one markdown file: README.md.

编舟 · CodeMason

CodeMason 不保存任何状态——记忆是投影,回滚是重放,审计是回看。因为一切皆事件,所以敢让 AI 写更少:写错了回滚,写对了复用,每一步都有据可查。

CodeMason 是 Claude Code / Cline 同级的自主编码 Agent:理解需求 → 规划 → 改码 → 验证 → 交付,全链路自主完成。与市面上"把状态当真相"的工具相反,它以事件流为唯一真相(状态永不保存、只从事件推导),因此敢让 Agent 写得更少(YAGNI 独立确定性验证 Hook)——写错了可回滚,写对了可复用,每一步都完全透明可审计。

核心特性

核心特性

架构

headless 内核(Python 进程,--mode rpc / run)
    │  Event Queue(core→界面):TurnStarted / MessageDelta / ExecApprovalRequest / ItemCompleted
    │  Op Queue(界面→core):UserTurnStart / ApprovalResponse / UserTurnCancel / Compact
    ▼
协议层(Op/Event 双向契约,schema 版本化 + Op 幂等)
    ├── JSONL 持久化(append-only 事实源 + flock 写锁)
    ├── OTel 导出(prompt / 审批 / 工具 / 沙箱轨迹)
    └── WebSocket 广播(Web 驾驶舱,多标签页共享会话)
Web 驾驶舱(React 18 + Vite)← 唯一界面
Agent Loop(手写状态机 + 事件流)
  ├── Plan 模式:architect 强模型 → 规划 / 反思归因 / 只读
  ├── Act 模式:editor 快模型 → 10 内置工具(Read/Write/Edit/Bash/Glob/Grep/WebSearch/WebFetch/Monitor/AskUser)
  ├── 控制平面:PolicyEngine 策略判定 → LoopScheduler 调度 → LoopBudget 记账 → OpRouter 按 Op 分派
  ├── 变更控制:工具执行 → staging diff → Hook 验证(YAGNI/安全/权限)→ 落盘 → Git Checkpoint
  ├── 执行沙箱:SandboxProvider(默认 Firecracker microVM,L1-L4 可换)——沙箱内无凭据、网络白名单
  ├── 安全分类器:Tier3 动作 → 两阶段判决(allow/block/alternative/escalate)→ 拦截件进审批收件箱
  ├── 记忆:session / project / global 三层 + T1-T5 压缩
  └── 审计:全部事件落盘 + OTel 导出 + AI 贡献报告(Co-Authored-By trailer)

驾驶舱是任务工作台而非仪表盘集合——三区信息架构:

┌─────────────┬─────────────────────────────┬──────────────┐
│  左·会话栏   │   中·事件流主流程             │  右·监控抽屉  │
│ 列表/新建/恢复│ 审批内联可操作 · 交付横幅      │ 文件/成本/    │
│             │ 首次引导卡 · 任务输入          │ YAGNI/上下文/ │
│             │                             │ 健康信号/贡献  │
└─────────────┴─────────────────────────────┴──────────────┘

切换会话 = 换 JSONL 重放(事件溯源兑现),审批阻塞点始终在事件流内即时可见,监控一律抽屉化不稀释主流程。收件箱语义:人类只审被拦截/存疑的动作(分类器放行的照跑)。

技术栈

快速开始

# 1. 克隆
git clone https://github.com/mufengyuan666/CodeMason.git
cd CodeMason

# 2. 环境
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
pip install -r requirements.txt

# 3. 启动驾驶舱(默认 127.0.0.1:8765)
python -m src.web.server

# 4. headless 模式(自动化 / CI)
python -m src.cli.main run --task "修复 xxx"
python -m src.cli.main rpc --task "读取 README 并总结"   # 结构化事件输出

Docker 部署:

docker compose up --build
docker run -p 8765:8765 codemason

测试与评测

pytest tests/ -v        # 单元测试(Agent Loop / 协议 / 安全 / 工具 / 记忆 / 压缩 / 沙箱 / 分类器 / Team / 投影)
cd frontend && npx playwright test   # E2E(WebSocket 事件推送 / 审批交互 / 收件箱)

评测体系(自建任务集 + 同模型对照):

CodeMason (mufengyuan6/CodeMason)

Searching Database…

这是什么?CodeMason(编舟)是一个与 Claude Code 或 Cline 同类的自主编程智能体:它理解需求、制定计划、修改代码、验证结果并交付,全程自主运行整个循环。它的核心理念是不保存状态——一切都从只追加的事件日志推导而来,因此每次更改都可以重放、回滚或审计。
它是像 Claude Code 那样的 CLI 智能体,还是别的东西?它是一个自托管的 Web 应用,不是单个 CLI 二进制文件:Python FastAPI + WebSocket 后端驱动 React 18 的“驾驶舱”仪表盘,包含事件时间线、审批收件箱、YAGNI 看板、成本/上下文视图和只读代码查看器等面板。
怎么让它跑起来?README 的快速开始指向 Docker 部署,所以你应该用 Docker/Compose 把它搭起来,而不是手动安装。
我需要自己的 LLM API 密钥吗?需要——CodeMason 默认使用讯飞(iFlytek)作为模型提供方,但可插拔的 Provider 抽象让你换成 OpenAI 或 Ollama,并区分“架构师”(规划)和“编辑”(执行)两种模型角色。
拦截危险操作的安全分类器有多可靠?在它自己的 100 条命令测试集上,它能拦截约 89% 的危险命令,并在 720 个场景中报告提示注入成功率为 0%,误报率低于 1%——并不完美,因此连续拦截三次后会自动把任务升级给人工审批者。
YAGNI 引擎究竟检查什么?每次生成后,一个独立的静态分析钩子会把暂存的 diff 过一遍七级决策阶梯(真的需要吗、库里有没有现成的、标准库能不能做到等等),并报告减少的行数、避免的依赖、重复实现和可读性评分。
运行代码有哪些沙箱后端可选?SandboxProvider 抽象支持四种可互换的后端:Firecracker microVM(默认,独立内核 + KVM)、加固的 Docker 容器、作为中间层的 gVisor(runsc),以及 E2B 的云沙箱。
CodeMason 的性能是如何与 Cline 对比的?在完全相同的 30 个任务基准(改编自 SWE-bench 和真实 issue 的 bug 修复、功能、重构、测试)上,用同一个模型在 Cline 中运行,并使用失败转通过率加上 TRAJEVAL 的工具级精确率/召回率细分来比较结果,从而保证只有智能体实现这一变量不同。
自进化引擎是什么?一个闭环(观察→分析→改进→验证→持久化),随时间改进记忆、技能、规划、工具使用和 harness 本身,由带限流的 EvolutionPolicy 治理,采用影子→金丝雀→全量的分阶段发布和自动回滚。
Size
2.1 MB
Stars
176
Updated
CommitAug 21
Age
2mo
Commits · 90 Days