@netpilot/harness
v0.9.0
Published
默认面向 Codex、支持显式 Claude Code 适配的项目 Harness、Pack 与安全应用引擎。
Downloads
592
Readme
NetPilot Harness
为已有项目安装 Codex 可按 scope 读取的项目规则、文档骨架、路由和窄职责项目 Agent。Harness 只写当前项目,不调用 Skills 安装器,不安装用户级 Skills、Agents 或宿主配置,也不生成业务代码。
快速开始
要求 Node.js 满足 package.json 的 engines,并让当前目录成为真实、非 symlink/junction 的项目根:
npx @netpilot/harness@latest零参数命令会直接安装:
- 空项目(可仅含 Git 元数据)默认使用
fullstack-typescript; - 已有
.agents/project/project.yml时沿用已确认配置; - 其他已有项目先按证据严格识别:唯一匹配时自动选择,无法匹配时回退到默认
fullstack-typescript,多个候选同时匹配时才要求显式指定。
只预览使用:
npx @netpilot/harness@latest --dry-run需要确保选择 npm latest 时保留 @latest,以避免复用项目内同名旧依赖;不带版本的 npx 不保证远程最新。团队和 CI 应固定经过验证的完整 SemVer。
Recipe
| Recipe | 场景 | 选择方式 |
| --- | --- | --- |
| fullstack-typescript | pnpm monorepo;React、NestJS、Prisma/PostgreSQL、Redis、Docker、GitHub Actions | 空项目默认;符合证据时可自动识别;无匹配时零参数回退 |
| fullstack-typescript-modular | 上述组合加 Web/API 架构画像、HTTP 前后端契约、身份、关联、韧性和 migration 证据要求 | 必须显式指定 |
| fullstack-typescript-modular-shadcn | Boilerplate Golden Path;Vite/shadcn、Product Interface、contracts library、模块化 API 与数据库生命周期 | 必须显式指定 |
| frontend-react-typescript | 单仓 React + TypeScript 前端与浏览器验收 | 必须显式指定 |
| single-service-typescript | 单仓 NestJS 服务与数据、容器、CI 验证 | 符合证据时可自动识别 |
| single-service-python | 单仓 Python API;Hatchling、uv、Ruff、mypy、pytest,并在 uv 锁定环境验证 | 必须显式指定 |
模块化全栈、单前端或 Python 服务项目安装:
npx @netpilot/harness@latest --recipe fullstack-typescript-modular
npx @netpilot/harness@latest --recipe fullstack-typescript-modular-shadcn
npx @netpilot/harness@latest --recipe frontend-react-typescript
npx @netpilot/harness@latest --recipe single-service-pythonfullstack-typescript-modular 不生成应用源码。它为 apps/web 选择 web-feature-first、为 apps/api 选择 api-modular-monolith,并让 API 与 Web 共享 HTTP wire contract;REST 提供方和 Web Client 共同声明仓库级 check:contracts。身份、请求关联、服务韧性与 migration 检查同样只声明所需外部证据,Plan/Doctor 中的 missing 或 not-collected 不能解释为已通过。复杂示例见 examples/fullstack-typescript-modular。
fullstack-typescript-modular-shadcn 是独立 @netpilot/boilerplate 的治理画像,不改变空目录默认或既有 Ant Design Recipe。它只安装 Vite、shadcn、Product Interface、library、模块化 API、HTTP、关联、韧性、数据与项目 Agent 规则;React/NestJS 源码、基础组件、Playwright、Dockerfile 和 CI workflow 仍由 Boilerplate 生成。身份系统未实现前不选择 identity-security,避免把规则声明伪装成可用登录能力。示例见 examples/fullstack-typescript-modular-shadcn。
single-service-python 不预设 Web 框架、数据库、容器或 CI,也不会仅凭 pyproject.toml 推断 API 工作负载。它面向新项目或已经确认采用这套工具链的迁移;当前 Harness 不解析 Poetry/PDM、Black、Pyright、unittest 等替代 Python 工具配置,既有项目应先审查 --dry-run,不要把显式选择当成自动兼容证明。无法唯一识别但已经确认目标时,使用 --recipe <id>。
项目布局
安装结果集中在标准宿主目录中:
.agents/project/project.yml:项目选择与覆盖;.agents/project/harness.lock:受管文件所有权、摘要与恢复提交点;.agents/project/rules/、.agents/project/generated/:按 scope 加载的规则和路由;.codex/agents/:依赖当前项目上下文的 Codex Agent。
.agents/project 是项目配置和受管状态,不是缓存;应与项目一起纳入版本控制。通用 Skills 由独立的 @netpilot/skills 安装到 .agents/skills,Harness 不重复安装。
从旧 .netpilot 布局升级时,先预览并原子迁移目录,再更新受管内容:
npx @netpilot/harness@latest migrate-layout
npx @netpilot/harness@latest migrate-layout --write
npx @netpilot/harness@latest upgrade
npx @netpilot/harness@latest upgrade --write旧新布局并存、未知旧文件、人工修改过的受管内容或目标冲突都会阻断迁移,不会合并猜测。
项目级 Codex Agent
内置 Recipe 只选择 Codex。按 Recipe 可安装:
browser-acceptance:真实浏览器、截图、console 与 network 证据;fullstack-qa:React、NestJS、PostgreSQL 与 Redis 跨层 QA;container-ci-verifier:Docker、Compose 与 CI 静态或获准本地验证。
这些 Agent 不修改受版本控制文件,也不执行发布或部署。项目必须被 Codex 信任;若返回 unknown agent_type,更新 Codex、确认 trust 后新开任务重新加载。真实宿主验证见项目 Agent 宿主 Smoke。
常用命令
| 命令 | 作用 | 默认写入 |
| --- | --- | ---: |
| 无参数 | 沿用配置、自动识别或回退默认 Recipe 后安装 | 是 |
| --dry-run | 按相同选择规则预览 | 否 |
| doctor | 诊断配置、lock、入口、检查和事务 | 否 |
| migrate-layout [--write] | 预览或迁移旧项目布局 | 否 |
| upgrade [--write] | 预览或更新干净的受管内容 | 否 |
| setup --recipe <id> [--write] | 高级首装 | 否 |
| init --recipe <id> [--write] | 创建最小项目配置 | 否 |
| plan / apply [--write] | 计划或应用已有配置 | 否 |
| recover [--write] | 预览或执行事务恢复 | 否 |
| inspect / resolve / explain | 查看证据、解析结果或来源 | 否 |
| validate | 校验内置 Pack、Recipe 和示例 | 否 |
setup、init、apply、upgrade、migrate-layout 与 recover 只有显式 --write 才修改目标。基础配置示例见 examples/fullstack-typescript/project.yml,显式架构与契约示例见 examples/fullstack-typescript-modular/project.yml,Boilerplate 治理画像见 examples/fullstack-typescript-modular-shadcn/project.yml。
安全边界
- 写入前全量预检;冲突时零写入,不提供
--force。 - managed/generated 文件受 lock digest 保护;seed-once 文件交给项目维护。
- 事务使用持久 journal、互斥所有权与 lock-last 提交;中断后显式运行
recover。 upgrade只支持版本单调的 update/add,不执行删除、重命名、owner/mode 迁移或三方合并。- 不安装 Skills,不写用户 home,不修改 Codex trust,不执行任意 Pack 脚本、Git 回滚、发布或部署。
- Harness 只声明检查和证据要求,不会把“发现命令”报告为“验证通过”。
完整契约见安全应用设计。
开发与文档
npm ci
npm run verify架构说明 · Pack 编写规范 · Python 技术栈研究 · 项目 Agent 设计 · 生态边界 · 版本变化 · 安全政策
