@andypai/harness-doctor

中文文档
2.0.0发布于 2026/07/18MITTypeScriptES Module构建来源已验证近 30 天下载 1.6万

扫描 repo 的代理- 健康准备状态: Docs 合同( AGENTS. md, docs/ system of record, spec contract), 供应链硬化, 和死代码 – 有准备积分, diff 模式, 以及 GitHub 动作

中文使用文档
文档目录9 节
  1. 它检查什么
  2. 快开始
  3. 为代理安装
  4. 在 CI 中运行
  5. 配置
  6. JSON合同
  7. 文档
  8. 捐款
  9. 承认

医生

决定性的检查 让你的经纪人保持健康.

网站 • 妇女 无 • 妇女 文档

编码代理只是和它运行的寄存器一样好. 如果公约 住在一个开发者的头, 如果没有进入点文件, 如果一个 存在是一个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/ 记录系统是:

捐款

虫子和想法受到欢迎——打开 问题。 。 。 .

麻省理工学院有执照.

承认

受到艾登·白的反应医生的启发——我很喜欢它,想要一个类似的系统 准备回波的牵引工程 健康医生是一个独立项目 并且不附属于或得到反应医生或其作者的认可.

版本与发布记录

@andypai/harness-doctor 共发布 5 个版本,首次发布于 2026/06/11;过去 12 个月发布了 5 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.0.0latest2026/07/183 个月前
1.0.02026/07/133 个月前
0.3.02026/07/074 个月前
0.2.02026/06/114 个月前
0.1.02026/06/114 个月前

关于 @andypai/harness-doctor 的常见问题

@andypai/harness-doctor 是什么?

扫描 repo 的代理- 健康准备状态: Docs 合同( AGENTS. md, docs/ system of record, spec contract), 供应链硬化, 和死代码 – 有准备积分, diff 模式, 以及 GitHub 动作

如何安装 @andypai/harness-doctor?

在项目目录运行 npm install @andypai/harness-doctor,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 harness-doctor,可以用 npx harness-doctor 直接运行。

@andypai/harness-doctor 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@andypai/harness-doctor 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@andypai/harness-doctor 可以商用吗?

@andypai/harness-doctor 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@andypai/harness-doctor 的下载量有多少?

根据 npm 官方下载统计,@andypai/harness-doctor 在 2026/10/06 – 2026/11/04 这 30 天内被下载 16,197 次,日均约 540 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@andypai/harness-doctor 还在维护吗?

最新版本 2.0.0 发布于 2026/07/18(3 个月前);至今共发布 5 个版本,其中过去 12 个月发布了 5 个;首次发布于 2026/06/11。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。