Harness Engineering MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Harness Engineering MCPInitialize engineering governance for the current project."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Harness Engineering MCP
Engineering Harness as an MCP server + CLI · Cross-IDE engineering governance · TypeScript / Node 20+
harness-engineering-mcp 把一套工程治理基线(项目骨架 + 文档 + 门禁脚本 + 任务路由 + Gate Review + 升档剧本)包成一个可被任何 AI IDE 共用的 MCP server。
7 个 MCP 工具:
harness_init·harness_check·harness_route_task·harness_load_skill·harness_gate_review·harness_upgrade_mode·harness_uninstall4 类 MCP 资源:
harness://spec/*·harness://skills/*·harness://rules/*·harness://templates/*(外加harness://config/schema与harness://stack-adapters/*)跨平台 CLI:
harness init·harness check·harness route·harness upgrade·harness list·harness mcp·harness uninstall一份配置即可同时挂载到 Cursor / Claude Code / Codex CLI 三家 IDE
目录
Related MCP server: MCP Prompt Library
1. 安装
# 全局安装(推荐:装一次到处用、IDE 接入零超时)
npm install -g harness-engineering-mcp
# 或在项目里直接调用,不全局安装(≥ 0.2.1 起 npx 包名直调也能用)
npx -y harness-engineering-mcp@latest init # CLI 简写
npx -y -p harness-engineering-mcp@latest harness init # CLI 标准写法
npx -y -p harness-engineering-mcp@latest harness-mcp # 起 MCP server安装后同时提供 4 个 bin(后两个是 0.2.1 起新增的同义别名,方便记忆/避免凭直觉踩坑):
二进制 | 作用 |
| CLI 主入口(init/check/route/upgrade/list/mcp/uninstall) |
| 启动 MCP server(IDE 自动调起,一般无需手工运行) |
|
|
|
|
Node 版本要求:
>= 20。一句话记忆:全局安装后用裸命令
harness/harness-mcp;不全局安装就用npx -y -p harness-engineering-mcp@latest <bin>或 0.2.1 起的npx -y harness-engineering-mcp@latest <subcmd>。💡 0.3.0 起已彻底打包零依赖:发布包是单个自包含 tarball,无任何运行时依赖。npx 首次冷启动 < 3 秒,不再需要预热,配置一次即可直接接入 IDE。
2. 5 分钟上手(复制粘贴即跑通)
下面这一整段 从空仓库到 harness 全绿 一气呵成。每条命令下方用 ↳ 标的是预期输出片段——能对上就是装对了。
Step 1 · 准备一个空 demo 项目
mkdir hello-harness && cd hello-harness
git init
npm init -y
npm pkg set scripts.test='node -e "process.exit(0)"'
mkdir test && echo "// placeholder" > test/sanity.test.js
echo "node_modules/" > .gitignore
echo ".env" >> .gitignore
echo "dist/" >> .gitignore预期:当前目录下有 package.json + test/sanity.test.js + .gitignore。
Step 2 · 接入 Harness(生成 .harness/ 所有产物)
harness init --mode=solo --stack=node-typescript --type=library --name=hello-harness预期输出 ↳
harness_init: completed
- created .harness/config.json (1234 bytes)
- created .harness/baseline.json (412 bytes)
- created .harness/scripts/engineering-check.ps1 (123 bytes)
- created .harness/scripts/engineering-check.sh (98 bytes)
- created .harness/engineering-harness.md (567 bytes)
- created .harness/adr/0001-engineering-harness-baseline.md (...)
- created .harness/features/INDEX.md (...)
- created .harness/features/_template/01_REQUIREMENT_ANALYSIS.md (...)
... 7 个阶段模板 ...
- created .github/pull_request_template.md (...)
Next steps:
- 运行 harness_check 跑首次门禁
- 查看 .harness/engineering-harness.md 熟悉项目 SSOT
- 如团队规模发生变化可运行 harness_upgrade_mode 升档文件树这时候是:
hello-harness/
├── .harness/
│ ├── config.json
│ ├── baseline.json
│ ├── engineering-harness.md ← 项目 SSOT
│ ├── adr/0001-engineering-harness-baseline.md
│ ├── features/INDEX.md + _template/
│ └── scripts/engineering-check.{ps1,sh}
├── .github/pull_request_template.md
├── .gitignore
├── package.json
└── test/sanity.test.jsStep 3 · 跑首次门禁
harness check预期输出 ↳
Harness Check: PASS
PASS 13 · WARN 1 · FAIL 0 · 178ms
✓ config.exists .harness/config.json 存在
✓ config.valid mode=solo stack=node-typescript
✓ structure.ssot SSOT .harness/engineering-harness.md 存在
⚠ structure.adr .harness/adr/ 下 1 条 ADR(baseline)
✓ structure.features features 任务看板存在
✓ secrets.envfile 未在仓库中发现 .env 文件
✓ secrets.gitignore .gitignore 包含关键排除项
✓ tests.directory 测试目录 test 存在
✓ tests.command npm test 已配置
✓ baseline.exists .harness/baseline.json 存在
✓ baseline.valid baseline version=1.0
✓ docs.readme README.md 存在
✓ quality.coverage 未设置覆盖率基线,跳过
✓ quality.pr_size 变更 0 行 / 0 文件,在限制内(README.md 没生成所以 docs.readme 会 WARN?实际是 npm init -y 默认不生成 README——如果你的 npm 版本生成了就是 PASS。WARN 也算上线。)
Step 4 · 路由一句话需求
harness route "用户列表加一个按状态筛选的下拉框"预期输出 ↳
[route] task = "用户列表加一个按状态筛选的下拉框"
skill: dev-flow-oneliner-fe
skill_uri: harness://skills/dev-flow-oneliner-fe
weight: 一句话需求
modifiers: [M2]
forced_upgrade: null
suggested_next_tools: [harness_load_skill, harness_check]
efficiency_hints:
- 「列表 / 筛选」识别为 UI 范畴,可直接用 dev-flow-oneliner-fe 切片实现
- 提交前必跑 harness check --strict
- skill / spec 走 harness:// URI 引用,不要复制粘贴到 prompt 里
- 短回复 + 表格优于散文Step 5 · 强制升档检测(可选验证)
harness route "后端加张订单表"预期输出 ↳
skill: dev-flow-oneliner-be
modifiers: [M4]
forced_upgrade:
to: dev-flow-doc-be
reason: 涉及数据库 schema 变更,须走完整 PRD + 迁移脚本 + 回滚 SQL 流程→ "加张表" 命中 M4 modifier,自动从轻量 oneliner 升级到 doc-be 完整流程,这是 harness 防止"周五顺手加表周一线上回不来"的核心机制。
Step 6 · (可选)真实跑测试 + commit
harness check --strict --run-tests
git add -A && git commit -m "chore: harness baseline"预期输出 ↳
Harness Check: PASS
PASS 14 · WARN 0 · FAIL 0 · 1240ms
✓ tests.exec npm test 成功 (exit=0)
[main (root-commit) abc1234] chore: harness baseline
N files changed, ... insertions(+)✅ 5 分钟全跑通 = harness 装好可用。
完整真实场景(新项目接入 / AI 路由 / DB 升级触发 / 团队升档 / CI 集成)→
docs/USAGE.mdMCP 装好后日常怎么用(自然语言对话模板 / 开场白 / 7 工具不需记忆映射 / 资源 URI 速查)→
docs/IDE_DAILY_USAGE.md不再想用 harness 了怎么完整清除 →
harness uninstall --dry-run预览,再harness uninstall执行。CHANGELOG.md和.github/*因外部约定保留
3. 核心概念
3.1 模式(mode)
mode | 适用规模 | 默认开启 |
| 单人 / 1 person | trunk 分支、基础 secrets 扫描 |
| 2–4 人 | + CHANGELOG、PR 模板、code review 流程 |
| 5–15 人 | + CODEOWNERS、On-call、SLO、SCA |
| 16+ 人 / 跨团队 | + DORA、RFC、SBOM、合规附件 |
升档零成本:harness upgrade --to=mid-team 自动累加缺失的增量文件,已有文件原样保留。
3.2 栈(stack)
stack | 检测信号 | 测试命令 |
|
|
|
|
|
|
|
|
|
|
| (计划中) |
| 默认兜底 | 用户自定义 |
3.3 项目类型(project_type)
backend-service · library · cli · frontend-spa
3.4 任务路由 modifiers
tag | 含义 | 触发关键词示例 |
| 有设计稿 |
|
| UI / 无设计稿 |
|
| 鉴权 / 多租户 |
|
| DB schema 变更 |
|
| 联调 / 端到端 |
|
modifiers 与 forced_upgrade.reason 一起,决定推荐 skill(dev-flow-oneliner-* ↔ dev-flow-doc-*)。
4. MCP 工具详解
所有工具的输入输出契约都对应
src/types/harness.ts,IDE 客户端会自动加载 JSON Schema 用于参数校验。
4.1 harness_init · 项目初始化
扫描项目并生成 Harness 个性化文件。
输入
字段 | 类型 | 必填 | 说明 |
| string | ✅ | 项目绝对路径 |
|
| 缺省时由扫描器建议 | |
|
| 缺省时按文件签名识别 | |
|
| ||
| string | 缺省时从 | |
|
|
| |
|
| 默认 | |
|
| ||
| boolean | 仅预览不写盘 | |
| boolean | 默认 false。设 true 时强制按模板重新生成已存在文件(会覆盖你手写的 INDEX.md / ADR / config 自定义内容) |
输出
{
"status": "completed", // ready | needs_input | completed | dry_run
"detected": { "stack": "...", "project_type": "...", "evidence": [...] },
"ask_user": [], // status=needs_input 时告诉 AI 还要问什么
"generated_files": [
{ "path": ".harness/config.json", "action": "created", "bytes": 1024 }
],
"next_steps": ["运行 harness check 校验首次门禁"]
}示例
harness init --mode=small-team --stack=java-spring --type=backend-service --name=order-api生成 6 个核心文件:.harness/config.json · .harness/engineering-harness.md · .harness/scripts/engineering-check.{ps1,sh} · .harness/adr/0001-engineering-harness-baseline.md · .harness/baseline.json · .harness/features/INDEX.md。
4.2 harness_check · 工程门禁
跨平台的 engineering-check.ps1 替代品。
输入
字段 | 类型 | 默认 | 说明 |
| string | — | 必填 |
|
|
| |
| boolean | false | WARN 也升级为 FAIL(等价 ps1 |
|
|
| |
| boolean | false | 真实执行 |
| number | 600000 | 单次测试命令超时 |
输出结构(每条 result)
{
"category": "config",
"check_id": "config.exists",
"status": "PASS", // PASS | WARN | FAIL
"message": ".harness/config.json 存在",
"suggestion": "...", // 可选
"file": "...", "line": 12 // 可选
}整体 status 计算规则:
任一 FAIL → FAIL(exitCode=1)
strict=true且有 WARN → FAIL否则有 WARN → WARN
都没问题 → PASS
check_id 全集(ps1 兼容空间,详见 docs/M2_PS1_COMPATIBILITY.md)
config.exists · config.valid
structure.ssot · structure.adr · structure.features
secrets.envfile
tests.directory · tests.command · tests.exec (run_tests=true 时才出现)
baseline.exists · baseline.valid
docs.readme4.3 harness_route_task · 任务路由
一句话需求 → 推荐 skill + 产物清单 + 强制升级判定。
输入
字段 | 类型 | 必填 | 说明 |
| string | ✅ | 一句话需求 |
| string | 项目根(可选) | |
|
| 强制指定开发范围 | |
| boolean | 是否带 PRD | |
| boolean | 是否带原型 |
输出
{
"skill": "dev-flow-oneliner-fe",
"skill_uri": "harness://skills/dev-flow-oneliner-fe",
"weight": "一句话需求",
"deliverables": ["MINI_PRD", "IMPACT_ANALYSIS", "API_CONTRACT(if needed)"],
"forced_upgrade": { "to": "dev-flow-doc-fe", "reason": "涉及数据库 schema 变更" },
"modifiers": ["M2", "M4"],
"suggested_next_tools": ["harness_load_skill", "harness_check"]
}示例
harness route "后端新增订单表和查询接口"
# skill: dev-flow-oneliner-be
# forced_upgrade: dev-flow-doc-be · 涉及数据库 schema 变更
# modifiers: [M4]4.4 harness_load_skill · 加载技能正文
输入 | 输出 |
|
|
示例
harness list skills # 看所有技能
node dist/cli.js mcp # 启动 MCP 由 IDE 调用 harness_load_skill技能总集见 assets/skills/*/SKILL.md,覆盖 dev-flow 全 13 个 + bugfix/refactor/perf/third-party/brainstorming 等。
4.5 harness_gate_review · 闸门评审
生成或检查 .harness/features/<name>/03_GATE_REVIEW.md。
输入
字段 | 类型 | 必填 | 说明 |
| string | ✅ | |
| string | ✅ | 在 |
|
| 默认 |
输出
{
"status": "generated" | "passed" | "blocked",
"file_path": ".harness/features/search-v2/03_GATE_REVIEW.md",
"blockers": ["缺少回滚 SQL", "鉴权策略缺失"]
}status=passed 仅在两个条件同时满足时返回:
文件中无 BLOCKER bullet 也无 B-N 表行
结论一节的
[x] 通过已勾选
示例
# 生成
harness route "为 search-v2 做闸门评审"
# 然后 AI 调用 harness_gate_review action=generate feature_name=search-v2
# 检查
harness_gate_review cwd=$(pwd) feature_name=search-v2 action=check4.6 harness_uninstall · 清除 Harness 产物
从项目里清除 Engineering Harness 全部产物(递归删除 .harness/ 目录)。
输入
字段 | 类型 | 必填 | 说明 |
| string | ✅ | 项目绝对路径 |
| boolean | 仅列出将删除的文件,不动盘 | |
| boolean | 清空 |
输出
{
"status": "completed" | "dry_run" | "not_found",
"removed": [".harness/config.json", ".harness/features/INDEX.md", ...],
"kept": ["CHANGELOG.md", ".github/CODEOWNERS"],
"next_steps": ["..."]
}kept 列出因外部工具约定(npm/GitHub)保留的 harness 相关文件,需要手工删除。
4.7 harness_upgrade_mode · 模式升档
零成本从 solo → small-team → mid-team → org 累积升档。
生成文件清单(累积)
目标 mode | 新增文件 |
|
|
|
|
|
|
已存在的文件保留原内容并在
generated_files[].action中标记为skipped,永不覆盖。
示例
harness upgrade --to=mid-team
# from=solo to=mid-team
# 生成 5 个新文件,跳过 1 个已存在5. MCP 资源详解
资源通过 harness:// URI 暴露,AI 可直接通过 IDE 的资源面板加载。
URI | 说明 |
| spec 文件索引(含 frontmatter) |
| 单个 spec 文件正文 |
| 所有 skill 的 JSON 元数据列表 |
| 单个 SKILL.md 正文 |
|
|
| 单条规则 markdown |
| 模板清单 |
| 单模板文件正文 |
|
|
| 单个 stack 适配指南(java-spring / node-typescript / python) |
6. CLI 命令参考
harness init [...]
flag | 说明 |
| 项目根,默认当前目录 |
|
|
|
|
|
|
| 项目名 |
| 仅打印,不写盘 |
| 强制按模板重新生成所有 harness 文件(覆盖已有自定义内容;不指定时默认安全保留) |
⚠️
--force会覆盖.harness/features/INDEX.md等可能含用户填入任务的文件。重新生成前务必 git commit 一次。
harness check [...]
flag | 说明 |
| 项目根 |
|
|
| WARN 升 FAIL |
| 输出 JSON |
| 真实跑 |
| 单次测试命令超时(默认 600000 = 10 分钟) |
harness route <task> [...]
flag | 说明 |
第一个位置参数 | 一句话需求 |
| 强制指定开发范围 |
| 标记带 PRD |
| 标记带原型项目 |
harness upgrade --to <mode>
flag | 说明 |
| 起点 mode,不填则从 |
| 目标 mode(必填) |
harness list <category>
子命令 | 说明 |
| 列出所有内置 skill |
| 列出 spec 文件 |
| 列出 .cursor/rules |
harness mcp
启动 MCP server(stdio)。IDE 自动调起,一般无需手工运行。
harness uninstall [...]
从项目里清除 Engineering Harness 全部产物(递归删除 .harness/ 目录)。CHANGELOG.md 和 .github/* 因外部工具约定保留不动。
flag | 说明 |
| 项目根 |
| 仅列出将被删除的文件,不实际删除 |
| 清空 |
| 跳过交互式确认(CI / 脚本场景使用) |
示例:
harness uninstall --dry-run # 先看要删什么
harness uninstall # 交互确认后删除
harness uninstall -y # 一键删除,不确认(脚本里用)
harness uninstall --keep-root-dir -y # 清空内容、保留 .harness/ 占位7. .harness/config.json 配置
完整 JSON Schema 见:
文件:
assets/spec/harness.config.schema.jsonMCP 资源:
harness://config/schemaTS 类型:
src/types/harness.ts: HarnessConfig
最小骨架
{
"version": "0.1",
"project": {
"name": "my-project",
"type": "backend-service",
"stack": "java-spring",
"mode": "solo"
},
"modules": {
"people": { "branch_strategy": "trunk", "pr_max_lines": 600 },
"process": { "gate_review_enabled": true },
"quality": { "coverage_baseline": 0.6 },
"release": { "semver": true, "changelog": true },
"security": { "secret_scan": true },
"knowledge":{ "feature_board": true }
}
}各模块开关随 mode 升档而自动增加,不需要手工逐个开。
8. IDE 接入
⚡ 0.3.0 起:零依赖、免预热、配置即跑
从 0.3.0 开始,发布包做了「全依赖打包」:
dependencies字段为空,dist/是自包含 bundle。新机器npx首次只下载一个 ~900 KB 的 tarball,全程无传递依赖解析,本机实测 install 2.2s + 启动 0.3s ≈ 总 2.5s(网络好时),稳低于 Cursor / Claude Code 的 MCP 握手超时(~10s)。你不再需要预热:直接把下面的 §8.2 / §8.3 / §8.4 配置粘进 IDE 即可。
老用户从 0.2.x 升级注意:
dependencies已清空,如果你之前用npm i -g全局装过,建议npm i -g harness-engineering-mcp@latest刷一次,去掉那 5 个用不到的间接依赖(ajv / globby / simple-git / yaml / zod)。团队 / 生产环境仍然推荐全局安装一次,让 IDE 配置最干净:
npm i -g harness-engineering-mcp@latest # 之后所有 IDE 的 mcp.json 都写:{ "command": "harness-mcp" }Mac 用户额外注意:如果你用 nvm 装的 node,GUI 启动的 IDE 拿不到 nvm 路径,需要按下面 §8.1 的 3 种方案任选一个绕开(不只我们这个 MCP,所有 npm-based MCP 在 Mac + nvm 环境下都有这个问题)。
8.1 🍎 Mac + nvm 用户必读:3 种修复(普适问题)
问题描述:在 Mac 上,如果你用 nvm 管理 node,从 Dock / Spotlight 启动的 Cursor / Claude Code 等 GUI 应用,由 launchd 拉起,launchd 不会读你的 ~/.zshrc,所以拿不到 nvm 注入的 PATH。结果就是 mcp.json 里写 "command": "npx" 时,IDE 找不到 npx 可执行,MCP server 起不来。
这是 npm-based MCP 生态的普适问题,跟我们这个包零关系。@modelcontextprotocol/server-filesystem / server-github / server-puppeteer 等官方 demo 也都受同样影响。Anthropic / Cursor 官方文档对此也有专门说明。
3 种修复(任选其一):
方案 A · 写绝对路径(最简单,1 分钟)
# 先在终端查出你当前 node / npx 的绝对路径
which node
which npx
# 例如可能输出:/Users/你/.nvm/versions/node/v22.13.0/bin/npx然后把 mcp.json 改为绝对路径:
{
"mcpServers": {
"harness-engineering": {
"command": "/Users/你/.nvm/versions/node/v22.13.0/bin/npx",
"args": ["-y", "-p", "harness-engineering-mcp@latest", "harness-mcp"]
}
}
}缺点:用
nvm use换了 node 版本后这条路径会失效,需要再改一次。
方案 B · 软链到 /usr/local/bin(一劳永逸,但要 sudo)
sudo ln -sf $(which node) /usr/local/bin/node
sudo ln -sf $(which npx) /usr/local/bin/npx/usr/local/bin 在 launchd 的默认 PATH 里,软链好之后 mcp.json 写 "command": "npx" 即可正常工作。
缺点:换 nvm 版本后要重 ln 一次。
方案 C · 改用 Homebrew node(最干净,推荐给重度使用 MCP 的用户)
# 如果你不重度使用 nvm 切版本,可以直接卸了换 Homebrew
brew install node
# 然后从 .zshrc / .bashrc 删除 nvm 的 export 行
# 最后重启终端 + 重启 CursorHomebrew 把 node 装在 /opt/homebrew/bin(Apple Silicon)或 /usr/local/bin(Intel),这两个目录都在 launchd 默认 PATH 里,所有 GUI 应用都能直接找到 node / npx,再也不会撞 PATH 问题。
缺点:失去 nvm 多版本切换能力。如果你日常要在多个 node 版本之间切,请走方案 A 或 B。
我们的建议
你的情况 | 推荐方案 |
平时不切 node 版本 | 方案 C(最干净) |
偶尔切版本,但不嫌每次重 ln | 方案 B |
经常切版本 | 方案 A(绝对路径写死,每次切版本同步改 mcp.json) |
验证修复
修完之后,从 Dock 重启 Cursor,在 MCP 面板里看到 harness-engineering 变绿即可。命令行可以这样独立验证 GUI 启动器能否找到 npx:
# 模拟 GUI 应用的 launchd 启动环境,看 npx 在不在 PATH
launchctl getenv PATH | tr ':' '\n' | grep -E "(nvm|node|local/bin|homebrew)"
# 然后试试 launchd 能不能直接执行 npx:
osascript -e 'do shell script "which npx"'如果 osascript 这一行能输出路径,说明 launchd 环境下 npx 可达,Cursor 一定能调起来。
8.2 Cursor
// ~/.cursor/mcp.json
// 推荐:不依赖全局安装,npx 自动从 npm 拉取
{
"mcpServers": {
"harness-engineering": {
"command": "npx",
"args": ["-y", "-p", "harness-engineering-mcp@latest", "harness-mcp"]
}
}
}已全局安装(npm i -g harness-engineering-mcp)后可简化为:
{
"mcpServers": {
"harness-engineering": { "command": "harness-mcp" }
}
}详细测试清单见 docs/M3_CURSOR_INTEGRATION.md。
8.3 Claude Code
// ~/.config/claude-code/mcp.json
{
"mcpServers": {
"harness-engineering": {
"type": "stdio",
"command": "npx",
"args": ["-y", "-p", "harness-engineering-mcp@latest", "harness-mcp"]
}
}
}已全局安装可简化为
"command": "harness-mcp"。Windows 上若 PATH 中找不到harness-mcp,请用上面的 npx 写法。
8.4 Codex CLI
# ~/.codex/config.toml
[[mcp_servers]]
name = "harness-engineering"
command = "npx"
args = ["-y", "-p", "harness-engineering-mcp@latest", "harness-mcp"]已全局安装可简化为
command = "harness-mcp"、删除args。
三 IDE 完整兼容性矩阵 + 联调脚本:docs/M4_MULTI_IDE_INTEGRATION.md §3-5。
9. 常见场景
9.1 给老项目接入 Harness
cd legacy-api
harness init # 走交互;扫描器会建议合理的 mode/stack
harness check # 看首次门禁结果
harness check --run-tests # 加上真实测试看是否绿9.2 接到一句话需求
AI / IDE 内部链路:
1. harness_route_task task="..." → 拿到 skill + modifiers + forced_upgrade
2. harness_load_skill name=<skill> → 读 SKILL.md
3. 按 SKILL.md 流程产出 .harness/features/<name>/01_..06_*.md
4. harness_gate_review action=check feature_name=<name> → 出 blocker
5. harness_check --run-tests → 最终绿灯后再提交9.3 团队扩张升档
# solo → small-team
harness upgrade --to=small-team
# small-team → mid-team
harness upgrade --to=mid-team9.4 CI 集成
# .github/workflows/harness.yml
- name: Harness Engineering check
run: |
npx -y -p harness-engineering-mcp@latest harness check --strict --run-tests --json > harness-report.json
- name: Upload report
if: always()
uses: actions/upload-artifact@v4
with:
name: harness-report
path: harness-report.json10. AI 高效执行 & 省 Token
与「能不能做」的边界规则(
AI_AGENT_CONTRACT)互补,这里规定「同一件事用多少 token 做完」。
harness_route_task 的返回值新增字段 efficiency_hints,会按 skill / modifiers / forced_upgrade 给出 3-6 条立即可照做的建议:
{
"skill": "dev-flow-oneliner-be",
"modifiers": ["M4"],
"forced_upgrade": { "to": "dev-flow-doc-be", "reason": "涉及数据库 schema 变更" },
"efficiency_hints": [
"spec/rule 走 harness:// URI 引用,不要复制粘贴到 prompt 里(保持 prompt cache 命中)",
"DB schema 变更:先出迁移脚本 + 回滚 SQL,再写代码,禁止跳过 ADR",
"强制升级到 dev-flow-doc-be:保留完整 PRD + 阶段文档,禁止偷工省略",
"回复 < 2000 字符,表格优于散文,独立工具调用一次性批发"
]
}10.1 完整契约 / Skill / 硬规则三件套
文件 | 角色 |
设计契约:核心铁律 6 条 + 三层缓存策略 + 量化 KPI 6 项 | |
执行 skill:6 阶段(入场自检 → 检索 → 阅读 → 修改 → 验证 → 输出 → 卡住时切模式)每阶段的清单 | |
Cursor 直接消费的 10 条不可违反硬规则 |
通过 MCP 资源 URI 即可访问:
harness://spec/file/AI_EFFICIENCY.md
harness://skills/ai-efficiency
harness://rules/16-ai-efficiency.mdc10.2 6 条核心铁律(速查)
先窄后宽:先
Grep精确字符串,再Readoffset/limit 切片,禁止上来读整个大文件切片不全读:单次 Read ≤ 500 行;> 500 行先 Grep 定位
并行批发:同一轮里 ≥ 2 个独立工具调用必须一次性发出
Subagent 隔离:检索 ≥ 3 文件 → 委派 subagent,主会话只保留摘要
短输出 + 结构化:每段回复 ≤ 2000 字符,表格优于散文
计划与执行分离:> 3 步任务先
writing-plans出明文计划再executing-plans
10.3 三层缓存策略
层 | 内容 | 加载方式 |
L0 · System / Spec | Harness spec / rules 全集 | MCP 资源 URI 一次挂载,永不抄进 prompt |
L1 · Project |
| MCP 工具按需读,跨任务复用 |
L2 · Task | 当前 feature 的 01-06 文档 + 本轮文件 + 本轮日志 | 一次性,结束即丢 |
让 L0 / L1 在 prompt cache 中常驻,每轮只让 L2 承担新增 token → cache 命中率 ≥ 60% 是合理基线。
10.4 量化 KPI
指标 | 期望 |
单次回复 ≤ 2000 字符 | ≥ 95% |
工具并行率 | ≥ 60% |
Grep+Glob vs Read 比 | ≥ 2:1 |
Plan-then-execute 命中率(> 3 步任务) | ≥ 80% |
Prompt cache 命中率 | ≥ 60% |
Subagent 委派率(> 3 文件检索) | ≥ 80% |
mid-team+ 项目建议把这些指标接进 .harness/DORA.md 旁的「AI Efficiency Board」每月跟进。
11. 开发与贡献
10.1 本地开发
git clone https://github.com/movebrickschi/harness-engineering-mcp.git
cd harness-engineering-mcp
npm install
npm run typecheck && npm run lint && npm test && npm run build10.2 项目脚本
脚本 | 作用 |
|
|
| ESLint |
| vitest(60+ 用例,约 1.6 秒) |
| 含覆盖率 |
| tsup 打包 dist/ |
| 预览 npm 发布包 |
10.3 目录速查
src/
cli/ CLI 命令(init/check/route/upgrade/list/mcp)
core/ 业务核心(scanner / renderer / checker / router / config)
mcp/ MCP server + tools/ + resources/
types/ 共享 TS 类型
assets/
spec/ Engineering Harness Spec(含 schema)
skills/ 内置 skills(dev-flow 全套 + 通用 18 个)
rules/ .cursor/rules 模板
templates/ init / features / pr / adr 模板
stack-adapters/ Java Spring · Node TS · Python 适配指南
test/ 12 个测试文件,57 用例
docs/ PROPOSAL / M2-M4 各阶段联调文档10.4 发布
完整流程见 docs/M4_MULTI_IDE_INTEGRATION.md §6。简版:
npm run typecheck && npm run lint && npm test && npm run build
npm pack --dry-run # 检查包内容
npm publish --access public # 需先 npm login
git tag v0.1.0 && git push origin v0.1.012. 更多文档索引
文档 | 用途 |
新手必读 · 5 个端到端场景走通(新项目接入 / AI 路由 / 强制升级 / 团队升档 / CI 集成) | |
MCP 装好后每天怎么用 · 自然语言对话模板 · 开场白 · 7 工具不需记忆映射 · 资源 URI 速查 · 故障排查 | |
vs Cursor rules / Claude memories / Aider 等同类工具对比 · 共存方案 · 决策树 | |
9 个 mermaid 流程时序图 · 涵盖全部 7 个 MCP 工具 + Modifier 检测 + 端到端链路 | |
v0.1 设计草案(API 契约 / 时序图 / 4 周 milestone) | |
与原 | |
Cursor MCP 接入步骤 + URI 测试清单 | |
Cursor / Claude Code / Codex CLI 兼容性矩阵 + npm 发布流程 | |
LLM 高效执行 & 省 token 契约(6 铁律 / 三层缓存 / 6 KPI) | |
L0–L4 规范优先级元规则与冲突裁决 | |
40 个 skill 的决策树 + 频率分布(资源 URI | |
版本变更记录 | |
Engineering Harness Spec 总览 |
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Governed app access for AI agents: 1,000+ apps & 12,000+ tools via Code Mode MCP.
Compliance frameworks (SOC 2, ISO 27001, CMMC, NIST, more) delivered to AI agents as MCP tools.
Human-in-the-loop review and approval for AI agents. Audit trail, approval policies, native MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAutomatically enforces team coding standards in AI-assisted development by providing an MCP server that AI assistants can query for language-specific standards, style guides, and best practices.-
- AlicenseNot gradedqualityDmaintenanceEnables AI-assisted development by providing a library of 110+ curated prompts, workflows, and coding standards, with MCP tools for prompt retrieval, composition, and multi-step workflow chains.5 npmMIT
- AlicenseNot gradedqualityAmaintenanceLocal governance layer for AI-assisted development, providing human authorization gates, policy enforcement, change approval workflow, and rollback capabilities through a universal MCP server.MIT
- AlicenseNot gradedqualityCmaintenanceTurns any AI coding agent or MCP client into a governed DevOps engineer by exposing policy-enforced tools for Kubernetes, Docker, Jira, Git/PR, CI/CD, AWS, Terraform, and incident response, with approvals, audit logging, secret redaction, and rollback enforced outside the model.1Apache 2.0