harness-update
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSkill: harness-update
Skill: harness-update
WHAT
概述(WHAT)
Purpose và context
目的与上下文
- Purpose: Một lệnh gọi là xong cho dự án CŨ: cài/update harness stack (L0–L4) và tự động trả nợ wiki legacy thay user.
- Trigger (when to use): "tự bảo trì framework", "self-maintain", "migrate harness", "update harness", "update overstack", "nâng cấp harness", "cài harness vào dự án cũ", "/harness-update" — dự án có llmwiki cũ cần migrate (case B) hoặc đã có harness cần update (case C).
- Non-goals: KHÔNG dùng cho project chưa có gì + cần populate wiki từ code — đó là (case A). Không chữa lỗi hạ tầng (network, python3, validator hỏng).
/new-project-setup
< 30s: dùng cờ — installer tự backfill nợ (Origin + index + OKF) ngay trong process rồi re-audit 1 lần. Agent chỉ gọi 1 lệnh, đọc 1 kết quả, báo cáo. KHÔNG còn vòng lặp re-run phía agent (đó là cái làm chậm bản cũ — xem [[230626-harness-update-sub30s]]).
--self-heal- 目的: 一条命令即可为旧项目完成全部工作:安装或更新 harness stack(L0–L4),并自动替用户处理 legacy wiki 的待补项。
- 触发条件(何时使用): (自行维护 framework)、
tự bảo trì framework、self-maintain(迁移 harness)、migrate harness(更新 harness)、update harness(更新 overstack)、update overstack(升级 harness)、nâng cấp harness(将 harness 安装到旧项目)、cài harness vào dự án cũ——适用于存在旧版 llmwiki、需要迁移的项目(case B),或已有 harness、需要更新的项目(case C)。/harness-update - 非目标: 不用于什么都没有且需要从代码填充 wiki 的项目——那应使用 (case A)。也不修复基础设施问题(network、python3、validator 损坏)。
/new-project-setup
< 30 秒: 使用 标志——installer 会在同一 process 内立即 backfill 待补项(Origin + index + OKF),然后 re-audit 1 次。Agent 只调用 1 次命令、读取 1 次结果并报告。Agent 端不再有 re-run 循环(旧版本正是因此变慢——见 [[230626-harness-update-sub30s]])。
--self-healMental model
心智模型
installer --self-heal (1 process: cài L0–L4 → audit → backfill → re-audit → activate + smoke) → rc (0 sạch · 3 nợ còn lại · khác = hạ tầng) → nghiệm thu + refresh CAPABILITIES + log → báo cáo 4 ýinstaller --self-heal(1 个 process:安装 L0–L4 → audit → backfill → re-audit → activate + smoke)→ rc(0 干净 · 3 仍有待补项 · 其他 = 基础设施)→ 验收 + refresh CAPABILITIES + log → 报告 4 点Input và output contract
输入与输出约定
| Field | Required? | Ý nghĩa | |
|---|---|---|---|
| In | dự án đích (thư mục hiện tại) | có | có llmwiki cũ (case B) hoặc harness cũ (case C) |
| In | | không | thiếu thì clone template |
| Out | harness L0–L4 đã cài + nợ wiki đã backfill | có | rc=0 là sạch |
| Out | | khi có build-capabilities | bản cũ không có → bỏ qua |
| Out | dòng log | có | số backfill lấy từ dòng |
| 字段 | 必填? | 含义 | |
|---|---|---|---|
| In | 目标项目(当前目录) | 是 | 含有旧版 llmwiki(case B)或旧版 harness(case C) |
| In | | 否 | 缺失时 clone template |
| Out | 已安装 harness L0–L4,且 wiki 待补项已 backfill | 是 | rc=0 表示干净 |
| Out | 重新生成 | 有 build-capabilities 时 | 旧版本没有则跳过 |
| Out | | 是 | backfill 数量取自 |
Rules và capabilities
规则与能力
- RULE-01 (MUST): Backfill là THÊM, không bao giờ sửa/xóa nội dung wiki có sẵn (self-heal trong installer giữ đúng quy tắc này).
- RULE-02 (MUST): Không đụng dưới mọi hình thức.
raw/ - RULE-03 (MUST): rc=3 (nợ còn lại) cần user/skill xử 1 lần; rc khác (hạ tầng) là việc của user — phân biệt rõ, không cố chữa lỗi hạ tầng.
- RULE-04 (MUST): Không cờ → installer chạy y hệt hành vi cũ (audit rồi exit 3 nếu nợ) — backward-compatible.
--self-heal - RULE-05 (MUST): Case A (chưa có llmwiki, cần đọc code populate wiki) → chuyển hướng sang .
/new-project-setup - Capabilities: chạy installer cục bộ (có thể clone template qua mạng); ghi harness + wiki (chỉ thêm) + log; không ghi .
raw/
- RULE-01(MUST):Backfill 是追加操作,绝不修改或删除已有 wiki 内容(installer 内的 self-heal 严格遵守此规则)。
- RULE-02(MUST):任何情况下都不得触碰 。
raw/ - RULE-03(MUST):rc=3(仍有待补项)需要 user/skill 处理 1 次;其他 rc(基础设施问题)由 user 负责——必须明确区分,不得尝试修复基础设施错误。
- RULE-04(MUST):未传入 时,installer 的行为与旧版完全一致(执行 audit,若存在待补项则 exit 3)——保持 backward-compatible。
--self-heal - RULE-05(MUST):Case A(没有 llmwiki,需要读取代码并填充 wiki)→ 重定向至 。
/new-project-setup - 能力:运行本地 installer(可通过网络 clone template);写入 harness + wiki(仅追加)及 log;不写入 。
raw/
Failure boundaries
失败边界
- → partial: danh sách nợ nằm trong output, sửa thủ công 1 lần rồi chạy lại W01.
rc=3 - khác (1/4) → blocked (hạ tầng): DỪNG, báo user nguyên văn, không tự đoán.
rc - Dự án chưa có llmwiki (case A) → cancelled ở skill này, chuyển .
/new-project-setup
- → 部分完成(partial):待补项列表位于输出中,手动修复 1 次,然后再次运行 W01。
rc=3 - 其他 (1/4)→ 阻塞(blocked),属于基础设施问题:立即停止,原样向 user 报告,不得自行推测处理方式。
rc - 项目没有 llmwiki(case A)→ 在此 skill 中取消(cancelled),转至 。
/new-project-setup
HOW
执行方式(HOW)
Main workflow
主工作流
| Step | Type | Inputs | Action | Outputs/exit | Failure/next |
|---|---|---|---|---|---|
| W01 | effect | dự án đích | Chạy installer 1 lần với | output + rc | — |
| W02 | deterministic | rc | Đọc exit code, KHÔNG vòng lặp re-run | rc=0 → W03 | rc=3 → B01; rc khác → blocked |
| W03 | effect | output W01 | Nghiệm thu ⛔×3 + refresh CAPABILITIES + health-check tuỳ chọn + log | log + CAPABILITIES | không có build-capabilities → bỏ qua |
| W04 | deterministic | kết quả | Báo cáo user đủ 4 ý | báo cáo | — |
Chi tiết từng bước (nguồn chân lý cho W01–W04):
1. Chọn đường theo LAYOUT rồi chạy installer đúng 1 lần:
- Dự án downstream layout dot (có — mọi máy cài từ v4): engine sống ở GLOBAL, nên cập nhật = chạy lại bootstrap. Nó refresh
.llmwiki/.harness-stampkhi version lệch, kéo/cập nhật engine orca-graph cùng chuyến với shim, đóng lại stamp, và KHÔNG chép engine vào dự án:~/.claude/harness
bash
curl -fsSL https://raw.githubusercontent.com/Rheinmir/setup/orca/harness/poc-vendor-neutral/bootstrap.sh | bashGọi nhầm ở layout này → script tự DỪNG rc 5 và in đúng lệnh trên (đo 20/09/2026: đường cũ không cập nhật global mà còn chép 77 script vào dự án). Agent chạy trong terminal có pty: thêm để khỏi chờ checklist 60 giây.
install-harness.sh . --self-heal-s -- --with-graph- Repo framework (): KHÔNG chạy installer vào đây — installer tự từ chối rc 3. Cập nhật framework =
repo_role: framework.git pull - Layout cũ trần (+
llmwiki/nằm trong dự án, chưa có stamp) — đườngharness/(tự detect migrate/update; thiếu nguồn thì clone template):--self-heal
bash
test -f harness/scripts/install-harness.sh \
&& bash harness/scripts/install-harness.sh . --self-heal \
|| { git clone -q --depth 1 -b orca git@github.com:rheinmir/setup.git /tmp/llmwiki-tpl \
&& bash /tmp/llmwiki-tpl/harness/scripts/install-harness.sh . --self-heal ; rm -rf /tmp/llmwiki-tpl; }Installer tự làm trọn gói: cài L0–L4 → audit (Origin/index/OKF gộp 1 process qua ) → nếu có nợ thì TỰ backfill (Origin lấy hash bằng 1 lượt cho cả lô; index thêm row thiếu; OKF migrate bold → YAML) → re-audit 1 lần → activate + smoke.
audit.pygit log**Type:**2. Đọc exit code (KHÔNG vòng lặp re-run — self-heal đã chạy bên trong):
- → sạch (đã tự backfill xong). Sang bước 3.
rc=0 - → còn nợ self-heal KHÔNG tự sửa được (vd file conflict, type OKF không suy được): danh sách nằm ngay trong output. Sửa thủ công 1 lần rồi chạy lại bước 1.
rc=3 - (1/4) → lỗi hạ tầng (network, python3, validator hỏng) — DỪNG, báo user nguyên văn, không tự đoán.
rc khác
3. Nghiệm thu + log:
- Xác nhận bảng "Harness tự kiểm" có ⛔×3 BỊ CHẶN ✓ trong output bước 1 (installer đã chạy nếu có pre-commit; chưa có thì nhắc user
pre-commit install).pipx install pre-commit - Refresh bản đồ năng lực (để agent thấy đúng đồ nghề sau update — ADR-005): (bản deploy cạnh hooks) HOẶC
python3 ~/.claude/harness/hooks/build-capabilities.py --root .(nếu đang trong repo framework) → sinh lạipython3 fdk/tools/build-capabilities.py. Không có file build-capabilities (bản cũ) → bỏ qua, không lỗi.CAPABILITIES.md - Health-check (tuỳ chọn, xác nhận rào còn cắn sau update): hoặc
/health-check.python3 ~/.claude/harness/hooks/health-check.py - Append vào :
llmwiki/wiki/log.md. Số liệu lấy từ dòng## YYYY-MM-DD — harness-update — migrate/update xong (--self-heal), nợ đã backfill: <n> filetrong output.[audit] backfill xong — Origin:<a> index:<b> OKF:<c>
4. Báo cáo cho user (bắt buộc đủ 4 ý):
- Mode đã chạy (migrate hay update) + số nợ self-heal đã backfill (Origin/index/OKF từ dòng )
[audit] backfill xong - Settings root: file backup nếu có merge
.bak.* - Nhắc: mở session mới thì hooks mới load
- Mời: để xem hàng rào cắn trực quan
/harness-tour
| 步骤 | 类型 | 输入 | 操作 | 输出/退出 | 失败/下一步 |
|---|---|---|---|---|---|
| W01 | effect | 目标项目 | 使用 | output + rc | — |
| W02 | deterministic | rc | 读取 exit code,禁止 re-run 循环 | rc=0 → W03 | rc=3 → B01;其他 → blocked |
| W03 | effect | W01 的 output | 验收 ⛔×3 + refresh CAPABILITIES + 可选 health-check + log | log + CAPABILITIES | 没有 build-capabilities → 跳过 |
| W04 | deterministic | 结果 | 向 user 报告完整的 4 点信息 | 报告 | — |
以下为各步骤的详细信息(W01–W04 的事实来源):
1. 根据 LAYOUT 选择路径,然后只运行 installer 一次:
- 下游项目采用 dot layout(存在 ——所有从 v4 开始安装的机器均如此):engine 位于 GLOBAL,因此更新方式是重新运行 bootstrap。它会在版本不一致时 refresh
.llmwiki/.harness-stamp,在同一次操作中拉取或更新 orca-graph engine 及其 shim,完成 stamp 更新,并且不会将 engine 复制到项目中:~/.claude/harness
bash
curl -fsSL https://raw.githubusercontent.com/Rheinmir/setup/orca/harness/poc-vendor-neutral/bootstrap.sh | bash在此 layout 中误用 时,script 会自动停止并返回 rc 5,同时打印上述准确命令(截至 20/09/2026 的测量结果:旧路径不仅未更新 global,还会将 77 个 script 复制到项目中)。如果 Agent 在带 pty 的 terminal 中运行,请添加 ,以免等待 60 秒的 checklist。
install-harness.sh . --self-heal-s -- --with-graph- Framework repo():不要在此运行 installer——installer 会自行拒绝并返回 rc 3。更新 framework 的方式是执行
repo_role: framework。git pull - 旧版裸 layout(项目中包含 +
llmwiki/,但没有 stamp)——使用harness/路径(自动检测 migrate/update;缺少源时 clone template):--self-heal
bash
test -f harness/scripts/install-harness.sh \
&& bash harness/scripts/install-harness.sh . --self-heal \
|| { git clone -q --depth 1 -b orca git@github.com:rheinmir/setup.git /tmp/llmwiki-tpl \
&& bash /tmp/llmwiki-tpl/harness/scripts/install-harness.sh . --self-heal ; rm -rf /tmp/llmwiki-tpl; }Installer 会自动完成整个流程:安装 L0–L4 → audit(Origin/index/OKF 通过 在同一 process 中合并处理)→ 如果存在待补项,则自动 backfill(Origin 通过一次 批量计算 hash;index 添加缺失的 row;OKF 将加粗的 迁移为 YAML)→ re-audit 1 次 → activate + smoke。
audit.pygit log**Type:**2. 读取 exit code(禁止 re-run 循环——self-heal 已在内部完成):
- → 干净(已自动 backfill 完成)。进入步骤 3。
rc=0 - → 仍有 self-heal 无法自动修复的待补项(例如 file conflict、无法推断 OKF type):列表会直接出现在 output 中。手动修复 1 次,然后再次运行步骤 1。
rc=3 - 其他 (1/4)→ 基础设施错误(network、python3、validator 损坏)——立即停止,原样向 user 报告,不得自行推测处理方式。
rc
3. 验收与 log:
- 确认步骤 1 的 output 中,“Harness tự kiểm”表显示 ⛔×3 BỊ CHẶN ✓(如果存在 pre-commit,installer 已运行 ;如果不存在,则提醒 user 执行
pre-commit install)。pipx install pre-commit - 刷新能力地图(使 agent 在更新后看到正确的工具集合——ADR-005):(部署在 hooks 旁的版本)或
python3 ~/.claude/harness/hooks/build-capabilities.py --root .(如果当前位于 framework repo)→ 重新生成python3 fdk/tools/build-capabilities.py。如果没有 build-capabilities 文件(旧版本),则跳过且不报错。CAPABILITIES.md - Health-check(可选,用于确认更新后哪些护栏仍在生效):或
/health-check。python3 ~/.claude/harness/hooks/health-check.py - 追加到 :
llmwiki/wiki/log.md。数量取自 output 中的## YYYY-MM-DD — harness-update — migrate/update xong (--self-heal), nợ đã backfill: <n> file行。[audit] backfill xong — Origin:<a> index:<b> OKF:<c>
4. 向 user 报告(必须包含完整的 4 点信息):
- 已运行的模式(migrate 或 update),以及 self-heal 已 backfill 的待补项数量(Origin/index/OKF 取自 行)
[audit] backfill xong - Settings root:如果发生 merge,列出备份文件
.bak.* - 提醒:开启新 session 后,新的 hooks 才会加载
- 邀请使用 ,直观查看当前有哪些护栏仍在生效
/harness-tour
Branches
分支
| ID | Kind | Guard | Hành vi | Skip / failure | Rejoin |
|---|---|---|---|---|---|
| B01 | recovery | | sửa thủ công 1 lần các nợ self-heal không tự sửa được (danh sách trong output) | vẫn rc=3 → báo user | W01 |
| B02 | capability_optional | có | sinh lại | bản cũ không có → bỏ qua, không lỗi | W03 |
| B03 | user_optional | muốn xác nhận rào còn cắn | | bỏ qua | W03 |
| ID | 类型 | 条件 | 行为 | 跳过/失败 | 汇合点 |
|---|---|---|---|---|---|
| B01 | recovery | | 手动修复 1 次 self-heal 无法自动处理的待补项(列表位于 output 中) | 仍为 rc=3 → 报告 user | W01 |
| B02 | capability_optional | 存在 | 重新生成 | 旧版本没有 → 跳过,不报错 | W03 |
| B03 | user_optional | 希望确认哪些护栏仍在生效 | | 跳过 | W03 |
Validation và stopping
验证与停止条件
Verdict do rc của installer (tất định) + bảng "Harness tự kiểm" có ⛔×3. Tối đa một vòng B01 → W01; rc khác 0/3 dừng ngay.
Verdict 由 installer 的 rc(确定性)以及“Harness tự kiểm”表中是否存在 ⛔×3 决定。最多允许一个 B01 → W01 循环;遇到 0/3 之外的 rc 时立即停止。
Examples
示例
- Positive: dự án có llmwiki cũ thiếu ở 12 trang →
## Origin→install-harness.sh . --self-heal, rc=0 → log + báo cáo "migrate, backfill 12 file, mở session mới để hooks load".[audit] backfill xong — Origin:12 index:0 OKF:0 - Boundary/failure: máy không có → rc=1 → DỪNG, báo user nguyên văn lỗi, không tự cài hay chạy lại.
python3
- 正向示例: 项目中的旧版 llmwiki 有 12 个页面缺少 → 执行
## Origin→install-harness.sh . --self-heal,rc=0 → 写入 log 并报告“已迁移,backfill 12 个文件,请开启新 session 以加载 hooks”。[audit] backfill xong — Origin:12 index:0 OKF:0 - 边界/失败示例: 机器没有 → rc=1 → 立即停止,原样向 user 报告错误,不得自动安装或重新运行。
python3