loading…
Search for a command to run...
loading…
Enables AI coding environments to enforce engineering governance through MCP tools and resources for init, check, route, and review workflows.
Enables AI coding environments to enforce engineering governance through MCP tools and resources for init, check, route, and review workflows.
Engineering Harness as an MCP server + CLI · Cross-IDE engineering governance · TypeScript / Node 20+
harness-engineering-mcp 把一套工程治理基线(项目骨架 + 文档 + 门禁脚本 + 任务路由 + Gate Review + 升档剧本)包成一个可被任何 AI IDE 共用的 MCP server。
harness_init · harness_check · harness_route_task · harness_load_skill · harness_gate_review · harness_upgrade_mode · harness_uninstallharness://spec/* · harness://skills/* · harness://rules/* · harness://templates/*(外加 harness://config/schema 与 harness://stack-adapters/*)harness init · harness check · harness route · harness upgrade · harness list · harness mcp · harness uninstall# 全局安装(推荐:装一次到处用、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 起新增的同义别名,方便记忆/避免凭直觉踩坑):
| 二进制 | 作用 |
|---|---|
harness |
CLI 主入口(init/check/route/upgrade/list/mcp/uninstall) |
harness-mcp |
启动 MCP server(IDE 自动调起,一般无需手工运行) |
harness-engineering-mcp |
harness 的别名(=「包名直调」,兼容 npx <包名> 习惯) |
harness-mcp-server |
harness-mcp 的别名(兼容 @modelcontextprotocol/server-* 命名习惯) |
Node 版本要求:
>= 20。一句话记忆:全局安装后用裸命令
harness/harness-mcp;不全局安装就用npx -y -p harness-engineering-mcp@latest <bin>或 0.2.1 起的npx -y harness-engineering-mcp@latest <subcmd>。⚠️ 首次 npx 接入 IDE 前请先在终端跑一次预热(详见 §8 IDE 接入 顶部),否则 Cursor / Claude Code 的 MCP 启动超时大概率把你卡死在
Connection closed。
下面这一整段 从空仓库到 harness 全绿 一气呵成。每条命令下方用 ↳ 标的是预期输出片段——能对上就是装对了。
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。
.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.js
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 也算上线。)
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 里
- 短回复 + 表格优于散文
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 防止"周五顺手加表周一线上回不来"的核心机制。
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.md
- MCP 装好后日常怎么用(自然语言对话模板 / 开场白 / 7 工具不需记忆映射 / 资源 URI 速查)→ docs/IDE_DAILY_USAGE.md
- 不再想用 harness 了怎么完整清除 →
harness uninstall --dry-run预览,再harness uninstall执行。CHANGELOG.md和.github/*因外部约定保留
| mode | 适用规模 | 默认开启 |
|---|---|---|
solo |
单人 / 1 person | trunk 分支、基础 secrets 扫描 |
small-team |
2–4 人 | + CHANGELOG、PR 模板、code review 流程 |
mid-team |
5–15 人 | + CODEOWNERS、On-call、SLO、SCA |
org |
16+ 人 / 跨团队 | + DORA、RFC、SBOM、合规附件 |
升档零成本:harness upgrade --to=mid-team 自动累加缺失的增量文件,已有文件原样保留。
| stack | 检测信号 | 测试命令 |
|---|---|---|
java-spring |
pom.xml / build.gradle(.kts) |
mvn test -B / gradle test |
node-typescript |
package.json + scripts.test |
npm test --silent |
python |
pyproject.toml / requirements.txt |
pytest -q |
go |
go.mod |
(计划中) |
other |
默认兜底 | 用户自定义 |
backend-service · library · cli · frontend-spa
| tag | 含义 | 触发关键词示例 |
|---|---|---|
M1 |
有设计稿 | 带设计稿 figma mockup |
M2 |
UI / 无设计稿 | 没有设计稿 UI 页面 列表 组件 |
M3 |
鉴权 / 多租户 | 鉴权 权限 auth 登录 |
M4 |
DB schema 变更 | 数据库 schema 新增...表 migration |
M5 |
联调 / 端到端 | 只联调 联调 集成测试 |
modifiers 与 forced_upgrade.reason 一起,决定推荐 skill(dev-flow-oneliner-* ↔ dev-flow-doc-*)。
所有工具的输入输出契约都对应
src/types/harness.ts,IDE 客户端会自动加载 JSON Schema 用于参数校验。
harness_init · 项目初始化扫描项目并生成 Harness 个性化文件。
输入
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
cwd |
string | ✅ | 项目绝对路径 |
mode |
solo/small-team/mid-team/org |
缺省时由扫描器建议 | |
stack |
java-spring/node-typescript/python/go/other |
缺省时按文件签名识别 | |
project_type |
backend-service/library/cli/frontend-spa |
||
project_name |
string | 缺省时从 pom.xml / package.json / pyproject.toml 推断 |
|
ide |
cursor/claude-code/codex/... |
auto 自动检测 |
|
maturity_target |
L1..L4 |
默认 L1 |
|
compliance |
gdpr/pipl/iso27001/soc2/hipaa[] |
||
dry_run |
boolean | 仅预览不写盘 | |
force |
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。
harness_check · 工程门禁跨平台的 engineering-check.ps1 替代品。
输入
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
cwd |
string | — | 必填 |
categories |
config/structure/tests/secrets/baseline/docs/all[] |
["all"] |
|
strict |
boolean | false | WARN 也升级为 FAIL(等价 ps1 -Strict) |
output_format |
summary/detailed/json |
summary |
|
run_tests |
boolean | false | 真实执行 mvn/npm/pytest,结果落到 tests.exec |
test_timeout_ms |
number | 600000 | 单次测试命令超时 |
输出结构(每条 result)
{
"category": "config",
"check_id": "config.exists",
"status": "PASS", // PASS | WARN | FAIL
"message": ".harness/config.json 存在",
"suggestion": "...", // 可选
"file": "...", "line": 12 // 可选
}
整体 status 计算规则:
strict=true 且有 WARN → FAILcheck_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.readme
harness_route_task · 任务路由一句话需求 → 推荐 skill + 产物清单 + 强制升级判定。
输入
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
task |
string | ✅ | 一句话需求 |
cwd |
string | 项目根(可选) | |
context.scope |
frontend/backend/full-stack |
强制指定开发范围 | |
context.has_prd |
boolean | 是否带 PRD | |
context.has_prototype |
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]
harness_load_skill · 加载技能正文| 输入 | 输出 |
|---|---|
name:技能名(如 dev-flow-oneliner-fe) |
content(SKILL.md 正文)+ depends_on + related |
示例
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 等。
harness_gate_review · 闸门评审生成或检查 .harness/features/<name>/03_GATE_REVIEW.md。
输入
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
cwd |
string | ✅ | |
feature_name |
string | ✅ | 在 .harness/features/<name>/ 下落盘 |
action |
generate/check |
默认 generate |
输出
{
"status": "generated" | "passed" | "blocked",
"file_path": ".harness/features/search-v2/03_GATE_REVIEW.md",
"blockers": ["缺少回滚 SQL", "鉴权策略缺失"]
}
status=passed 仅在两个条件同时满足时返回:
[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=check
harness_uninstall · 清除 Harness 产物从项目里清除 Engineering Harness 全部产物(递归删除 .harness/ 目录)。
输入
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
cwd |
string | ✅ | 项目绝对路径 |
dry_run |
boolean | 仅列出将删除的文件,不动盘 | |
keep_root_dir |
boolean | 清空 .harness/ 内部但保留目录本身 |
输出
{
"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 相关文件,需要手工删除。
harness_upgrade_mode · 模式升档零成本从 solo → small-team → mid-team → org 累积升档。
生成文件清单(累积)
| 目标 mode | 新增文件 |
|---|---|
small-team |
CHANGELOG.md · .github/pull_request_template.md(init 已建则跳过) |
mid-team |
.github/CODEOWNERS · .harness/oncall.md · .harness/SLO.md |
org |
.harness/DORA.md · .harness/rfc/0000-template.md · .harness/SBOM.md · .harness/compliance/.gitkeep |
已存在的文件保留原内容并在
generated_files[].action中标记为skipped,永不覆盖。
示例
harness upgrade --to=mid-team
# from=solo to=mid-team
# 生成 5 个新文件,跳过 1 个已存在
资源通过 harness:// URI 暴露,AI 可直接通过 IDE 的资源面板加载。
| URI | 说明 |
|---|---|
harness://spec/index |
spec 文件索引(含 frontmatter) |
harness://spec/file/<filename> |
单个 spec 文件正文 |
harness://skills/index |
所有 skill 的 JSON 元数据列表 |
harness://skills/<name> |
单个 SKILL.md 正文 |
harness://rules/index |
.cursor/rules 全集索引 |
harness://rules/<filename> |
单条规则 markdown |
harness://templates/index |
模板清单 |
harness://templates/<path> |
单模板文件正文 |
harness://config/schema |
.harness/config.json 的 JSON Schema |
harness://stack-adapters/<stack> |
单个 stack 适配指南(java-spring / node-typescript / python) |
harness init [...]| flag | 说明 |
|---|---|
-C, --cwd <path> |
项目根,默认当前目录 |
--mode <mode> |
solo/small-team/mid-team/org |
--stack <stack> |
java-spring/node-typescript/python/go/other |
--type <type> |
backend-service/library/cli/frontend-spa |
--name <name> |
项目名 |
--dry-run |
仅打印,不写盘 |
--force |
强制按模板重新生成所有 harness 文件(覆盖已有自定义内容;不指定时默认安全保留) |
⚠️
--force会覆盖.harness/features/INDEX.md等可能含用户填入任务的文件。重新生成前务必 git commit 一次。
harness check [...]| flag | 说明 |
|---|---|
-C, --cwd <path> |
项目根 |
--categories <list> |
config,structure,tests,secrets,baseline,docs,all(逗号分隔) |
--strict |
WARN 升 FAIL |
--json |
输出 JSON |
--run-tests |
真实跑 mvn/npm/pytest,并把结果计入 tests.exec |
--test-timeout-ms <ms> |
单次测试命令超时(默认 600000 = 10 分钟) |
harness route <task> [...]| flag | 说明 |
|---|---|
| 第一个位置参数 | 一句话需求 |
--scope <fe/be/full> |
强制指定开发范围 |
--has-prd |
标记带 PRD |
--has-prototype |
标记带原型项目 |
harness upgrade --to <mode>| flag | 说明 |
|---|---|
--from <mode> |
起点 mode,不填则从 .harness/config.json 读取 |
--to <mode> |
目标 mode(必填) |
harness list <category>| 子命令 | 说明 |
|---|---|
harness list skills |
列出所有内置 skill |
harness list spec |
列出 spec 文件 |
harness list rules |
列出 .cursor/rules |
harness mcp启动 MCP server(stdio)。IDE 自动调起,一般无需手工运行。
harness uninstall [...]从项目里清除 Engineering Harness 全部产物(递归删除 .harness/ 目录)。CHANGELOG.md 和 .github/* 因外部工具约定保留不动。
| flag | 说明 |
|---|---|
-C, --cwd <path> |
项目根 |
--dry-run |
仅列出将被删除的文件,不实际删除 |
--keep-root-dir |
清空 .harness/ 内部内容但保留目录本身(便于 git 追踪) |
-y, --yes |
跳过交互式确认(CI / 脚本场景使用) |
示例:
harness uninstall --dry-run # 先看要删什么
harness uninstall # 交互确认后删除
harness uninstall -y # 一键删除,不确认(脚本里用)
harness uninstall --keep-root-dir -y # 清空内容、保留 .harness/ 占位
.harness/config.json 配置完整 JSON Schema 见:
assets/spec/harness.config.schema.jsonharness://config/schemasrc/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 升档而自动增加,不需要手工逐个开。
⚡ 首次接入前必读:冷启动可能超时
npx 在每台新机器上首次拉包 + 解 100+ 间接依赖耗时通常 5-30 秒,而 Cursor / Claude Code 对 MCP server 启动有默认超时(~5-10 秒)。一旦超时就会看到这种典型日志:
Connection failed: MCP error -32000: Connection closed首次接入前请先在该机器的终端跑一次预热,让 npx 把包和依赖都灌进本地 cache:
npx -y -p harness-engineering-mcp@latest harness-mcp # 看到下面这行就说明启动成功,按 Ctrl+C 退出即可: # [harness-mcp] started harness-engineering-mcp vX.Y.Z on stdio之后再回 IDE 接入,Cursor / Claude Code / Codex 都能秒起。
团队 / 生产环境强烈推荐:直接全局安装一次,IDE 配置写裸命令,启动开销 <100ms,不再受 npx 冷启动 / 网络 / cursor 启动超时影响:
npm i -g harness-engineering-mcp@latest # 之后所有 IDE 的 mcp.json 都写:{ "command": "harness-mcp" }Mac 用户额外注意:如果你用 nvm 装的 node,GUI 启动的 IDE 拿不到 nvm 路径,需把 mcp.json 的
command改为 npx / harness-mcp 的绝对路径(which npx/which harness-mcp查),或者干脆用 Homebrew 装 node。
// ~/.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。
// ~/.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 写法。
# ~/.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。
cd legacy-api
harness init # 走交互;扫描器会建议合理的 mode/stack
harness check # 看首次门禁结果
harness check --run-tests # 加上真实测试看是否绿
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 → 最终绿灯后再提交
# solo → small-team
harness upgrade --to=small-team
# small-team → mid-team
harness upgrade --to=mid-team
# .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.json
与「能不能做」的边界规则(
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 字符,表格优于散文,独立工具调用一次性批发"
]
}
| 文件 | 角色 |
|---|---|
| assets/spec/AI_EFFICIENCY.md | 设计契约:核心铁律 6 条 + 三层缓存策略 + 量化 KPI 6 项 |
| assets/skills/ai-efficiency/SKILL.md | 执行 skill:6 阶段(入场自检 → 检索 → 阅读 → 修改 → 验证 → 输出 → 卡住时切模式)每阶段的清单 |
| assets/rules/16-ai-efficiency.mdc | Cursor 直接消费的 10 条不可违反硬规则 |
通过 MCP 资源 URI 即可访问:
harness://spec/file/AI_EFFICIENCY.md
harness://skills/ai-efficiency
harness://rules/16-ai-efficiency.mdc
Grep 精确字符串,再 Read offset/limit 切片,禁止上来读整个大文件writing-plans 出明文计划再 executing-plans| 层 | 内容 | 加载方式 |
|---|---|---|
| L0 · System / Spec | Harness spec / rules 全集 | MCP 资源 URI 一次挂载,永不抄进 prompt |
| L1 · Project | .harness/config.json + SSOT + baseline |
MCP 工具按需读,跨任务复用 |
| L2 · Task | 当前 feature 的 01-06 文档 + 本轮文件 + 本轮日志 | 一次性,结束即丢 |
让 L0 / L1 在 prompt cache 中常驻,每轮只让 L2 承担新增 token → cache 命中率 ≥ 60% 是合理基线。
| 指标 | 期望 |
|---|---|
| 单次回复 ≤ 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」每月跟进。
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 build
| 脚本 | 作用 |
|---|---|
npm run typecheck |
tsc --noEmit |
npm run lint |
ESLint |
npm test |
vitest(60+ 用例,约 1.6 秒) |
npm run test:coverage |
含覆盖率 |
npm run build |
tsup 打包 dist/ |
npm pack --dry-run |
预览 npm 发布包 |
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 各阶段联调文档
完整流程见 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.0
| 文档 | 用途 |
|---|---|
| docs/USAGE.md | 新手必读 · 5 个端到端场景走通(新项目接入 / AI 路由 / 强制升级 / 团队升档 / CI 集成) |
| docs/IDE_DAILY_USAGE.md | MCP 装好后每天怎么用 · 自然语言对话模板 · 开场白 · 7 工具不需记忆映射 · 资源 URI 速查 · 故障排查 |
| docs/COMPARISON.md | vs Cursor rules / Claude memories / Aider 等同类工具对比 · 共存方案 · 决策树 |
| docs/EXECUTION_FLOW.md | 9 个 mermaid 流程时序图 · 涵盖全部 7 个 MCP 工具 + Modifier 检测 + 端到端链路 |
| docs/PROPOSAL.md | v0.1 设计草案(API 契约 / 时序图 / 4 周 milestone) |
| docs/M2_PS1_COMPATIBILITY.md | 与原 engineering-check.ps1 的等价对照表 + CI 迁移指南 |
| docs/M3_CURSOR_INTEGRATION.md | Cursor MCP 接入步骤 + URI 测试清单 |
| docs/M4_MULTI_IDE_INTEGRATION.md | Cursor / Claude Code / Codex CLI 兼容性矩阵 + npm 发布流程 |
| assets/spec/AI_EFFICIENCY.md | LLM 高效执行 & 省 token 契约(6 铁律 / 三层缓存 / 6 KPI) |
| assets/spec/PRIORITY_HIERARCHY.md | L0–L4 规范优先级元规则与冲突裁决 |
| assets/skills/INDEX.md | 40 个 skill 的决策树 + 频率分布(资源 URI harness://skills/_decision-tree) |
| CHANGELOG.md | 版本变更记录 |
| assets/spec/README.md | Engineering Harness Spec 总览 |
MIT
Run in your terminal:
claude mcp add harness-engineering-mcp -- npx