wifi-densepose-sar-harness 健康检查(doctor)命令深度解析:内核加载、MCP 接线、内存后端与宿主适配器的全链路验证
【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView
wifi-densepose-sar-harness 是服务于 coherent wideband RF tomography 研究 crate(即 wifi-densepose-sar,对应仓库文档 ADR-287-coherent-wideband-rf-tomography-crate)的 AI 编码助手 Harness。doctor是该 Harness 的安装健康检查命令:它以一次调用完成"内核能否加载、MCP 工具是否接线、内存后端是否可达、宿主适配器是否就位"四项验证,并以 PASS/FAIL 表格与进程退出码给出确定性结论。读完本文,你将掌握 doctor 命令的完整用法、其底层实现原理(Rust 编译 WASM 内核 + NAPI-RS 原生回退),以及如何用 Vitest 冒烟测试把安装检查固化为自动化回归。
一、doctor 命令在 Harness 中的定位
在 harness/wifi-densepose-sar/CLAUDE.md 的命令清单中,doctor 被定义为:
doctor— Health-check the harness: kernel load, MCP wiring, memory backend, host adapter.
它解决的是 Agent Harness 类工具最典型的"装好了但不知道有没有装对"问题:@metaharness/kernel是否成功解析到可运行的后端、@metaharness/host-claude-code宿主适配器是否注册成功、.claude/commands目录中的命令定义是否与 MCP 工具列表保持一致。CLAUDE.md 中特别指出,MCP 工具列表(mcp__wifi-densepose-sar-harness__*)正是从每个.claude/commands/<name>.md派生而来——因此 doctor 自身作为命令定义文件(doctor.md)的存在,本身就参与了 MCP 接线的构成。
二、命令定义原文:四项检查的验收标准
harness/wifi-densepose-sar/.claude/commands/doctor.md 是 doctor 命令的完整规格说明,原文定义了四道检查与一条退出码约定:
- 内核加载与版本匹配:
@metaharness/kernel能成功loadKernel(),且kernelInfo().version与 package.json 中声明的版本一致; - MCP 接线:MCP 服务器能够启动并列出其工具列表(即
.claude/commands/*.md派生出的mcp__wifi-densepose-sar-harness__*工具集); - 内存后端可达:kernel 内部的内存(memory)后端能够被访问——在 Harness 架构中,记忆与路由均由 kernel 托管,CLAUDE.md 明确说明"Memory and routing are handled by the kernel — you don't need to learn them",因此该检查本质上是内核健康度的延伸;
- 宿主适配器就位:配置的宿主适配器(本 Harness 为
@metaharness/host-claude-code)存在且可解析。
退出码契约:任一检查失败,进程必须以非零退出码结束(Exit non-zero if any check fails),从而让 doctor 可被脚本与 CI 可靠消费。
三、源码级实现:PASS/FAIL 表与退出码的落地
doctor 的实际实现位于 harness/wifi-densepose-sar/bin/cli.js。值得注意的是,该文件是刻意保持零构建步骤的纯 ESM JavaScript:通过npx wifi-densepose-sar-harness即可直接运行(npm run build仅在你扩展src/下的 TypeScript 时才需要)。核心代码如下:
async function doctor() { const kernel = await loadKernel(); const info = kernel.kernelInfo(); const checks = [ ['kernel loads', !!kernel], ['kernel reports a version', typeof info.version === 'string' && info.version.length > 0], ['kernel backend is native|wasm|js', ['native', 'wasm', 'js'].includes(kernel.backend)], ['host adapter has a name', typeof adapter?.name === 'string' && adapter.name.length > 0], ]; let ok = true; for (const [label, pass] of checks) { console.log(`${pass ? 'PASS' : 'FAIL'} ${label}`); if (!pass) ok = false; } console.log( ok ? `\n${HARNESS_NAME}: all checks passed (kernel ${info.version}, ${kernel.backend} backend, host ${adapter.name})` : `\n${HARNESS_NAME}: doctor found problems`, ); return ok ? 0 : 1; }从源码可以看到四个具体落点检查:
| 检查标签 | 判定条件 | 失败含义 |
|---|---|---|
kernel loads | loadKernel()返回值非空 | 内核 WASM/native 模块加载失败 |
kernel reports a version | kernelInfo().version是非空字符串 | 内核已加载但元信息缺失 |
kernel backend is native\|wasm\|js | kernel.backend属于['native','wasm','js'] | 内核后端状态异常(不属于任何已知后端) |
host adapter has a name | adapter.name是非空字符串 | 宿主适配器未正确解析 |
任何一项失败都会把ok置为false,最终返回退出码1;全部通过则打印all checks passed (kernel <version>, <backend> backend, host <adapter.name>)并返回0。这一实现与命令文档中的退出码契约完全一致,也与命令分发器(bin/cli.js)中"未知命令返回 2、已知命令正常分发"的错误码约定相互呼应。
对照说明:命令文档中的四项验收(内核版本匹配、MCP 工具列表、内存后端、宿主适配器)在 CLI 实现中落点为四项可机械判定的断言;其中"内存后端可达"与"MCP 接线"在实现层由kernel成功加载这一前提所覆盖(内核不可用则后两者必然不可达),这是从 bin/cli.js 的代码结构可以作出的合理推断。
四、逐项深挖:四项检查背后的架构原理
4.1 内核加载与版本:Rust 编译 WASM + NAPI-RS 原生回退
doctor 的第一项检查依赖@metaharness/kernel。根据 CLAUDE.md 的 Architecture 一节,这是一个Rust 编译的 WASM 模块,带 NAPI-RS 原生回退——同一份代码在所有平台上以一致行为运行,后端按native → wasm → js的优先级解析(README 中说明当前发布的 beta 使用 js 后端,并提示参见harness doctor的输出确认实际后端)。kernelInfo().version用于版本报告,kernel.backend用于标明当前生效的解析后端,两者共同构成"内核已就绪"的证据。
对应的初始化入口见 harness/wifi-densepose-sar/src/init.ts:init命令同样执行loadKernel()并打印内核版本、后端与宿主适配器名,随后提示"Runwifi-densepose-sar-harness doctorto verify the install"——init 完成引导,doctor 完成验证,形成闭环。
4.2 MCP 接线:命令文件即工具清单
CLAUDE.md 明确写道:"Each command below has a matching.claude/commands/<name>.mdguidance file — the MCP tool listing (mcp__wifi-densepose-sar-harness__*) is derived from these"。也就是说,MCP 工具列表不是手工维护的独立清单,而是从命令定义文件派生而来。doctor 检查中"命令文件存在且可解析"的意义正在于此:一个新 CLI 子命令在拥有对应.claude/commands/<name>.md之前,不能算完成接线。
4.3 内存后端:kernel 托管的记忆层
CLAUDE.md 的行为规则第二条是"Memory and routing are handled by the kernel — you don't need to learn them"。内存后端(memory backend)是 kernel 提供的记忆存储能力,Agent 无需直接接触;doctor 将其纳入检查范围,是为了确保托管记忆的底层通道在安装后即可用。由于该后端生命周期与 kernel 绑定,doctor 中"kernel loads"检查通过即可视为内存后端可达的前提得到满足。
4.4 宿主适配器:claude-code 驱动的桥接
本 Harness 随附的是claude-code 适配器(见 README.md 的 "This harness ships with theclaude-codeadapter"),对应 npm 依赖@metaharness/host-claude-code(package.json 中声明为^0.1.0)。doctor 检查adapter.name非空,即验证宿主桥接模块在运行时环境里被正确解析——这是后续所有 Agent 编排(architect → implementer → reviewer → test-writer)能够通过 MCP 工具与宿主对话的基础。
五、安装与运行:从零到 doctor 全绿
依据 README.md 的安装说明,完整流程为:
npm install -g wifi-densepose-sar-harness # 全局安装(发布在 npm,包名见 package.json 的 name 字段) wifi-densepose-sar-harness init # 引导:加载内核 + 宿主适配器并报告状态 wifi-densepose-sar-harness doctor # 健康检查:打印 PASS/FAIL 表若以仓库源码方式运行,可进入 harness/wifi-densepose-sar 目录执行npm install后,通过 package.json 中已声明的脚本(npm run doctor)或直接node ./bin/cli.js doctor运行。环境前提是 Node.js >= 20(见 package.json 的engines字段)。
doctor 的预期输出形态(成功时):
PASS kernel loads PASS kernel reports a version PASS kernel backend is native|wasm|js PASS host adapter has a name wifi-densepose-sar-harness: all checks passed (kernel 0.1.0, wasm backend, host claude-code)任一检查失败则对应行显示FAIL,末行变为wifi-densepose-sar-harness: doctor found problems,进程以退出码 1 结束。
六、把健康检查固化为自动化:Vitest 冒烟测试
doctor 的可脚本化退出码使其天然适合纳入测试。仓库自带的 harness/wifi-densepose-sar/tests/smoke.test.ts 以 Vitest 实现了安装冒烟测试,它"不是占位符"——真实引导 kernel 与宿主适配器:
- 断言
loadKernel()返回的内核版本为非空字符串; - 断言
kernel.backend属于['native', 'wasm', 'js']; - 断言宿主适配器
adapter.name非空; - 直接以
run(['doctor'])调用 CLI 分发器(bin/cli.js 将run导出以便测试免子进程驱动),断言退出码为0; - 反向断言:未知命令
run(['definitely-not-a-command'])必须返回非零。
也就是说,npm test(vitest run)失败,即代表npm install产出的 Harness 不可运行。这套测试与 doctor 命令构成双重保障:doctor 是运维时的即时体检,smoke test 是开发时的持续回归。
七、doctor 与兄弟命令:一次安装,全链路可用
doctor 验证的是"底座",而 Harness 的能力面由其余命令组成(均需在 doctor 全绿的前提下使用,其中route与flywheel需要先npm run build):
route <e0> <e1> <e2> <e3>:通过@metaharness/router做成本最优模型路由,把四轴任务嵌入(physicsExplanation / codeReview / numericalDebugging / docWriting,各取 0..1)映射到最便宜且预测质量达标(qualityBar: 0.8)的模型档位,实现见 harness/wifi-densepose-sar/src/router.ts;flywheel [generations]:运行@metaharness/flywheel的 propose → evaluate → gate → promote 自我改进演示环(Ed25519 签名 + 可独立重放),实现见 harness/wifi-densepose-sar/src/flywheel.ts;init:内核 + 宿主适配器引导;--version/--help:打印内核版本与全部子命令用法。
需要特别说明的是这两处与 doctor 相关的诚实性标注:src/router.ts顶部注明其候选示例是 SEED/示意数据而非实测 eval 日志,生产路由前需用真实(embedding → quality)数据替换;src/flywheel.ts则注明 Proposer 与 Evaluator 均为 SYNTHETIC 替身(无模型调用),真实运行需运营者自行接入真实 Proposer 与真实编码任务锚点套件。doctor 只保证安装与接线健康,不承诺路由决策或自我改进结论的真实性——两者边界清晰,这正是该 Harness 对数据来源诚实标注的体现。
八、故障排查:doctor 报告 FAIL 时如何定位
基于 bin/cli.js 的实现结构,可以给出如下排查路径(属于从代码结构得出的推断性建议):
kernel loadsFAIL:多为@metaharness/kernel未正确安装或其 WASM/native 构件与当前平台不匹配,优先检查npm install是否完整执行、node_modules 中该包是否可解析;kernel backend is native|wasm|jsFAIL:内核已加载但 backend 状态异常,通常意味着解析层返回了未知后端标识,需核对@metaharness/kernel版本(package.json 声明^0.1.0);host adapter has a nameFAIL:@metaharness/host-claude-code未解析,检查依赖是否安装、是否为 ESM 导入路径问题(cli.js 以import adapter from '@metaharness/host-claude-code'默认导入);- 版本不一致:命令文档要求
kernelInfo().version与 package.json 匹配,若升级内核依赖后版本号漂移,doctor 会通过"版本字符串非空"但无法证明与声明一致——这也是将 doctor 纳入 CI、配合 smoke test 一起回归的价值所在。
结语
doctor虽然只是一个几十行的命令,却集中体现了 wifi-densepose-sar-harness 的工程哲学:可验证、可脚本化、可自动化。它以四道确定性检查覆盖了"内核(Rust WASM/native/js 三层解析)、MCP 接线(命令文件派生工具清单)、内存后端(kernel 托管)、宿主适配器(claude-code 桥接)"这四根支撑 Agent 编排的支柱,用统一退出码把体检结果交给脚本与测试。当你在这套 Harness 上运行doctor、route、flywheel之前,先让它给你一张全绿的 PASS 表,是最廉价也最可靠的起点。
延伸阅读:命令规格 doctor.md 与实现 bin/cli.js、引导入口 init.ts、行为规则与架构说明 CLAUDE.md、安装与命令总览 README.md、冒烟测试 smoke.test.ts、依赖与脚本声明 package.json,以及其服务对象 ADR 文档 ADR-287-coherent-wideband-rf-tomography-crate。
【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考