Harness System 是一个本地优先的 Codex / Agent 端到端研发闭环验证系统。它不是普通业务脚手架,而是给 Codex Skill 调用的工程控制面:接收需求、Bug 或 polish 目标,编排需求分析、编码计划、测试、日志读取、自动修复、重测、MR Summary、部署和执行记录。
当前默认产品样例是 apps/mindmap-editor,即一个与 Harness 控制面隔离的脑图编辑器。Harness 负责研发流程编排;Mind Map Studio 负责承载真实产品需求。产品 UI 不展示 Harness、Agent 或流程编排概念,只通过自己的 AGENTS.md 向 Agent 提供上下文。
- Codex Skill 入口:
$harness、$harness-requirement、$harness-bugfix、$harness-polish。 - 多 RPC 控制面:orchestrator、requirements、coding、testing、deploy。
- 独立产品后端:
mindmap-rpc,提供多文件、SQLite 存储、DIFF 协同、跨文件节点搜索。 - 独立产品前端:
apps/mindmap-editor,提供脑图编辑、文件管理、导入导出、无限画布、快捷键、协同同步和可视化状态。 - 自动化质量闭环:单测、类型检查、前端构建、RPC 健康检查、无头浏览器交互、截图复核、失败日志解析。
- 每任务执行轨道:
.harness/tasks/<run-id>.json记录稳定 flow、测试矩阵、质量验证、证据和 blockers。 - Git 收尾记录:
.harness/git/<run-id>.json记录 change review、commit、push 和 MR/PR handoff。 - 渐进式知识库:根目录和各模块
AGENTS.md。 - 可审计输出:
.harness/runs/*.json、docs/agent-journal.md、docs/test-log.md、docs/generated-mr-summary.md、docs/release-notes.md。 - Docker Compose 部署:
docker compose up --build。
harness-system/
apps/
mindmap-editor/ # 隔离的产品样例:Mind Map Studio
services/
orchestrator-rpc/ # 控制面总编排
requirements-rpc/ # 自然语言需求结构化
coding-rpc/ # patch plan / 变更摘要 / 测试建议
testing-rpc/ # 测试执行、日志解析、失败归因
deploy-rpc/ # Docker 部署记录和健康检查
mindmap-rpc/ # 产品后端:文件、SQLite、DIFF 协同
packages/
shared/ # 共享类型、JSON-RPC server、工具函数
rpc-client/ # RPC client 和健康检查
workflow-core/ # 状态机、重试策略、评分、摘要生成
harness-worktree/ # Skill 背后的流程入口和 runbook
skills/ # 可安装 Codex Skill 包,中文说明
docs/ # 架构、测试、执行、MR、Release 文档
docker-compose.yml主要入口是 $harness:
$harness requirement 增加一个工作流运行详情页
$harness bugfix 测试服务日志解析失败
$harness polish 优化前端任务状态展示也支持更明确的专用入口:
$harness-requirement 增加脑图文件模板
$harness-bugfix 保存文件接口失败
$harness-polish 优化节点编辑体验底层脚本等价入口:
pnpm workflow:requirement "增加脑图文件模板"
pnpm workflow:bugfix "保存文件接口失败"
pnpm workflow:polish "优化节点编辑体验"Skill 文件位置:
skills/harness/SKILL.mdskills/harness-requirement/SKILL.mdskills/harness-bugfix/SKILL.mdskills/harness-polish/SKILL.mdskills/harness-quality/SKILL.md
安装到本机 Codex Skill 目录:
pnpm skills:install安装依赖:
pnpm install启动 Harness 控制面 RPC 服务:
pnpm dev:services启动产品样例前端和产品 RPC:
pnpm target:dev访问:
- Mind Map Studio:
http://localhost:5175 - Orchestrator RPC:
http://localhost:4100 - Requirements RPC:
http://localhost:4101 - Coding RPC:
http://localhost:4102 - Testing RPC:
http://localhost:4103 - Deploy RPC:
http://localhost:4104 - Mind Map RPC:
http://localhost:4105
注意:只运行 pnpm target:web 会打开前端,但保存文件、Push diff、Pull diff 依赖 mindmap-rpc,因此日常建议用 pnpm target:dev。
apps/mindmap-editor 是当前产品样例,已经具备:
- 文件管理页:创建、打开、保存、搜索、排序不同脑图文件。
- SQLite 持久化:文件和节点存储在本地数据库。
- 显式文件 ID:Files 和 Collaboration 面板显示当前
mapId,DIFF 同步按文件 ID 路由。 - DIFF 协同:Push / Pull diff,多端手动同步和自动同步。
- 编辑器页:专注节点编辑,包含 outline、inspector、关系洞察、快照、编辑历史、焦点队列。
- 无限画布:背景拖拽平移、滚轮缩放、键盘缩放、mini map、reset。
- Canvas 连接线:节点连线使用 canvas 绘制,并有像素级浏览器质检。
- 快捷键:
R新建根节点、C新建子节点、L自动布局、Cmd/Ctrl+Zundo、Shift+Cmd/Ctrl+Zredo、Cmd/Ctrl+S快照、Cmd/Ctrl +/-/0缩放;Cmd/Ctrl+R保留给浏览器刷新。 - 导入导出:JSON 导入、JSON / Markdown 导出。
- 跨文件节点搜索:通过
mindmap-rpc查询数据库节点,支持状态筛选并可跳转到编辑器选中节点。
所有 RPC 服务统一暴露:
GET /health
POST /rpc请求格式:
{ "id": "rpc_1", "method": "runWorkflow", "params": {} }响应格式:
{ "id": "rpc_1", "result": {} }控制面服务职责:
orchestrator-rpc:推进工作流状态机,串联其它 RPC 服务。requirements-rpc:把自然语言输入拆为任务类型、范围、风险、验收条件。coding-rpc:生成 patch plan、变更摘要、测试建议。testing-rpc:执行回归命令、读取日志、解析失败、给出修复建议。deploy-rpc:记录 Docker Compose 部署和健康检查结果。
产品服务职责:
mindmap-rpc:产品自己的 JSON-RPC 后端,负责文件、节点、DIFF 操作记录、跨文件搜索和 SQLite 数据库。
核心状态机在 packages/workflow-core:
created -> analyzing -> planning -> coding -> testing
testing -> fixing -> retesting -> fixing
testing/retesting -> reviewing -> committing -> pushing
-> summarizing -> creating-mr -> deploying -> completed
任意关键阶段 -> blocked 或 failed一次 $harness bugfix ... 会大致执行:
- requirements-rpc 分析输入。
- workflow-core 生成
.harness/tasks/<run-id>.json,固定intake -> requirement-analysis -> test-case-generation -> implementation-planning -> coding -> automated-testing -> quality-validation -> git-change-review -> git-commit -> git-push -> mr-summary -> mr-create -> deployment -> execution-record。 - coding-rpc 生成修复计划。
- testing-rpc 运行类型检查、单测、构建和浏览器质量门。
- 需要 E2E/截图/网络验证时,Codex 按
harness-qualitySkill 自主选择 agent-browser 验证路径。 - 失败时进入 fixing / retesting。
- orchestrator 记录 Git change review、commit/push handoff 和 MR/PR handoff;真实提交由
pnpm workflow:git ...明确执行。 - workflow-core 评分并生成 MR Summary / Release Notes。
- deploy-rpc 记录部署和健康状态。
- run 记录写入
.harness/runs/<run-id>.json、task 记录写入.harness/tasks/<run-id>.json、Git 记录写入.harness/git/<run-id>.json和 docs。
常用验证命令:
pnpm typecheck
pnpm test
pnpm target:test
pnpm target:build
pnpm target:browser
pnpm verifypnpm verify 当前包含:
- TypeScript 类型检查。
- Vitest 单元测试。
- Mind Map Studio 生产构建。
- 无头浏览器质量门。
无头浏览器质量门位于 harness-worktree/scripts/browser-quality-check.mjs,会验证:
- 页面关键区域可见。
- 创建数据库文件、保存文件、DIFF sync。
- File ID 对 DIFF 同步可见。
- 多端打开、手动 pull、自动同步。
- 导入导出。
- 命令面板、undo / redo、快照。
- 节点拖拽、自动布局、折叠展开。
- Canvas 连线像素检查。
- 无限画布平移、滚轮缩放、reset。
- 桌面和移动端截图、横向溢出和可访问名称。
浏览器截图默认写到:
.harness/browser/关键文档:
docs/architecture.md:系统架构。docs/runbook.md:运行手册。docs/agent-journal.md:每轮执行摘要。docs/test-log.md:测试命令、失败、修复、重试记录。docs/generated-mr-summary.md:最近一次 MR Summary。docs/release-notes.md:最近一次 Release Notes。
结构化运行记录:
.harness/runs/<run-id>.json
.harness/tasks/<run-id>.json
.harness/git/<run-id>.json
.harness/logs/dev-services.log
.harness/mindmap/mindmaps.sqlite入口是根目录 AGENTS.md。Agent 不需要一次读完整仓库,而是按任务进入对应模块:
- 产品 UI:
apps/mindmap-editor/AGENTS.md - 产品后端:
services/mindmap-rpc/AGENTS.md - 编排服务:
services/orchestrator-rpc/AGENTS.md - 状态机:
packages/workflow-core/AGENTS.md - 测试闭环:
services/testing-rpc/AGENTS.md - 部署:
services/deploy-rpc/AGENTS.md - Skill / worktree:
harness-worktree/AGENTS.md - 文档:
docs/AGENTS.md
本地部署:
docker compose up --build如果端口冲突,可以覆盖宿主端口:
MINDMAP_EDITOR_PORT=5176 docker compose up --build健康检查:
pnpm health部署脚本:
pnpm deploy:local先确认 mindmap-rpc 在线:
curl http://localhost:4105/health日常启动请使用:
pnpm target:dev当前应用不再拦截 Cmd/Ctrl+R。如果仍异常,优先跑:
pnpm target:test
pnpm target:browser当前 DIFF payload 使用显式 mapId,页面会在 Files 和 Collaboration 面板显示 File ID。调试时先确认该 ID 与目标文件一致。
质量门在连接已有 http://localhost:5175 前端时会保持 mindmap-rpc 在线。若手动关闭了 RPC,重新运行:
pnpm target:rpc最近一次修复闭环:
HARNESS_BROWSER_TARGET_URL=http://localhost:5175 pnpm workflow:bugfix "修复保存文件失败、Cmd+R 误触创建节点、无限画布拖拽缩放缺失、协同 DIFF 缺少文件 ID 语义"结果:
- Workflow run:
run_mphzxyd4_bye74m1r pnpm verify:通过- 单测:69 passed
- 浏览器质量门:通过
- 最新修复提交:
dce4939 fix: stabilize mind map collaboration canvas
- 协同冲突检查和冲突解决 UI。
- 文件版本历史和操作时间线。
- 节点批量编辑。
- 更完整的数据库迁移机制。
- 更接近真实 Agent 执行的 patch 应用与回滚策略。