医生
决定性的检查 让你的经纪人保持健康.
编码代理只是和它运行的寄存器一样好. 如果公约 住在一个开发者的头, 如果没有进入点文件, 如果一个 存在是一个600行的文本壁——每个代理从零开始和猜测. 医生扫描可以阻止它的结构,报告什么 缺少, 并计分 0–100 这样您就可以观看它改善 .
这是框架不可知的,而且完全离线。 永远是同一个仓库 产生相同的诊断 和相同的分数: 没有模型呼叫, 没有网络, 没什么好说的.
它检查什么
- 结构检查 从磁盘上读取您的存储器——其文件、版式和
医生。 是否有特工进入点? 是一张短地图还是一张长相
手动? 有没有一个
docs/目录,条目点是否实际点 进入它? 您的pnpm设置硬化 对于供应链攻击? 这些 检查是Harness医生如何解释 绳子本身,而不是代码 内在的. - 死码分析 找到未用文件、 未用导出、 未用 依赖性和循环进口——误导代理人阅读的十字架 你的密码库.
每一个发现都有一个一行解释 什么是错的和混凝土 fix -- -- 由人阅读或直接交给编码代理人.
快开始
需要1.3.14号或更新的.
从任何工程的根 :
bunx --bun @andypai/harness-doctor@latest
你会得到审计和分数 添加 --verbose 以查看文件的每个查找
和行号.
在不进行任何检查的情况下检查确定性指挥表面:
bunx --bun @andypai/harness-doctor@latest signals
此打印的信号菜单为 JSON: 从根和
工作空间软件包, .github/workflows/*.yml|*.yaml run: 命令分组
工作流程/工作, Makefile目标, 和简单的食谱。 发现只读取文件; 它
不执行验证命令.
为代理安装
医生进入你经纪人的工作流程 读取发现 修正 并避免在下一个变化上滑动:
bunx --bun @andypai/harness-doctor@latest install
与克洛德代码(Claude Code),Cursor,Codex,OpenCode等合作.
在 CI 中运行
扫描每个拉动请求, 并留下内含的发现 :
name: Harness Doctor
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
permissions:
contents: read
pull-requests: write
issues: write
jobs:
harness-doctor:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: abpai/harness-doctor@v1
硬化的CI,针 @v1 全力以赴的SHA 并让依赖或革新
撞起来.
配置
放下一个 harness.config.ts 在您的项目根。 医官载了第一个
匹配此顺序的配置 : harness.config.ts, (中文(简体) ), .mts, (中文(简体) ), .cts, (中文(简体) ), .js, (中文(简体) ),
.mjs, (中文(简体) ), .cjs, (中文(简体) ), .json, (中文(简体) ), .jsonc; 或 一个 harnessDoctor 对象在
package.json。 。 。 .
// harness.config.ts
import type { HarnessDoctorConfig } from "@andypai/harness-doctor/api";
export default {
deadCode: false,
docsContract: true,
baselineCheck: true,
rules: {
"harness-doctor/docs-structure/spec-contract-exists": "error",
"knip/unused-file": "off",
},
} satisfies HarnessDoctorConfig;
设定 docsContract: true 当一个 repo 选择了 Harness 文件结构时
并且应该保持持久 docs/todos/INDEX.md 甚至在打开待办事宜前队列
规格存在。 设定 deadCode: false 跳过heuristic的死码家族
首先运行; 死码诊断有用, 但动态加载的固定装置可以
是假阳性。 设定 baselineCheck: true 接受行为后
因此,当地运行和CI需要库存和分类账。 这个
外部 harness 技能插件 创建
这些文物通过 /harness baseline编辑
--baseline-check 旗帜仍然可供一次性执行.
死码分析将捆绑的克尼普CLI作为孤立子进程运行. 克尼普语Name
自动读取拥有的仓库 knip.json, (中文(简体) ), knip.jsonc, (中文(简体) ), .knip.json, (中文(简体) ),
.knip.jsonc, (中文(简体) ), knip.js, (中文(简体) ), knip.ts, (中文(简体) ), knip.config.js, (中文(简体) ), knip.config.ts,或
package.json#knip; 使用这个
动态切入点、生成代码、框架插件的配置
工作空间布局。 Knip 配置提示会传输到 stderr 。 节奏
医生报告Knip的发现是 knip/<rule> 重度键和
压制配置. 这是前一个破旧的重命名
deslop/<rule> 名称空间.
配置形状 :
interface HarnessDoctorConfig {
$schema?: string;
deadCode?: boolean;
docsContract?: boolean;
baselineCheck?: boolean;
verbose?: boolean;
warnings?: boolean;
diff?: boolean | string;
failOn?: "error" | "warning" | "none";
share?: boolean;
noScore?: boolean;
rootDir?: string;
respectInlineDisables?: boolean;
ignore?: {
rules?: string[];
files?: string[];
tags?: string[];
overrides?: Array<{ files: string[]; rules?: string[] }>;
};
surfaces?: Partial<
Record<
"cli" | "prComment" | "score" | "ciFailure",
{
includeTags?: string[];
excludeTags?: string[];
includeCategories?: string[];
excludeCategories?: string[];
includeRules?: string[];
excludeRules?: string[];
}
>
>;
rules?: Record<string, "off" | "warn" | "error">;
categories?: Record<
"Security" | "Bugs" | "Performance" | "Accessibility" | "Maintainability",
"off" | "warn" | "error"
>;
}
规则密钥在 rules, (中文(简体) ), ignore.rules, (中文(简体) ), surfaces.*.includeRules,以及
surfaces.*.excludeRules 必须是插件前缀。 使用
harness-doctor/docs-structure/<rule> 用于文件结构检查,
harness-doctor/require-pnpm-hardening 用来硬化,和
knip/<rule> 为死码检查。 譬如说,
"docs-structure/spec-contract-exists": "off" 不是一个有效的覆盖密钥;
使用情况 "harness-doctor/docs-structure/spec-contract-exists": "off"。 。 。 .
JSON合同
--json 以 schemaVersion: 1。每个发现都是
诊断方法 filePath, (中文(简体) ), plugin, (中文(简体) ), rule, (中文(简体) ), severity, (中文(简体) ), message, (中文(简体) ), help, (中文(简体) ),
line, (中文(简体) ), column,以及 category消费者应取消关键行为
plugin/rule 财务报告和审定财务报表 schemaVersion而不是说流言 报告还包括最高级别
signals,同样的决定性命令菜单 harness-doctor signals。 。 。 .
文件结构规则
harness-doctor/docs-structure/proof-menu-command-exists 核查
docs/SPEC_CONTRACT.md (原始内容存档于2017-10-21). proof-menu table still. 内容 Validation command
单元格只必须包含反链条命令,每个命令必须解决
切入到已存在的软件包脚本、 Makefile 目标, 或仅在其中发现的食谱
信号菜单.
文档
指南 docs/ 记录系统是:
- 文档/README.md - 从这里开始.
- 如何写支票 ——作者结构 检查.
- 检查修补的食谱 ——代理人如何补救 每一个结构发现.
- 文件索引 - 完整的文件地图.
捐款
虫子和想法受到欢迎——打开 问题。 。 。 .
麻省理工学院有执照.
承认
受到艾登·白的反应医生的启发——我很喜欢它,想要一个类似的系统 准备回波的牵引工程 健康医生是一个独立项目 并且不附属于或得到反应医生或其作者的认可.