orca-workflow
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSkill: orca-workflow
Skill: orca-workflow
🧭 Dispatch backend — chọn agent/model rẻ, chạy nhiều worker song song, cú pháp opencode/orchestration → xem orca-dispatch-reference (nguồn chân lý duy nhất, đừng nhân bản syntax ở đây).
🧭 Dispatch 后端——选择低成本的 agent/model,并行运行多个 worker;opencode/orchestration 语法参见 orca-dispatch-reference(唯一事实来源,请勿在此复制语法)。
WHAT
内容
Purpose và context
目的与上下文
- Purpose: Propose → gate → dispatch → verify qua Orca. Agent pool 1:1 per engine (claude, agy, opencode, kiro, copilot). Claude: analyze. Others: execute. Kill opencode nếu chờ quá lâu.
- Trigger (when to use):
- "propose <feature>", "feature request", "implement <name>"
- "chạy lint", "verify wiki"
- "sync template", "upstream"
- Non-goals: không xử lý SỰ CỐ (bug, lỗi runtime, regression → ); không nhân bản cú pháp dispatch backend (→
orca-issue); không mô tả lại hành viorca-dispatch-reference,/propose,/plan(single source of truth ở skill con)./query
- 目的: 通过 Orca 执行 Propose → gate → dispatch → verify。Agent pool 按 engine 保持 1:1(claude、agy、opencode、kiro、copilot)。Claude:analyze。其他 agent:execute。如果 opencode 等待过久,则将其 kill。
- 触发条件(何时使用):
- 、
propose <feature>、feature requestimplement <name> - “运行 lint”、“验证 wiki”
- “同步模板”、“同步上游”
- 非目标: 不处理事故(bug、runtime 错误、regression → );不复用 dispatch backend 语法(→
orca-issue);不重述orca-dispatch-reference、/propose、/plan的行为(单一事实来源位于对应的子 skill 中)。/query
Mental model
心智模型
yêu cầu tính năng → R12 sweep → /query (wiki) → /propose (SPEC .md + .html render rẻ) → gate người duyệt → /plan (PLAN máy đọc) → task-create có dấu dự án → cổng HITL/AFK + kiểu việc → dispatch --inject nguyên văn → worker_done → [/qc-code] → verify-before-commit → output reporttask_xxxx功能请求 → R12 sweep → /query(wiki)→ /propose(SPEC .md + 低成本 .html 渲染)→ 人工审批 gate → /plan(机器可读 PLAN)→ 带项目标记的 task-create → HITL/AFK gate + 工作类型 → dispatch --inject 原文 brief → worker_done → [/qc-code] → verify-before-commit → output reporttask_xxxxInput và output contract
输入与输出契约
| Field | Required? | Ý nghĩa | |
|---|---|---|---|
| In | mô tả tính năng ("propose <feature>", "implement <name>") | có | sự cố → rẽ sang |
| In | | không | thiếu/rỗng → ghi "chưa có tiền lệ" |
| In | duyệt của user ở gate | có | trước khi |
| In | agent CLI sẵn có ( | không | cạn → Claude tự làm |
| Out | SPEC draft | có | thứ người duyệt |
| Out | | có sau duyệt | thứ máy thi hành |
| Out | task Orca có dấu dự án + trạng thái T-id | có | |
| Out | output report | có (trừ khi 0 artifact) | "xong" = worker_done + verify-before-commit xanh + report cập nhật Status |
| 字段 | 必需? | 含义 | |
|---|---|---|---|
| In | 功能描述( | 是 | 遇到事故 → 转入 |
| In | | 否 | 缺失或为空 → 记录“尚无先例” |
| In | 用户在 gate 的审批 | 是 | 必须先于 |
| In | 可用的 agent CLI( | 否 | 耗尽 → Claude 自行完成 |
| Out | SPEC 草稿 | 是 | 供用户审批 |
| Out | | 审批后必需 | 供机器执行 |
| Out | 带项目标记的 Orca task + T-id 状态 | 是 | 通过 code-logger 记录 |
| Out | 输出报告 | 是(除非没有任何 artifact) | “完成” = worker_done + verify-before-commit 通过 + 报告已更新 Status |
Rules và capabilities
规则与能力
- RULE-01 (MUST): Caveman Mode: Chọn độ chi tiết theo người đọc file. File markdown mà MÁY hoặc AGENT đọc và thực thi (SKILL.md, policy.yaml, AGENT.md, bảng tham chiếu thuần) thì viết ngắn gọn được — caveman ở đây tiết kiệm token mà không hại gì. Nhưng tài liệu CON NGƯỜI đọc hoặc review thì BẮT BUỘC tắt caveman và viết đầy đủ — proposal, output-report, wiki content (concept/ADR/registry), README, CONTRIBUTING và runbook, cùng mọi trang HTML. Những file này phải là văn xuôi với câu hoàn chỉnh, dễ đọc; không bỏ liên từ, không viết tắt cụt, không nhồi bảng thay cho câu giải thích. Bài học 2026-06-27: user phản hồi "caveman đã nén quá mức khi viết tài liệu", rồi làm rõ — file máy đọc thì gọn được, file người đọc thì cần đầy đủ.
- RULE-02 (MUST): Claude: analyze. Others: execute. Kill opencode nếu chờ quá lâu.
- RULE-03 (MUST): Sổ vấn đề quy trình (problem-tree) — Dự án có thì sổ cây vấn đề nằm ở
llmwiki/(repo framework:llmwiki/html/problem-tree.html). Phiên nào phát hiện hoặc giải một vấn đề quy trình/framework → cập nhật node vào block JSONfdk-problem-tree.html(append-only; solved phải ghi#tree-data; scope theo 3 trụ harness/skills/llmwiki — xanh lá chỉ khi 3/3). Quên cũng không mất: hook SessionEnd (R17) tự ghi thẻ pending bằng code, lần sau distill.solvedBy - RULE-04 (MUST): spec task PHẢI đóng dấu dự án: (sổ task Orca là runtime-global).
orca orchestration task-create --spec "$(python3 harness/scripts/orca-reconcile.py --stamp '<spec>')" - RULE-05 (MUST): một agent được giao việc HITL chỉ còn cách đoán thay người dùng rồi im lặng — đó là con số 1/5, không phải model dốt — HITL không dispatch cho CLI headless.
- RULE-06 (MUST): bơm NGUYÊN VĂN brief của task từ PLAN kèm
--inject; KHÔNG tóm tắt lại.## Global constraints - RULE-07 (MUST): An toàn container / DB — chạy trước bất kỳ
docker inspect <container_name> --format '{{json .Mounts}}' | python3 -m json.tool,--force-recreate, recreate nào; khác volume → DỪNG, hỏi user (chi tiết ở Reference).down - Capabilities: đọc wiki; tạo gate/task/dispatch qua orchestration runtime; chạy agent CLI headless hoặc terminal tương tác; ghi draft wiki + ledger T-id; (tuỳ chọn) bộ nhớ xuyên phiên qua HTTP; push đồng bộ skill lên repo nguồn.
- RULE-01 (MUST):Caveman Mode:根据文件读者选择详细程度。由机器或 AGENT 读取并执行的 Markdown 文件(SKILL.md、policy.yaml、AGENT.md、纯参考表)可以写得更简洁——这里的 caveman 能在不造成损害的情况下节省 token。但供人类阅读或评审的文档必须关闭 caveman 并完整撰写——包括 proposal、output-report、wiki 内容(concept/ADR/registry)、README、CONTRIBUTING、runbook,以及所有 HTML 页面。这些文件必须使用完整句子写成易读的连贯文字;不能省略连接词,不能过度缩写,也不能用表格代替解释。2026-06-27 的教训:用户反馈“caveman 在编写文档时压缩过度”,随后进一步澄清——机器读取的文件可以简洁,人类读取的文件必须完整。
- RULE-02 (MUST):Claude:analyze。其他 agent:execute。如果 opencode 等待过久,则将其 kill。
- RULE-03 (MUST):流程问题账本(problem-tree)——如果项目包含 ,问题树位于
llmwiki/(repo framework:llmwiki/html/problem-tree.html)。任何 session 发现或解决流程/framework 问题 → 更新fdk-problem-tree.htmlJSON block 中的节点(append-only;已解决节点必须写入#tree-data;按 harness/skills/llmwiki 三个轴限定 scope——只有达到 3/3 才标为绿色)。即使忘记也不会丢失:SessionEnd hook(R17)会自动通过 code 写入 pending 卡片,供下次 distill。solvedBy - RULE-04 (MUST):task spec 必须带有项目标记:(Orca task ledger 是 runtime-global 的)。
orca orchestration task-create --spec "$(python3 harness/scripts/orca-reconcile.py --stamp '<spec>')" - RULE-05 (MUST):被分配 HITL 工作的 agent 只能代替用户猜测,然后保持沉默——这正是 1/5 的原因,并非模型很笨——HITL 不得 dispatch 给 headless CLI。
- RULE-06 (MUST):必须注入来自 PLAN 的 task brief 原文,并附带
--inject;不得重新概括。## Global constraints - RULE-07 (MUST):容器/DB 安全——执行任何 、
--force-recreate或 recreate 前,必须运行down;如果 volume 不同 → 停止并询问用户(详见 Reference)。docker inspect <container_name> --format '{{json .Mounts}}' | python3 -m json.tool - 能力:读取 wiki;通过 orchestration runtime 创建 gate/task/dispatch;以 headless 或交互式终端运行 agent CLI;写入 wiki 草稿 + T-id ledger;(可选)通过 HTTP 使用跨 session 记忆;将更新后的 skill push 到源 repo。
Failure boundaries
失败边界
- Đầu vào là sự cố → rẽ sang , không propose.
orca-issue - R12 sweep: subrepo TARGET sau remote → blocked tới khi ; offline → fail-open.
git pull --rebase - User từ chối ở gate → cancelled, T-id .
state=rejected - Task HITL → không dispatch, nhãn (chờ người).
ready-for-human - CLI headless im lặng quá ~60–90s / không tạo file / thiếu → kill, Claude tiếp quản (fallback).
diagram-box - Container volume khác compose → blocked, hỏi user.
- →
task-update --status donelặng lẽ (status hợp lệ:ok:false|ready|in_progress|completed).failed
- 输入是事故 → 转入 ,不要 propose。
orca-issue - R12 sweep:TARGET subrepo 落后于 remote → 阻塞,直到执行 ;offline → fail-open。
git pull --rebase - 用户在 gate 拒绝 → cancelled,T-id 。
state=rejected - HITL task → 不得 dispatch,标记为 (等待人员处理)。
ready-for-human - Headless CLI 静默超过约 60–90 秒、未创建文件或缺少 → kill,由 Claude 接管(fallback)。
diagram-box - Container volume 与 compose 不一致 → blocked,询问用户。
- → 静默返回
task-update --status done(有效状态:ok:false|ready|in_progress|completed)。failed
HOW
执行方式
Main workflow
主工作流
| Step | Type | Inputs | Action | Outputs/exit | Failure/next |
|---|---|---|---|---|---|
| W01 | deterministic | workspace | Bước 0 — R12 (B) pre-work sweep | base tươi | TARGET sau remote → pull --rebase rồi lặp |
| W02 | judgment | tính năng | Bước 1 — GỌI | điều đã biết + lỗ hổng | rỗng → "chưa có tiền lệ" |
| W03 | judgment | context | Bước 2 — GỌI | SPEC | CLI im lặng → B03 |
| W04 | effect | SPEC | Bước 3 — | duyệt | từ chối → cancelled |
| W05 | judgment | SPEC đã duyệt | Bước 4 — GỌI | task | R7 PLAN chặn → sửa PLAN |
| W06 | judgment | task | Bước 4b — Cổng 1 HITL/AFK, Cổng 2 kiểu việc → archetype, rồi mới bảng chi phí | task AFK có kiểu + CLI | HITL → B02 |
| W07 | effect | task AFK | Bước 5 — | worker chạy | — |
| W08 | deterministic | dispatch | Bước 6 — | worker_done | timeout/im lặng → B03 |
| W09 | deterministic | diff | Bước 7 — | commit sạch | đỏ → sửa |
| W10 | effect | kết quả | Output report + cập nhật Status agent + sync push skill (mục Delivery) | draft + index + log | 0 artifact → skip |
Chi tiết từng bước (nguồn chân lý cho W01–W09):
- R12 (B) — pre-work sweep cả workspace (MỘT LẦN, trước khi làm / fan-out đa-agent): orchestrator chạy — quét MỌI subrepo (từ
harness/poc-vendor-neutral/bin/pull-gate-sweep.sh, thiếu → auto-discover harnessed), fetch song song; subrepo TARGET sau remote → DỪNG,.harness-workspace.yamltrong repo đó rồi mới dispatch (cả đàn agent chung base tươi); subrepogit pull --rebasechỉ cảnh báo. 1 repo → sweep tự rút vềwatch. Offline → fail-open. KHÔNG chặn từng-edit (cố tình bỏ per-edit PreToolUse). R12 (C) gate2 per-repo: cài mọi subrepo bằngpull-gate.sh; check tayinstall-harness.sh --all-subrepos.pull-gate.sh gate2 - query: GỌI skill (Skill tool →
query, hoặcquery) để synthesis context từ/queryvề tính năng — KHÔNG đọc tay rời rạc, dùng đúng wiki-loopwiki/(tổng hợpquery, trả về điều đã biết + lỗ hổng). Project chưa có[[wikilinks]](hoặc query trả rỗng) → ghi nhận "chưa có tiền lệ" rồi sang bước 2.wiki/ - propose — KHÔNG mô tả lại; GỌI skill (Skill tool →
propose, đúng pattern bước 1 gọi/propose). Mọi yêu cầu R7 (cặpquery+.md,.html,## Plan, glass-style## Agent Task Assignment, prose chi tiết) sống trong skill con — sửa hành vi propose chỉ sửadocs-site-macos, KHÔNG sửa ở đây (single source of truth, xem [[ADR-003-skill-as-single-source-of-truth]]).llmwiki/skills/dev-loop/propose.md- Tách Claude-nghĩ / CLI-rẻ-render: Claude (qua ) chỉ sản xuất SUBSTANCE =
/proposerender-complete (Plan + prose +.md= bước diagram dạng data + đoạn prose mỗi task). Phần## Render brieflà RENDER cơ học của.html→ dispatch sang một CLI rẻ theo bảng chi phí (OpenCode## Render brief→big-pickle→agy, $0). Render free nên dùng Fullkirorichness, KHÔNG cắt bớt — token Claude chỉ tốn cho substance, không phình theo độ giàu HTML.docs-site-macos - Watchdog + R7 gate (bài học 250626 — headless giao ~1/5): chờ ~60–90s; im lặng / không tạo file / thiếu → kill, Claude render fallback. Thử CLI rẻ theo thứ tự sẵn-có (probe
diagram-box); cạn → Claude. R7 vẫn chặn lúc write+commit nên chất lượng được gác bất kể ai render.--version
- Tách Claude-nghĩ / CLI-rẻ-render: Claude (qua
- gate: → chờ user (gửi kèm preview URL của html)
orca orchestration gate-create --question "Duyệt proposal này?"- Trụ 3 lifecycle (best-effort, fail-open): user DUYỆT → (
python3 harness/scripts/code-logger.py --task set <T-id> state=approved note="gate"= field<T-id>trong frontmatter draft dotask:mint; trống thì bỏ qua). User TỪ CHỐI →/propose. Lệnh fail-open, không chặn flow.--task set <T-id> state=rejected
- Trụ 3 lifecycle (best-effort, fail-open): user DUYỆT →
- Sau duyệt — GỌI skill (Skill tool →
plan) TRƯỚC KHI phân rã./plansinh SPEC (thứ NGƯỜI đọc để duyệt);/proposemở rộng nó thành/plan— thứ MÁY đọc để thi hành: mỗillmwiki/wiki/sources/draft/DDMMYY-<tên>-PLAN.mdcó### Task(đường dẫn chính xác),**Files:**(Consumes/Produces — chữ ký cho task hàng xóm), và các bước 2–5 phút kiểu TDD có code thật + lệnh + output mong đợi. R7 nhánh PLAN chặn nếu thiếu. Rồi mới**Interfaces:**cho mỗiorca orchestration task-create— spec phải ĐÓNG DẤU dự án:### Task. Sổ task của Orca là runtime-global (guide Orca nói thẳng); đo 2026-07-20: 18 terminal của NHIỀU dự án cùng ghi một sổ, nênorca orchestration task-create --spec "$(python3 harness/scripts/orca-reconcile.py --stamp '<spec>')"ở repo A trả về cả việc của repo B — và một orchestrator sẽ claim nhầm task của dự án khác, phá đúng mục tiêu tách-bias-tầng-vật-lý. Orca không có trường dự án (task-listkhông có tag,task-createkhông có bộ lọc), nên dấu này là cách duy nhất để quy thuộc chính xác — và nó còn đúng cả sau khi terminal tạo task đã chết (thực đo: 0/17 terminal cũ còn sống). Đối soát:task-list.orca-reconcile.py [--scope current|all]- Vì sao bắt buộc, không phải "nên": agent CLI rẻ chạy headless không thừa hưởng context nào của phiên này và không hỏi lại được — nó chỉ có đúng thứ ta bơm vào; gặp chỗ mơ hồ nó đoán rồi im lặng. Brief mỏng chính là nguyên nhân của thực đo "giao hàng ~1/5" (bài học 250626), không phải do model dốt.
- PLAN không cần — HTML gắn với SPEC (thứ người xem lúc duyệt), do
.htmlsinh. Vẽ diagram cho agent đọc là đốt token vô ích. 4b. GIAO ĐÚNG LOẠI VIỆC — cổng chạy TRƯỚC khi chọn CLI. Bảng chi phí bên dưới chỉ trả lời "model nào rẻ nhất". Nó chưa bao giờ hỏi "việc này làm được không cần người không" — và đó là mảnh còn thiếu của con số ~1/5. Hai cổng, đúng thứ tự:/propose - Cổng 1 — HITL/AFK. Task cần một người sống trả lời (quyết định thiết kế, đánh đổi, thứ chỉ user biết, truy cập ngoài, kiểm thủ công) là HITL → nhãn trong ledger, KHÔNG dispatch cho CLI headless. Chỉ task AFK (
ready-for-human) mới đi tiếp. Luật cứng: một agent được giao việc HITL chỉ còn cách đoán thay người dùng rồi im lặng — đó là con số 1/5, không phải model dốt.ready-for-agent - Cổng 2 — kiểu việc → archetype. Gắn kiểu cho task: (lôi ra fact) ·
research(bản thô để phản ứng) ·prototype(hỏi từng câu) ·grilling(thi hành theo brief) ·build(dọn cơ học). Map sang archetype (ADR-015) → persona preamble. Rồi mới tới bảng chi phí chọn CLI — nó tụt xuống bước cuối, không phải bước đầu.sweep
- dispatch:
orca orchestration dispatch --task <id> --to <agent> --inject- bơm NGUYÊN VĂN brief của task đó từ PLAN (Files + Interfaces + Steps) kèm
--injectcủa PLAN. KHÔNG tóm tắt lại — tóm tắt chính là chỗ context rụng, và cái rụng luôn là cái agent cần.## Global constraints - Dòng ĐẦU của brief khai kiểu việc: một câu nói thẳng phiên này là phiên gì — "anh đang giải một QUYẾT ĐỊNH, không phải đi build" / "anh đang dọn cơ học, KHÔNG thêm feature". Kiểu việc quyết định hình dạng của phiên, không chỉ chọn model; một agent biết mình đang làm gì hành xử khác hẳn agent nhận một cục mô tả.
- Trụ 3 lifecycle (best-effort): khi giao việc → . Đây là
python3 harness/scripts/code-logger.py --task set <T-id> state=dispatched note="<agent>"bền (audit trail bất biến), độc lập vớiT-idephemeral của orca orchestration. Fail-open.task_xxxx - Persona theo archetype (Boris Cherny — 5 vai vòng đời): muốn dispatch theo một posture cụ
thể thì gọi bằng từ khoá —
/proto/build/sweep/grow. Cơ chế:/maintain→ in (a) CLI gợi ý cho archetype đó (Prototyper→opencode rẻ · Builder/Grower/Maintainer→Claude · Sweeper→opencode), và (b) PREAMBLE persona (python3 harness/scripts/archetype.py --get /<kw>) — inject preamble đó vàollmwiki/personas/<archetype>.mdtrước khi dispatch để agy/opencode/kiro vào đúng vai (vd Sweeper bị cấm thêm feature). CLI nào hợp archetype nào là adapter<task>(verified:false). Xem ADR-015.harness/archetypes.config.yaml
- Chờ: 6b. (Tùy chọn) QC senior trước commit — muốn một cặp mắt senior soi diff trước khi chốt thì gọi
orca orchestration check --wait --types worker_done --timeout-ms 300000(Skill tool →/qc-code): review 4 mục (security/performance/naming/logic) chấm điểm + verdict, và sinh test tái hiệnqc-codecho mỗi bug logic. Verdict CẦN SỬA → sửa trước khi commit. Tùy chọn, không bắt buộc — verdict LLM là advisory (người quyết), thứ gác cứng là testqc-*chạy ở bước 7.qc-* - Kiểm tra: tự động chạy trước mỗi commit (gồm bước 3b:
verify-before-commitchạy testqc-regression.py --runtất định — bug đã tái hiện không âm thầm quay lại).qc-*
| 步骤 | 类型 | 输入 | 操作 | 输出/退出条件 | 失败/下一步 |
|---|---|---|---|---|---|
| W01 | 确定性 | workspace | 步骤 0——运行一次 R12 (B) pre-work sweep | 获得最新 base | TARGET 落后于 remote → pull --rebase 后重试 |
| W02 | 判断 | 功能 | 步骤 1——调用 | 已知信息 + 缺口 | 为空 → “尚无先例” |
| W03 | 判断 | context | 步骤 2——调用 | SPEC | CLI 静默 → B03 |
| W04 | 执行 | SPEC | 步骤 3—— | 审批结果 | 拒绝 → cancelled |
| W05 | 判断 | 已审批的 SPEC | 步骤 4——调用 | task | R7 阻止 PLAN → 修复 PLAN |
| W06 | 判断 | task | 步骤 4b——Gate 1 HITL/AFK、Gate 2 工作类型 → archetype,最后才查询成本表 | 带类型和 CLI 的 AFK task | HITL → B02 |
| W07 | 执行 | AFK task | 步骤 5—— | worker 运行 | — |
| W08 | 确定性 | dispatch | 步骤 6—— | worker_done | timeout/静默 → B03 |
| W09 | 确定性 | diff | 步骤 7—— | 干净的 commit | 失败 → 修复 |
| W10 | 执行 | 结果 | 输出报告 + 更新 agent Status + sync push skill(见 Delivery) | 草稿 + index + log | 0 artifact → skip |
以下为各步骤详情(W01–W09 的事实来源):
- R12 (B)——pre-work sweep,覆盖整个 workspace(仅执行一次,在进行 / 或多 agent fan-out 之前):orchestrator 运行 ——扫描所有 subrepo(来源为
harness/poc-vendor-neutral/bin/pull-gate-sweep.sh;缺失时自动发现已接入 harness 的 repo),并行 fetch;如果 TARGET subrepo 落后于 remote → 停止,在该 repo 中执行.harness-workspace.yaml,然后才能 dispatch(确保整组 agent 使用相同的最新 base);标记为 watch 的 subrepo 只发出警告。只有 1 个 repo 时,sweep 自动退化为git pull --rebase。Offline → fail-open。不阻止逐次编辑(有意移除 per-edit PreToolUse)。R12 (C) per-repo gate2:使用pull-gate.sh安装所有 subrepo;手动检查install-harness.sh --all-subrepos。pull-gate.sh gate2 - query:调用 skill (Skill tool →
query,或query),从/query综合与该功能有关的 context——不要零散地手动读取,应使用正确的 wiki-loopwiki/(汇总query,返回已知信息 + 缺口)。如果项目还没有[[wikilinks]](或 query 返回空)→ 记录“尚无先例”,然后进入步骤 2。wiki/ - propose——不要再次描述其行为;调用 skill (Skill tool →
propose,模式与步骤 1 调用/propose相同)。所有 R7 要求(query+.md文件对、.html、## Plan、glass-style## Agent Task Assignment、详细 prose)均定义在子 skill 中——只能通过修改docs-site-macos调整 propose 行为,不得在此修改(单一事实来源,参见 [[ADR-003-skill-as-single-source-of-truth]])。llmwiki/skills/dev-loop/propose.md- 分离 Claude 思考与低成本 CLI 渲染: Claude(通过 )只生成实质内容 = 完整可渲染的
/propose(Plan + prose +.md= data 形式的 diagram 步骤 + 每个 task 的 prose)。## Render brief是.html的机械渲染 → 按成本表 dispatch 给低成本 CLI(OpenCode## Render brief→big-pickle→agy,$0)。渲染免费,因此应使用 Fullkirorichness,不得删减——Claude token 只消耗在实质内容上,不会因 HTML 丰富度而膨胀。docs-site-macos - Watchdog + R7 gate(250626 的教训——headless 交付率约 1/5): 等待约 60–90 秒;静默、未创建文件或缺少 → kill,由 Claude 渲染 fallback。按可用顺序尝试低成本 CLI(探测
diagram-box);耗尽 → Claude。R7 仍会在 write+commit 阶段阻止不合格内容,因此无论由谁渲染,质量都有硬性保障。--version
- 分离 Claude 思考与低成本 CLI 渲染: Claude(通过
- gate:→ 等待用户(同时发送 HTML preview URL)。
orca orchestration gate-create --question "Duyệt proposal này?"- 第三轴 lifecycle(best-effort、fail-open): 用户批准 → (
python3 harness/scripts/code-logger.py --task set <T-id> state=approved note="gate"=<T-id>生成的草稿 frontmatter 中的/propose字段;为空则跳过)。用户拒绝 →task:。命令采用 fail-open,不会阻塞流程。--task set <T-id> state=rejected
- 第三轴 lifecycle(best-effort、fail-open): 用户批准 →
- 审批后——先调用 skill (Skill tool →
plan),然后再拆分任务。/plan生成 SPEC(供用户阅读和审批);/propose将其扩展为/plan——这是供机器执行的内容:每个llmwiki/wiki/sources/draft/DDMMYY-<名称>-PLAN.md都包含### Task(准确路径)、**Files:**(Consumes/Produces——供相邻 task 使用的签名),以及 2–5 分钟的 TDD 步骤,包含真实代码、命令和预期输出。缺少这些内容时,R7 的 PLAN 分支会阻止提交。然后才为每个**Interfaces:**执行### Task——spec 必须带有项目标记:orca orchestration task-create。 Orca 的 task ledger 是 runtime-global 的(Orca guide 已明确说明);2026-07-20 的实测显示:来自多个项目的 18 个 terminal 会写入同一个 ledger,因此 repo A 中的orca orchestration task-create --spec "$(python3 harness/scripts/orca-reconcile.py --stamp '<spec>')"也会返回 repo B 的任务——orchestrator 可能错误 claim 其他项目的 task,破坏物理隔离的核心目标。Orca 没有项目字段(task-list没有 tag,task-create没有过滤器),因此该标记是准确归属项目的唯一方式——即使创建 task 的 terminal 已经死亡,该标记仍然有效(实测:旧 terminal 的存活率为 0/17)。对账方式:task-list。orca-reconcile.py [--scope current|all]- 为什么这是强制要求,而不只是“应该这样做”: 低成本 headless agent CLI 不会继承当前 session 的任何 context,也无法再次询问——它只能获得注入的内容;遇到模糊之处时,它会猜测然后沉默。Brief 过于简略正是实测“交付率约 1/5”的根本原因,并非模型很笨。
- PLAN 不需要 ——HTML 与 SPEC 配套(供用户审批时查看),由
.html生成。为 agent 阅读而绘制 diagram 只是浪费 token。 4b. 分派正确的工作类型——必须在选择 CLI 之前运行 gate。 下方的成本表只回答“哪个 model 最便宜”,却从未询问“这项工作是否能在无人参与的情况下完成”——而这正是约 1/5 交付率中缺失的一环。两个 gate,顺序固定:/propose - Gate 1——HITL/AFK。 如果 task 需要一个真实人员回答(设计决策、取舍、只有用户知道的信息、外部访问、手动检查),则属于 HITL → 在 ledger 中标记 ,不得 dispatch 给 headless CLI。只有 AFK(
ready-for-human)task 才能继续。硬性规则:被分配 HITL 工作的 agent 只能代替用户猜测,然后保持沉默——这正是 1/5 的原因,并非模型很笨。ready-for-agent - Gate 2——工作类型 → archetype。 为 task 标记类型:(提取事实)·
research(制作原型以获得反馈)·prototype(逐项提问)·grilling(按照 brief 执行)·build(机械清理)。映射到 archetype(ADR-015)→ persona preamble。之后才查询成本表选择 CLI——成本表是最后一步,而不是第一步。sweep
- dispatch:
orca orchestration dispatch --task <id> --to <agent> --inject- 注入 PLAN 中该 task 的 brief 原文(Files + Interfaces + Steps)以及 PLAN 的
--inject。不得重新概括——概括正是 context 丢失的位置,而丢失的始终是 agent 最需要的内容。## Global constraints - brief 首行声明工作类型: 用一句话直接说明当前 session 属于什么性质——“你正在解决一个决策,而不是执行 build”/“你正在做机械清理,不添加 feature”。工作类型决定的是 session 的形态,不只是 model 选择;知道自身任务的 agent 与收到一段描述的 agent 行为会截然不同。
- 第三轴 lifecycle(best-effort): 分派任务时 → 。这是持久 T-id(不可变 audit trail),独立于 Orca orchestration 的临时
python3 harness/scripts/code-logger.py --task set <T-id> state=dispatched note="<agent>"。采用 fail-open。task_xxxx - 按 archetype 选择 persona(Boris Cherny——五种人生角色): 如果希望按照具体 posture 分派任务,应使用关键词——
/proto/build/sweep/grow。机制:/maintain→ 输出(a)该 archetype 建议的 CLI(Prototyper→低成本 opencode · Builder/Grower/Maintainer→Claude · Sweeper→opencode),以及(b)PREAMBLE persona(python3 harness/scripts/archetype.py --get /<kw>)——dispatch 前将该 preamble 注入llmwiki/personas/<archetype>.md,确保 agy/opencode/kiro 进入正确角色(例如 Sweeper 禁止添加 feature)。archetype 与 CLI 的适配关系标记为<task>(verified:false)。参见 ADR-015。harness/archetypes.config.yaml
- 等待:6b. (可选)commit 前进行 senior QC——如果希望在最终提交前让一双 senior 眼睛检查 diff,可调用
orca orchestration check --wait --types worker_done --timeout-ms 300000(Skill tool →/qc-code):评审 4 个方面(security/performance/naming/logic),给出评分 + verdict,并为每个 logic bug 生成复现测试qc-code。Verdict 为“需要修复”→ commit 前先修复。可选,并非强制——LLM verdict 仅作 advisory(由人决定),真正的硬性 gate 是步骤 7 运行的qc-*测试。qc-* - 检查:会在每次 commit 前自动运行(包含步骤 3b:
verify-before-commit,确定性运行qc-regression.py --run测试,防止已复现的 bug 悄悄回归)。qc-*
Branches
分支
| ID | Kind | Guard | Hành vi | Skip / failure | Rejoin |
|---|---|---|---|---|---|
| B01 | conditional_required | đầu vào là SỰ CỐ (bug, lỗi runtime, regression, "hôm qua còn chạy") | GỌI skill | sự cố nặng cần fan-out → orca-issue escalate về W07, giữ 2 chốt cứng của nó | kết thúc (hoặc W07 khi escalate) |
| B02 | conditional_required | task cần người sống trả lời (HITL) | nhãn | — | chờ người, rồi W06 |
| B03 | recovery | CLI headless im lặng ~60–90s / không tạo file / thiếu | kill + Claude tự tiếp quản theo spec; thử CLI rẻ kế tiếp theo thứ tự sẵn-có (probe | cạn CLI → Claude | bước đang chạy (W03/W08) |
| B04 | user_optional | muốn soi diff trước khi chốt | Bước 6b — | verdict CẦN SỬA → sửa trước commit | W09 |
| B05 | user_optional | muốn dispatch theo posture ( | | — | W07 |
| B06 | conditional_required | sắp đụng docker ( | | không backup + xác nhận → không đổi volume | bước đang chạy |
| B07 | capability_optional | có | search đầu session / remember sau decision + cuối session (Reference — AgentMemory) | không có → bỏ qua | W02 / W10 |
Chi tiết nhánh sự cố (nguyên văn):
| ID | 类型 | Guard | 行为 | Skip / failure | 汇合点 |
|---|---|---|---|---|---|
| B01 | 条件必需 | 输入是事故(bug、runtime 错误、regression、“昨天还能运行”) | 调用 skill | 严重事故需要 fan-out → orca-issue 升级到 W07,同时保留其两个硬性 gate | 结束(或升级时进入 W07) |
| B02 | 条件必需 | task 需要真实人员回答(HITL) | 在 ledger 中标记 | — | 等待人员,然后进入 W06 |
| B03 | 恢复 | Headless CLI 静默约 60–90 秒、未创建文件或缺少 | kill + Claude 按 spec 接管;按可用顺序尝试下一个低成本 CLI(探测 | CLI 耗尽 → Claude | 当前步骤(W03/W08) |
| B04 | 用户可选 | 希望在最终提交前检查 diff | 步骤 6b—— | Verdict 为“需要修复”→ commit 前修复 | W09 |
| B05 | 用户可选 | 希望按 posture 分派任务( | | — | W07 |
| B06 | 条件必需 | 即将操作 docker( | 通过 | 未备份且未获确认 → 不更改 volume | 当前步骤 |
| B07 | 能力可选 | 存在 | 在 session 开始时 search / 在 decision 后和 session 结束时 remember(参见 AgentMemory) | 不存在 → 跳过 | W02 / W10 |
事故分支详情:
Rẽ nhánh: SỰ CỐ ≠ tính năng
分支:事故 ≠ 功能
Đầu vào là sự cố (bug, lỗi runtime, regression, "hôm qua còn chạy") → GỌI skill thay vì propose: vòng riêng triage → repro-first gate (chưa tái hiện chưa được sửa) → fix red→green → distill kép. Sự cố nặng cần fan-out thì orca-issue escalate ngược về đây để dispatch, nhưng 2 chốt cứng của nó vẫn giữ.
orca-issue输入是事故(bug、runtime 错误、regression、“昨天还能运行”)→ 调用 skill ,不要 propose:使用独立的 triage → repro-first gate(未复现前不得修复)→ fix red→green → 双重 distill。如果严重事故需要 fan-out,orca-issue 会反向升级到这里执行 dispatch,但其两个硬性 gate 仍然保留。
orca-issueValidation và stopping
验证与停止条件
Cổng người: gate W04 (duyệt SPEC) và Cổng 1 HITL ở W06. Cổng máy: R7 chặn SPEC/PLAN thiếu mục lúc write+commit; + trước mỗi commit. Watchdog CLI ~60–90s (B03); timeout 300000 ms. Đối soát task theo dự án: .
verify-before-commitqc-regression.py --runcheck --waitorca-reconcile.py [--scope current|all]人工 gate:W04(审批 SPEC)以及 W06 的 Gate 1 HITL。机器 gate:R7 在 write+commit 阶段阻止缺少必要章节的 SPEC/PLAN;每次 commit 前执行 + 。CLI watchdog:约 60–90 秒(B03); timeout:300000 ms。按项目对账 task:。
verify-before-commitqc-regression.py --runcheck --waitorca-reconcile.py [--scope current|all]Examples
示例
- Positive: "propose export CSV cho báo cáo" → sweep sạch → ra 2 trang liên quan →
/querysinh SPEC,/proposerender bằng.html→ user duyệt gate →opencode run -m opencode/big-picklesinh/plan3 task → task-create có stamp → 2 task AFKDDMMYY-export-csv-PLAN.mddispatchbuild, 1 task HITL ("chọn định dạng ngày") gắn--inject→ worker_done → verify-before-commit xanh → output report.ready-for-human - Boundary/failure: "hôm qua login còn chạy, nay 500" → B01: không propose, gọi (repro-first).
orca-issue - Boundary: render
opencode runim lặng 90s, không tạo file → B03: kill, Claude render fallback; R7 vẫn gác chất lượng lúc write..html
- 正向: “为报告提议 CSV 导出” → sweep 确认 base 最新 → 返回 2 个相关页面 →
/query生成 SPEC,使用/propose渲染opencode run -m opencode/big-pickle→ 用户通过 gate 审批 →.html生成包含 3 个 task 的/plan→ task-create 带有项目标记 → 2 个 AFKDDMMYY-export-csv-PLAN.mdtask 使用build分派,1 个 HITL task(“选择日期格式”)标记为--inject→ worker_done → verify-before-commit 通过 → 输出报告。ready-for-human - 边界/失败: “昨天登录还能运行,现在出现 500” → B01:不要 propose,调用 (repro-first)。
orca-issue - 边界: 渲染
opencode run时静默 90 秒且未创建文件 → B03:kill,由 Claude 渲染 fallback;R7 仍会在 write 阶段保障质量。.html
Reference — Gotchas orchestration CLI (bài học 230626)
参考——Orchestration CLI 易错点(230626 的教训)
- 2 id từ : response có envelope
task-create --json(uuid) VÀid(result.task.id). Mọi lệnh sau (task_xxxx,gate-create --task,dispatch --task) PHẢI dùngtask-update --id, KHÔNG dùng envelope id. Dùng nhầm: gate vẫn tạo/resolve được nhưng trỏ task ma → task thật kẹt ởresult.task.id.ready - Status hợp lệ của :
task-update --status|ready|in_progress|completed. KHÔNG cófailed— truyềndonetrảdonelặng lẽ (không báo lỗi rõ).ok:false - Lấy id thật chắc ăn: rồi match theo
orca orchestration task-list --json.spec
- 从 获取两个 id: response 同时包含 envelope
task-create --json(uuid)和id(result.task.id)。后续所有命令(task_xxxx、gate-create --task、dispatch --task)必须使用task-update --id,不能使用 envelope id。使用错误 id 时,gate 仍可能创建或解析成功,但会指向一个不存在的 task,真实 task 将停留在result.task.id状态。ready - 的有效状态:
task-update --status|ready|in_progress|completed。不存在failed——传入done会静默返回done(不会给出清晰错误)。ok:false - 可靠获取真实 id: ,然后按
orca orchestration task-list --json匹配。spec
Reference — An toàn container / DB (BẮT BUỘC trước khi đụng docker)
参考——容器/DB 安全(操作 docker 前强制执行)
Trước khi đụng container (docker compose / docker run)
操作容器前(docker compose / docker run)
bash
undefinedbash
undefinedBẮT BUỘC chạy trước bất kỳ --force-recreate, down, recreate nào:
BẮT BUỘC chạy trước bất kỳ --force-recreate, down, recreate nào:
docker inspect <container_name> --format '{{json .Mounts}}' | python3 -m json.tool
So sánh `Source` path với volume trong compose file sắp dùng. Nếu khác → DỪNG, hỏi user.
**Production DB của Cozyroom:** `/mnt/c/Users/olive/orca/workspaces/home-spotify/m/data/metadata.db`
Không bao giờ đổi volume mount mà không backup + xác nhận user.
> Bài học 2026-05-29: recreate container với compose sai path → mất toàn bộ DB người dùng.docker inspect <container_name> --format '{{json .Mounts}}' | python3 -m json.tool
将 `Source` 路径与即将使用的 compose 文件中的 volume 进行比较。如果不一致 → 停止并询问用户。
**Cozyroom 的 Production DB:** `/mnt/c/Users/olive/orca/workspaces/home-spotify/m/data/metadata.db`
未经备份和用户确认,绝不能更改 volume mount。
> 2026-05-29 的教训:使用错误的 compose 路径重建容器 → 整个用户 DB 丢失。Reference — Dispatch nhanh
参考——快速 Dispatch
⚠️ CLI agent headless KHÔNG đáng tin (bài học 250626 — orca-eval):/opencode run/agy -pchạy nền từ Claude Code thường không giao hàng (process thoát/treo, không tạo file — thực đo 1/5 task thành công). Quy tắc: đặt watchdog (~60–90s), nếu im lặng/không có file → kill + Claude tự tiếp quản theo spec (đừng chờ vô ích). Dùng OpenCode cho task boilerplate ĐỘC LẬP, đã verify được; task có dependency/nuance → Claude làm. Muốn dispatch THẬT cho agent → ưu tiênkiro runinteractive thay vìorca terminal/-p.run
bash
undefined⚠️ Headless CLI agent 不可靠(250626 的教训——orca-eval): 从 Claude Code 后台运行/opencode run/agy -p通常无法交付(进程退出或挂起,未创建文件——实测仅 1/5 task 成功)。规则:设置 watchdog(约 60–90 秒),如果静默或没有文件 → kill + Claude 按 spec 自行接管(不要无效等待)。OpenCode 适用于已经验证为独立、无依赖的 boilerplate task;有 dependency 或 nuance 的 task → 由 Claude 完成。需要真正向 agent dispatch 时,优先使用kiro run交互模式,而不是orca terminal/-p。run
bash
undefinedOpenCode non-interactive (DEFAULT — dùng big-pickle miễn phí):
OpenCode non-interactive (DEFAULT — dùng big-pickle miễn phí):
⚠ KHÔNG dùng --dangerously-skip-permissions khi dispatch từ Claude Code — auto-mode classifier sẽ DENY (bài học 120626)
⚠ KHÔNG dùng --dangerously-skip-permissions khi dispatch từ Claude Code — auto-mode classifier sẽ DENY (bài học 120626)
opencode run -m opencode/big-pickle --dir "<project>" "<task>"
opencode run -m opencode/big-pickle --dir "<project>" "<task>"
Antigravity non-interactive:
Antigravity non-interactive:
agy -p "<task>"
agy -p "<task>"
Kiro non-interactive:
Kiro non-interactive:
kiro run --dir "<project>" "<task>"
kiro run --dir "<project>" "<task>"
GitHub Copilot Coding Agent (async — via GitHub issue):
GitHub Copilot Coding Agent (async — via GitHub issue):
gh issue create --title "<task>" --body "<task details>" --assignee "@me"
gh issue create --title "<task>" --body "<task details>" --assignee "@me"
Then: gh copilot suggest "<task>" or trigger via VS Code Copilot Chat
Then: gh copilot suggest "<task>" or trigger via VS Code Copilot Chat
Nếu dùng Orca terminal (interactive):
Nếu dùng Orca terminal (interactive):
orca terminal list
orca terminal create --worktree active --title "OpenCode" --command "opencode"
orca terminal send --title "OpenCode" --text "<task>"
orca terminal wait --for tui-idle && orca terminal read --title "OpenCode"
undefinedorca terminal list
orca terminal create --worktree active --title "OpenCode" --command "opencode"
orca terminal send --title "OpenCode" --text "<task>"
orca terminal wait --for tui-idle && orca terminal read --title "OpenCode"
undefinedReference — Phân công task theo chi phí
参考——按成本分派 Task
| Task | Agent | Model |
|---|---|---|
| Search, grep, list, read | OpenCode | |
| Viết boilerplate, CRUD | OpenCode | |
| Wiki ingest/lint | OpenCode | |
| Review diff, explain | agy | default |
| Architectural decisions | Claude Code | Opus 5 ( |
| Debug lỗi khó | Claude Code | Sonnet 5 ( |
| Frontend UI boilerplate | Kiro | default |
| Cross-file refactor | Kiro | default |
| PR review + suggest fixes | Copilot | gpt-4o (GitHub) |
| Task | Agent | Model |
|---|---|---|
| 搜索、grep、列出、读取 | OpenCode | |
| 编写 boilerplate、CRUD | OpenCode | |
| Wiki ingest/lint | OpenCode | |
| 审查 diff、解释 | agy | default |
| 架构决策 | Claude Code | Opus 5 ( |
| 疑难调试 | Claude Code | 默认 Sonnet 5 ( |
| 前端 UI boilerplate | Kiro | default |
| 跨文件重构 | Kiro | default |
| PR review + 建议修复 | Copilot | gpt-4o (GitHub) |
Reference — Agent binaries
参考——Agent Binaries
| Agent | Binary | CHECK |
|---|---|---|
| Antigravity | | |
| OpenCode | | |
| Kiro | | |
| GitHub Copilot | | |
| Orca | GUI only — dùng qua | |
| Agent | Binary | CHECK |
|---|---|---|
| Antigravity | | |
| OpenCode | | |
| Kiro | | |
| GitHub Copilot | | |
| Orca | 仅 GUI——通过 | |
Reference — Antigravity Dispatch Reality (tested 2026-05-21, updated 2026-05-23)
参考——Antigravity Dispatch 实际情况(2026-05-21 测试,2026-05-23 更新)
Binary: — . NOT , NOT (Linux).
agy%LOCALAPPDATA%\agy\bin\agy.exeantigravity~/.local/bin/agyTạo terminal:
bash
orca terminal create --worktree active --title "Antigravity" --command "agy"Hook: Orca v1.4.21 fix Windows hook quoting — no manual edit needed.
antigravity-hook.cmdOpenCode: — npm global at .
opencode%APPDATA%\npm\opencode.cmdDispatch status:
| Bước | Trạng thái |
|---|---|
| Thử sau v1.4.21 — nếu fail, dùng |
| OK |
| Antigravity đọc file/chạy lệnh | OK |
| Cần retest |
Binary:——。不是 ,也不是 (Linux)。
agy%LOCALAPPDATA%\agy\bin\agy.exeantigravity~/.local/bin/agy创建 terminal:
bash
orca terminal create --worktree active --title "Antigravity" --command "agy"Hook:Orca v1.4.21 已修复 Windows hook quoting—— 无需手动编辑。
antigravity-hook.cmdOpenCode:——npm global 位于 。
opencode%APPDATA%\npm\opencode.cmdDispatch 状态:
| 步骤 | 状态 |
|---|---|
| 在 v1.4.21 之后尝试——如果失败,使用 |
手动 | OK |
| Antigravity 读取文件/运行命令 | OK |
| 需要重新测试 |
Reference — Slash Skill Installation per Agent CLI
参考——按 Agent CLI 安装 Slash Skill
Agent nhận dispatch: tự cài skill từ trước khi bắt đầu.
llmwiki/skills/收到 dispatch 的 agent:在开始前自行从 安装 skill。
llmwiki/skills/Claude Code CLI
Claude Code CLI
bash
mkdir -p .claude/commands/
cp llmwiki/skills/<loop>/<name>.md .claude/commands/<name>.mdbash
mkdir -p .claude/commands/
cp llmwiki/skills/<loop>/<name>.md .claude/commands/<name>.mdUser-level:
User-level:
mkdir -p ~/.claude/commands/
cp llmwiki/skills/<loop>/<name>.md ~/.claude/commands/<name>.md
undefinedmkdir -p ~/.claude/commands/
cp llmwiki/skills/<loop>/<name>.md ~/.claude/commands/<name>.md
undefinedOpenCode CLI
OpenCode CLI
bash
mkdir -p ~/.agents/skills/<name>/
cp llmwiki/skills/<loop>/<name>.md ~/.agents/skills/<name>/SKILL.mdbash
mkdir -p ~/.agents/skills/<name>/
cp llmwiki/skills/<loop>/<name>.md ~/.agents/skills/<name>/SKILL.mdRestart OpenCode để discover skill mới.
Restart OpenCode để discover skill mới.
undefinedundefinedAntigravity CLI
Antigravity CLI
bash
mkdir -p ~/.agents/skills/<name>/
cp llmwiki/skills/<loop>/<name>.md ~/.agents/skills/<name>/SKILL.mdbash
mkdir -p ~/.agents/skills/<name>/
cp llmwiki/skills/<loop>/<name>.md ~/.agents/skills/<name>/SKILL.mdKiro CLI
Kiro CLI
bash
mkdir -p ~/.kiro/skills/<name>/
cp llmwiki/skills/<loop>/<name>.md ~/.kiro/skills/<name>/SKILL.mdbash
mkdir -p ~/.kiro/skills/<name>/
cp llmwiki/skills/<loop>/<name>.md ~/.kiro/skills/<name>/SKILL.mdGitHub Copilot
GitHub Copilot
bash
undefinedbash
undefinedWorkspace-level steering via .github/copilot-instructions.md
Workspace-level steering via .github/copilot-instructions.md
Skills injected as context file:
Skills injected as context file:
mkdir -p .github/
cat llmwiki/skills/<loop>/<name>.md >> .github/copilot-instructions.md
mkdir -p .github/
cat llmwiki/skills/<loop>/<name>.md >> .github/copilot-instructions.md
Or per-skill steering file (Copilot Workspace):
Or per-skill steering file (Copilot Workspace):
mkdir -p .github/skills/
cp llmwiki/skills/<loop>/<name>.md .github/skills/<name>.md
undefinedmkdir -p .github/skills/
cp llmwiki/skills/<loop>/<name>.md .github/skills/<name>.md
undefinedRules cho tất cả agent
所有 Agent 的规则
- Copy skill files only — skip ,
README.md,index.md.log.md - File by file — no .
cp -R - Scope: (Claude Code);
.claude/commands/(OpenCode/agy);~/.agents/skills/(Kiro);~/.kiro/skills/(Copilot)..github/ - Sau khi cài, report:
| Agent | Skill | Installed at | |-------------|---------|------------------------------------------| | claude-cli | propose | .claude/commands/propose.md | | opencode | propose | ~/.agents/skills/propose/SKILL.md | | antigravity | propose | ~/.agents/skills/propose/SKILL.md | | kiro | propose | ~/.kiro/skills/propose/SKILL.md | | copilot | propose | .github/skills/propose.md |
- 只复制 skill 文件——跳过 、
README.md、index.md。log.md - 逐个文件复制——不要使用 。
cp -R - Scope:(Claude Code);
.claude/commands/(OpenCode/agy);~/.agents/skills/(Kiro);~/.kiro/skills/(Copilot)。.github/ - 安装后报告:
| Agent | Skill | Installed at | |-------------|---------|------------------------------------------| | claude-cli | propose | .claude/commands/propose.md | | opencode | propose | ~/.agents/skills/propose/SKILL.md | | antigravity | propose | ~/.agents/skills/propose/SKILL.md | | kiro | propose | ~/.kiro/skills/propose/SKILL.md | | copilot | propose | .github/skills/propose.md |
Reference — AgentMemory — Persistent Cross-Session Memory
参考——AgentMemory 持久化跨 Session 记忆
Service tại — lưu context giữa các session.
https://agentmemory.giatbh.io.vn/bash
BASE="https://agentmemory.giatbh.io.vn"
TOKEN="${AGENTMEMORY_TOKEN}"服务地址:——在 session 之间保存 context。
https://agentmemory.giatbh.io.vn/bash
BASE="https://agentmemory.giatbh.io.vn"
TOKEN="${AGENTMEMORY_TOKEN}"Health check
Health check
curl -sk -H "Authorization: Bearer $TOKEN" "$BASE/agentmemory/health"
curl -sk -H "Authorization: Bearer $TOKEN" "$BASE/agentmemory/health"
Ghi memory (cuối session hoặc sau quyết định quan trọng)
Ghi memory (cuối session hoặc sau quyết định quan trọng)
curl -sk -X POST "$BASE/agentmemory/remember"
-H "Authorization: Bearer $TOKEN"
-H "Content-Type: application/json"
-d '{"content":"<nội dung>","category":"fact|preference|decision|context"}'
-H "Authorization: Bearer $TOKEN"
-H "Content-Type: application/json"
-d '{"content":"<nội dung>","category":"fact|preference|decision|context"}'
curl -sk -X POST "$BASE/agentmemory/remember"
-H "Authorization: Bearer $TOKEN"
-H "Content-Type: application/json"
-d '{"content":"<nội dung>","category":"fact|preference|decision|context"}'
-H "Authorization: Bearer $TOKEN"
-H "Content-Type: application/json"
-d '{"content":"<nội dung>","category":"fact|preference|decision|context"}'
Tìm kiếm (đầu session hoặc trước khi propose)
Tìm kiếm (đầu session hoặc trước khi propose)
curl -sk -H "Authorization: Bearer $TOKEN"
"$BASE/agentmemory/search?query=<từ+khóa>"
"$BASE/agentmemory/search?query=<từ+khóa>"
**Khi dùng:**
- **Đầu session**: search context trước khi bắt đầu
- **Sau decision**: lưu approach + lý do
- **Cuối session**: lưu tasks xong, commits, trạng tháicurl -sk -H "Authorization: Bearer $TOKEN"
"$BASE/agentmemory/search?query=<từ+khóa>"
"$BASE/agentmemory/search?query=<từ+khóa>"
**使用时机:**
- **Session 开始时**:开始前 search context。
- **做出 decision 后**:保存 approach + 原因。
- **Session 结束时**:保存已完成 task、commit 和状态。Reference — Commands chính
参考——主要命令
bash
orca orchestration run --spec "Propose: <tính năng>. Query wiki, tạo draft, gate chờ duyệt."Dispatch chi tiết:llmwiki/skills/orchestrate/orca-dispatch-reference.md
bash
orca orchestration run --spec "Propose: <tính năng>. Query wiki, tạo draft, gate chờ duyệt."详细 Dispatch 方式:llmwiki/skills/orchestrate/orca-dispatch-reference.md
Delivery — Output Report (sau khi implement xong)
Delivery——输出报告(实现完成后)
Đây là báo cáo kết quả sau khi implement, KHÔNG phải propose plan. Propose plan phải được tạo ở Bước 2 TRƯỚC khi làm bất kỳ thứ gì.
After all implementation tasks complete, write an output report to the wiki.
这是实现完成后的结果报告,不是 propose plan。 Propose plan 必须在执行任何操作之前,于步骤 2 中创建。
所有 implementation task 完成后,将输出报告写入 wiki。
Steps
步骤
1. Build the filename:
- Format:
DDMMYY-<ten>.md - = today (e.g.,
DDMMYYfor 2 June 2026)020626 - = 2–4 kebab-case words summarising what was done (e.g.,
<ten>,landing-page-coteccons,brand-kit-fintech)ingest-auth-spec
2. Write :
llmwiki/wiki/draft/orca/DDMMYY-<ten>.md---
type: draft
title: "DDMMYY-<ten>"
status: proposed
tags: [<skill-name>, output-report]
timestamp: YYYY-MM-DD
---1. 构建文件名:
- 格式:
DDMMYY-<ten>.md - = 当天日期(例如,2026 年 6 月 2 日为
DDMMYY)020626 - = 2–4 个 kebab-case 单词,概括完成的工作(例如
<ten>、landing-page-coteccons、brand-kit-fintech)ingest-auth-spec
2. 写入 :
llmwiki/wiki/draft/orca/DDMMYY-<ten>.md---
type: draft
title: "DDMMYY-<ten>"
status: proposed
tags: [<skill-name>, output-report]
timestamp: YYYY-MM-DD
---DDMMYY-<ten>
DDMMYY-<ten>
Type: draft
Status: proposed
Tags: <skill-name>, output-report
Proposed: YYYY-MM-DD
Type: draft
Status: proposed
Tags: <skill-name>, output-report
Proposed: YYYY-MM-DD
Agent Task Assignment
Agent Task Assignment
| Task | Agent | Status |
|---|---|---|
| <mô tả task 1> | <tên agent> | pending / in-progress / done |
| <mô tả task 2> | <tên agent> | pending / in-progress / done |
| Task | Agent | Status |
|---|---|---|
| <mô tả task 1> | <tên agent> | pending / in-progress / done |
| <mô tả task 2> | <tên agent> | pending / in-progress / done |
What
What
<One sentence — what this skill invocation produced or decided>
<One sentence — what this skill invocation produced or decided>
Output
Output
<Key artefacts, files created/modified, or decisions made>
<Key artefacts, files created/modified, or decisions made>
Files
Files
| File | Action |
|---|---|
| created / modified |
| File | Action |
|---|---|
| created / modified |
Notes
Notes
- Invoked via: skill
/<skill-name>
- Invoked via: skill
/<skill-name>
Origin
Origin
- Draft:
wiki/draft/orca/DDMMYY-<ten>.md - Commit: (filled by verify-before-commit)
- Date promoted: (filled by verify-before-commit)
**3. Update wiki index & log:**
- `llmwiki/wiki/index.md` — append one row: `| [DDMMYY-<ten>](draft/orca/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |`
- `llmwiki/wiki/log.md` — append: `## YYYY-MM-DD — <skill-name> — <ten>`
**4. Update agent statuses & sync push — BẮT BUỘC, không bỏ qua:**
- Mở lại file `llmwiki/wiki/draft/orca/DDMMYY-<ten>.md`
- Cập nhật cột **Status** trong bảng `## Agent Task Assignment` theo trạng thái thực tế của từng agent (pending → in-progress → done)
- Clone `rheinmir/setup` nhánh `orca`, copy các skill file đã sửa, rồi push ngược lên:
```bash
git clone git@github.com:rheinmir/setup.git /tmp/rheinmir-setup-sync -b orca --depth 1
cp /path/to/skill.md /tmp/rheinmir-setup-sync/skills/<skill-name>/SKILL.md
cd /tmp/rheinmir-setup-sync
git add .
git commit -m "skill: sync update — DDMMYY-<ten>"
git push origin orca
rm -rf /tmp/rheinmir-setup-syncSkip chỉ khi skill không tạo ra artifact hoặc quyết định nào.
- Draft:
wiki/draft/orca/DDMMYY-<ten>.md - Commit: (filled by verify-before-commit)
- Date promoted: (filled by verify-before-commit)
**3. 更新 wiki index 与 log:**
- `llmwiki/wiki/index.md`——追加一行:`| [DDMMYY-<ten>](draft/orca/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |`
- `llmwiki/wiki/log.md`——追加:`## YYYY-MM-DD — <skill-name> — <ten>`
**4. 更新 agent 状态并同步 push——强制执行,不得跳过:**
- 重新打开 `llmwiki/wiki/draft/orca/DDMMYY-<ten>.md`
- 根据每个 agent 的实际状态更新 `## Agent Task Assignment` 表中的 **Status** 列(pending → in-progress → done)
- Clone `rheinmir/setup` 的 `orca` 分支,复制已修改的 skill 文件,然后反向 push:
```bash
git clone git@github.com:rheinmir/setup.git /tmp/rheinmir-setup-sync -b orca --depth 1
cp /path/to/skill.md /tmp/rheinmir-setup-sync/skills/<skill-name>/SKILL.md
cd /tmp/rheinmir-setup-sync
git add .
git commit -m "skill: sync update — DDMMYY-<ten>"
git push origin orca
rm -rf /tmp/rheinmir-setup-sync仅当 skill 没有产生 artifact 或 decision 时才可跳过。