@kienntpixon/dieu-phoi 0.7.1 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +3 -0
- package/agents/dp-exec.md +2 -0
- package/agents/dp-helper.md +2 -0
- package/agents/dp-scout.md +2 -0
- package/agents/dp-verify.md +2 -0
- package/bin/dieu-phoi.cjs +30 -2
- package/hook.cjs +1218 -53
- package/lib/aggregate.cjs +5 -4
- package/lib/args.cjs +1 -1
- package/lib/cbm.cjs +8 -2
- package/lib/commands.cjs +417 -36
- package/lib/deps.cjs +162 -0
- package/lib/knowledge.cjs +3 -4
- package/lib/load.cjs +332 -0
- package/lib/procs.cjs +422 -0
- package/lib/profile-scan.cjs +85 -0
- package/lib/profile-seed.cjs +147 -0
- package/lib/profile.cjs +141 -1
- package/lib/prune.cjs +66 -9
- package/lib/setup.cjs +59 -12
- package/lib/worktree.cjs +417 -0
- package/package.json +3 -1
- package/profile/lessons.md +85 -0
- package/profile/unity-lanes.md +316 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# Changelog — @kienntpixon/dieu-phoi
|
|
2
2
|
|
|
3
|
+
## 0.7.3 (2026-11-06)
|
|
4
|
+
|
|
5
|
+
Tài nguyên máy (run jiptvo5g, theo hợp đồng 0.7.3): trần song song, trần worktree, thu dọn subagent. `CORE_VERSION` 0.7.3; đi cùng skill 1.6.3.
|
|
6
|
+
Dữ liệu gốc: 21 ngày, 4008 agent, đồng thời toàn máy tối đa 22, một phiên tối đa 16. Chi tiết hành vi ở CONTRACT.md "Tài nguyên máy (core 0.7.3)".
|
|
7
|
+
**Sau khi cài:** `npm i -g` + `dieu-phoi setup` (đăng ký hook `SubagentStart` mới) + `dieu-phoi doctor`. Không đổi sink (không có cột/sự kiện đồng bộ mới; `reap`, `reap_orphans`, `worktree` chỉ ở máy).
|
|
8
|
+
**Mặc định đổi:** `kill_leftovers` từ `true` thành `"guarded"` (xem s7); trần song song 4/phiên + 8/máy bật sẵn (`0` = tắt). `--deps` của `wt add` là opt-in.
|
|
9
|
+
|
|
10
|
+
- **s1 — sổ agent sống + trần song song:** `data/live/<agent_id>.json` do hook ghi (`SubagentStart` ghi, `--watch` làm mới, `SubagentStop` xoá, TTL 6 giờ). `PreToolUse(Agent)` từ chối (`reason_code=parallel-cap`, `cap_scope`) khi phiên đã có `max_parallel_session` (4) exec/plan/verify gen 1 hoặc toàn máy đã có `max_parallel_machine` (8) agent; cảnh báo ở `warn_parallel_machine` (6); cờ `|parallel_ok` cho qua. Lý do deny nói rõ "chờ agent X xong rồi giao lại". `dispatch` thêm `parallel_ok`, `live_session`, `live_machine`. `doctor` có mục `live-agents`.
|
|
11
|
+
- **s2 — trần worktree:** `wt add` từ chối khi repo đủ `max_worktrees_repo` (8, đếm cả checkout chính) kèm danh sách ứng viên dọn; `--force` vượt; cảnh báo ở 75%. `wt clean --stale-days N` (mặc định `wt_stale_days` = 7) dọn worktree có dấu, sạch, nhánh đã merge. `wt list [--all] [--json]`.
|
|
12
|
+
- **s3 — `--deps` (opt-in):** `wt add --deps auto|link|install|none [--deps-path d]` (env `DIEU_PHOI_WT_DEPS`, config `wt_deps`, mặc định `none`): junction `node_modules` hoặc `pnpm install --frozen-lockfile --offline`. Gỡ worktree unlink junction TRƯỚC `git worktree remove` (test mồi: `node_modules` của checkout chính còn nguyên), khôi phục junction nếu git lỗi, xoá vỏ thư mục còn sót mà không đi xuyên link. Lưu ý: `npm install` trong worktree dùng `--deps link` ghi vào `node_modules` chung.
|
|
13
|
+
- **s4 — doctor so realpath:** `agents/*.md` đã cài qua junction/symlink không còn báo `outdated` giả; khác nội dung thật vẫn `outdated`.
|
|
14
|
+
- **s5 — đo tải:** `dieu-phoi load sample [--interval 10] [--count 12] [--repo R]` ghi `data/load.jsonl` (đếm agent theo phiên/toàn máy, hàng đợi, `worktrees_marked` — **chỉ của repo `--repo`**, mặc định cwd —, tốc độ đĩa; không có đường dẫn/prompt); `load report [--days 21]` ra phút ở mỗi mức và tương quan IO. `SubagentStart` ghi một mẫu chỉ đếm.
|
|
15
|
+
- **s6 — kẹt/mồ côi:** `stuck_idle_min` (20), `stuck_hard_min` (120), `stuck_after_status_min` (5); `UserPromptSubmit`/`PostToolUse(Agent)` chèn nhắc `TaskStop`; `dieu-phoi reap [--yes] [--session S]` (dry-run mặc định; `--yes` xoá file live + sự kiện `reap`).
|
|
16
|
+
- **s7 — `kill_leftovers: "guarded"`:** kill chỉ tiến trình quy chắc về agent (cmd trong worktree agent / cây từ shell agent), kiểm lại pid + giờ tạo, danh sách cấm (claude, cbm, Docker/WSL, Unity, Orca, IDE, hệ thống, MCP server…), không kill khi còn claude con; `true` giữ hành vi 0.7.2, `false` chỉ báo. `reap --orphans` thêm tail/sleep/shell mồ côi quá `orphan_kill_min` (60); `doctor` mục `orphan-processes`.
|
|
17
|
+
- **s8 — tích hợp:** `wt clean` (kể cả `--stale-days`, `--yes` sau nghiệm thu) và verdict/discard giữ worktree đang là cwd (hoặc thư mục con) của agent sống theo sổ live (`liveAgentInWorktree`), có test `wt-live.test.cjs`.
|
|
18
|
+
- **Test:** `cbm.test.cjs` hết chập chờn khi chạy song song: timeout probe/daemon nới qua env `DIEU_PHOI_CBM_PROBE_TIMEOUT_MS` / `DIEU_PHOI_CBM_DAEMON_TIMEOUT_MS` (mặc định sản phẩm vẫn 3 s / 5 s), spawn setup 180 s.
|
|
19
|
+
- **Sửa trước phát hành:** `prune --yes` báo đúng số dòng đã chuyển khỏi events.jsonl vào archive (trước đây in nhầm "không xoá dòng nào"); `numSetting` (trần worktree, ngày dọn) khi env hỏng rơi về config.json rồi mới về mặc định.
|
|
20
|
+
|
|
21
|
+
## 0.7.2 (2026-11-05)
|
|
22
|
+
|
|
23
|
+
Đề xuất core K1–K7 của retro 2026-11-05 (run ipmwxitv). `CORE_VERSION` 0.7.2; đi cùng skill 1.6.2.
|
|
24
|
+
**Thứ tự phát hành:** deploy `sheet/Code.gs` bản mới (cột `source`, K4) TRƯỚC, rồi `npm i -g` + `dieu-phoi setup`.
|
|
25
|
+
**Sink cần deploy:** Code.gs cũ làm rơi cột `source` nên `stats` ở sink vẫn đếm override ngầm (implicit) như lựa chọn người dùng, lệch CLI tới khi dán lại.
|
|
26
|
+
|
|
27
|
+
- **K1 — `accept` không gộp knowledge lặng lẽ:** tìm delta qua `dispatch.run` + quét tên file, nhận `-h<n>`, ghi event `knowledge_merge` (chỉ ở máy); `state` tách nhóm "accepted-unmerged".
|
|
28
|
+
- **K2 — agent mồ côi:** `complete.ended_without_status`; `state`/SessionStart liệt kê dispatch không có STATUS.
|
|
29
|
+
- **K3 — gate `verify-orphan`:** PreToolUse(Agent) từ chối `role=verify` cho task chưa có dispatch exec và không nằm trong kế hoạch đã duyệt (`|batch` được miễn).
|
|
30
|
+
- **K4 — override ngầm:** exec không có bản ghi `choose` → nhắc chạy `choose`; tier giao khác `choose_tier` mà chưa có override → ghi override `source=implicit`. Không phải lựa chọn người dùng: `aggregate` tách riêng, không vào `overridePrior`/`approved_tier`. **Sink:** `Code.gs` thêm cột `source`, `summarizeOverrides_` bỏ implicit (parity + simulate kiểm).
|
|
31
|
+
- **K5 — trần phiên cứng (`session-cap`):** từ chối exec mở root mới khi context điều phối > 800000 token hoặc ≥ 10 lần nén; lượt tiếp nối (root đã có dispatch) qua; cờ `|session_ok` trong thẻ cho qua.
|
|
32
|
+
- **K6 — bí danh nhãn:** `test-run`/`test-verify`/`device-qa` → `test-write`; `git-ops`/`release-build` → `mechanical-edit`; `read-scan` → `search`.
|
|
33
|
+
- **K7 — `prune` giữ delta chưa gộp** (hash không nằm trong `applied` của kho nào) và luôn giữ `contract-r*`, `steps-r*`, `plan*`, `handoff-*`; báo `keep_deltas` trong dry-run/`--json`.
|
|
34
|
+
- **Fast-mode:** `MODE_ASK_LINE` không còn bảo hỏi mode ngay lượt đầu; `plan-table` in "Mode: HỎI …" chỉ khi root chưa có mode và có ≥ 4 bước s≤6, root đã có mode thì in mode đó, còn lại "normal (không hỏi)".
|
|
35
|
+
- **s11 — đếm nén trên transcript lớn:** transcript > 32 MB không cache từng đặt `compactions = null` cả phiên; nay đếm `compact_boundary` bằng quét byte trên [0, offset) (cache cũ null được probe lại, không mất `cum_usd`). `ORCH_NEW_SESSION_TOKENS` 400k → **250k** (chi phí điều phối mỗi lượt nhảy ở ~250k); trần K5 vẫn 800k/10, test `ctx-compact-count` khoá bất biến ngưỡng nhắc < trần.
|
|
36
|
+
- **Profile (CLI):** `profile scan` (quét secret/dữ liệu máy, exit 2 nếu có, không in giá trị) và `profile publish --to <repo>/skill/profile` (chép bản tuyển đã cài, bỏ dòng riêng máy, LF, scan trước khi ghi); `profile apply` ghi `.lessons.curated.md`.
|
|
37
|
+
- **Gói npm mang lessons đã tuyển; setup gộp dòng mới:** `prepack` (`scripts/pack-profile.cjs`) quét rồi chép `skill/profile/lessons.md` + `unity-lanes.md` vào `cli/profile/` (không kèm `profile.json`; `/cli/profile/` nằm trong .gitignore, nguồn vẫn là `skill/profile`). `setup` gộp vào profile đã cài: dòng bài học chưa có → nối cuối `lessons.md` và cộng dồn `.lessons.published.md`; dòng cũ và dòng riêng của máy không đụng tới; `unity-lanes.md` đã có thì không ghi đè, chỉ báo số dòng khác; chạy lại không thêm gì. `setup --dry-run` chỉ báo số dòng sẽ thêm, không ghi hook, settings, agent hay config.
|
|
38
|
+
- **s15 — gate task nền:** SubagentStop chặn MỘT lần khi transcript của agent `dp-*` còn Bash/PowerShell `run_in_background` hoặc Monitor chưa dừng (agent phải `TaskStop` đúng id của mình); `stop_hook_active` đã bật thì không chặn lần hai. Cờ tắt: config `block_leftover_tasks` (mặc định true). Agent nội bộ không bị chặn.
|
|
39
|
+
- **s16 — quét process con (chỉ báo):** SubagentStop ghi sự kiện `leftover` (chỉ ở máy) khi còn tiến trình con được tạo sau lúc dispatch và không phải claude.exe/cbm. Kill chỉ khi config `kill_leftovers: true` **và** không có agent dp- nào khác đang chạy trong khoảng sống của agent; mặc định tắt — chỉ bật khi không có subagent không-dp chạy cùng máy. `doctor`: mục `orphan-processes` cảnh báo claude.exe/cbm mồ côi > 6 giờ (không tự kill, gợi ý `Stop-Process`); `state`: dòng `orphan_procs`.
|
|
40
|
+
- **s17 — worktree có dấu:** `dieu-phoi wt add --task <id> [--repo R] [--path D] [--branch B]` tạo `<cha repo>/<tên repo>-wt-<id>` trên nhánh `dp/<id>` và ghi dấu `dieu-phoi.json` trong git-dir (không làm worktree dirty). `verdict --task <id> accept` của người dùng (kể cả `--root`) và `discard` gỡ worktree CÓ DẤU của đúng task nếu sạch (không `--force`, nhánh giữ nguyên); còn thay đổi chưa commit thì giữ và báo; reject không gỡ. Worktree không dấu không bị đụng. `dieu-phoi wt clean [--repo R] [--yes]`: dry-run mặc định, liệt kê worktree có dấu mà task đã nghiệm thu / bị loại hoặc thư mục đã mất; `--yes` mới gỡ (thư mục mất → chỉ bỏ đăng ký của worktree đó). Lưu ý: `git worktree remove` xoá cả file ignored (vd. `node_modules`) trong worktree đã sạch.
|
|
41
|
+
|
|
3
42
|
## 0.7.1 (2026-10-26)
|
|
4
43
|
|
|
5
44
|
Đề xuất core C1–C6 của retro 2026-10-26 (run 4b3mohix, task fgcq8dl9). `CORE_VERSION` 0.7.1; đi cùng skill 1.6.1.
|
package/README.md
CHANGED
|
@@ -44,6 +44,8 @@ khác).
|
|
|
44
44
|
|
|
45
45
|
`CLAUDE_CONFIG_DIR` được tôn trọng (thay cho `~/.claude`). Thử trên thư mục tạm: thêm `--claude-dir <thư mục>` vào mọi lệnh.
|
|
46
46
|
|
|
47
|
+
Gói npm mang sẵn bài học đã tuyển (`lessons.md`, `unity-lanes.md`); `dieu-phoi setup` chỉ nối dòng mới vào profile đã cài và giữ nguyên dòng riêng của máy. `dieu-phoi setup --dry-run` chỉ báo số dòng sẽ thêm.
|
|
48
|
+
|
|
47
49
|
## Lệnh
|
|
48
50
|
|
|
49
51
|
| Lệnh | Việc |
|
|
@@ -70,6 +72,7 @@ khác).
|
|
|
70
72
|
| `knowledge merge --run <id> --task a,b [--untagged]` | (0.6.0) chỉ gộp `knowledge-delta-<task_id>[-r<n>].md` của các task đó (`--untagged`: thêm file không mang task_id) — bước `verdict … accept` tự gọi |
|
|
71
73
|
| `knowledge bootstrap [--repo R] [--children "pff-*,fff-*"] [--json]` | (0.6.0) **chỉ đọc**, không tạo kho: liệt kê nguồn để seed (CLAUDE.md/AGENTS.md/README/CONTRACT ở gốc + 1 cấp, ≤ 15 context-r/contract/handoff cũ có nhắc repo), repo anh em khớp mẫu cho mục `children` (không link — link sẽ tạo kho cho con), mục đã có, mục nên có, mẫu delta. Agent seed theo brief G của skill |
|
|
72
74
|
| `profile base --save <dir>` / `profile apply --base <dir> [--lessons F] [--profile F] [--dry-run]` | (0.6.0) retro không ghi đè bài học mới: `base` chụp `profile/lessons.md` + `profile.json` vào `<dir>/profile-base/` (kèm sha256); `apply` dưới `profile/profile.lock`: file sống chưa đổi → ghi đề xuất; lessons chỉ có dòng thêm mới → tự gộp (chèn sau dòng neo); dòng cũ bị sửa/xoá hoặc `profile.json` đổi → exit 2, không ghi gì; kiểm lại ngay trước rename, lệch thì làm lại (≤ 5 lần) |
|
|
75
|
+
| `profile scan [--dir P]` / `profile publish --to <repo>/skill/profile [--curated F] [--include-local] [--dry-run]` | (0.7.2) `scan` tìm secret/dữ liệu máy trong `lessons.md`, `profile.json`, `unity-lanes.md` (in `file:dòng:loại`, không in giá trị; exit 2 khi có). `publish` chép profile đã cài vào repo, bỏ dòng bài học riêng của máy, scan trước khi ghi (có chỗ nghi ngờ → exit 2, không ghi gì); không commit/push |
|
|
73
76
|
| `retro [--json]` | tóm tắt cho vòng retro: số liệu từng ô, đếm `reason_code`, danh sách loại task, tóm tắt điều phối (`orchestration`) |
|
|
74
77
|
| `uninstall [--purge]` | gỡ hook và đúng các quyền thư mục `runs` đã thêm khỏi settings (có sao lưu); `--purge` xoá cả `hook.cjs`. Dữ liệu giữ lại |
|
|
75
78
|
|
package/agents/dp-exec.md
CHANGED
|
@@ -32,6 +32,8 @@ Repo đích và knowledge: dòng `repo:` của brief là repo ĐÍCH (có thể
|
|
|
32
32
|
|
|
33
33
|
Helper thế hệ 2 (tuỳ chọn, chỉ khi giúp giữ ngữ cảnh nhỏ): tối đa 4 agent `subagent_type: dp-helper`, `model` đặt rõ `haiku` hoặc `sonnet`, cho đúng hai loại việc — (a) đọc/quét code hoặc tài liệu rồi trả tóm tắt ≤ 15 dòng, (b) chạy test / Unity smoke rồi tóm tắt log. Dòng đầu prompt helper: `[dp:<type>|s<n>|<urgency>|try1|task=<id mới từ dieu-phoi new-id>|role=helper|parent=<task của bạn>]`. Hook từ chối mọi lần giao sai luật. Không giao helper sửa code.
|
|
34
34
|
|
|
35
|
+
Trước STATUS/VERDICT: dừng mọi Bash/PowerShell `run_in_background` và Monitor bạn đã mở (TaskStop), chờ helper đã giao trả xong; không dừng được → ghi `LEFTOVER: <id/lệnh>` trong dp-out.
|
|
36
|
+
|
|
35
37
|
Giữ ngữ cảnh nhỏ (mỗi lượt gửi lại toàn bộ ngữ cảnh — số lượt mới là thứ làm phình):
|
|
36
38
|
- Grep/Glob trước, rồi Read đúng đoạn cần bằng offset/limit; không cat/sed -n cả file qua Bash.
|
|
37
39
|
- Không đọc lại file đã đọc — ghi chú điều cần nhớ ngay khi đọc.
|
package/agents/dp-helper.md
CHANGED
|
@@ -15,6 +15,8 @@ hooks:
|
|
|
15
15
|
---
|
|
16
16
|
Bạn là helper thế hệ 2 của dieu-phoi, do một agent exec giao (thẻ `[dp:...|role=helper|parent=...]`). Chỉ làm một trong hai việc: (a) đọc/quét code hoặc tài liệu được chỉ định rồi trả tóm tắt ≤ 15 dòng (đường dẫn + dòng + kết luận, không dán nguyên văn dài); (b) chạy test / Unity smoke được chỉ định rồi tóm tắt log (pass/fail, lỗi đầu tiên, đường dẫn log). Không sửa file, không giao việc tiếp. Câu trả lời cuối ≤ 15 dòng, trả bằng chữ cho dp-exec cha (helper không ghi file).
|
|
17
17
|
|
|
18
|
+
Trước khi trả kết quả: dừng mọi Bash/PowerShell `run_in_background` và Monitor bạn đã mở (TaskStop); không dừng được → ghi `LEFTOVER: <id/lệnh>` vào phần trả lời.
|
|
19
|
+
|
|
18
20
|
Giữ ngữ cảnh nhỏ (mỗi lượt gửi lại toàn bộ ngữ cảnh — số lượt mới là thứ làm phình):
|
|
19
21
|
- Grep/Glob trước, rồi Read đúng đoạn cần bằng offset/limit; không cat/sed -n cả file qua Bash.
|
|
20
22
|
- codebase-memory-mcp lỗi kết nối/không phản hồi → Grep/Glob ngay, ghi một dòng `codebase-memory: unavailable (<lý do>)` trong tóm tắt, không thử lại.
|
package/agents/dp-scout.md
CHANGED
|
@@ -21,6 +21,8 @@ Bàn giao qua file: ghi TOÀN BỘ kết quả vào `dp-out-<task_id>-plan-try<n
|
|
|
21
21
|
|
|
22
22
|
Repo đích và knowledge: `repo:` trong prompt là repo ĐÍCH (phiên ở repo cha làm việc trên repo con → repo con). Bắt đầu bằng `dieu-phoi knowledge list --repo <repo>` + `knowledge get <id|từ khoá> --repo <repo>` (`--follow` cho phần chép từ repo cha); chưa có kho → ghi vào NOTES. Cấu trúc code: codebase-memory-mcp khi repo đã có index (`list_projects`), không thì Grep/Glob — không tự index. MCP lỗi kết nối/không phản hồi/báo daemon khác version → Grep/Glob ngay, ghi một dòng `codebase-memory: unavailable (<lý do>)` trong dp-out, không thử lại. Bước sửa code chạy song song cùng repo → ghi cần worktree + cổng riêng. Điều không suy ra từ code → `<run>/knowledge-delta-<task_id>.md` (header `repo:`, `## +id` + `paths:`), không tự merge.
|
|
23
23
|
|
|
24
|
+
Trước STATUS/VERDICT: dừng mọi Bash/PowerShell `run_in_background` và Monitor bạn đã mở (TaskStop), chờ helper đã giao trả xong; không dừng được → ghi `LEFTOVER: <id/lệnh>` trong dp-out.
|
|
25
|
+
|
|
24
26
|
Giữ ngữ cảnh nhỏ (mỗi lượt gửi lại toàn bộ ngữ cảnh — số lượt mới là thứ làm phình):
|
|
25
27
|
- Grep/Glob trước, rồi Read đúng đoạn cần bằng offset/limit; không cat/sed -n cả file qua Bash.
|
|
26
28
|
- Không đọc lại file đã đọc — ghi chú điều cần nhớ ngay khi đọc.
|
package/agents/dp-verify.md
CHANGED
|
@@ -21,6 +21,8 @@ Bàn giao qua file: ghi TOÀN BỘ kết quả vào `dp-out-<task_id>-verify-try
|
|
|
21
21
|
|
|
22
22
|
Repo đích và knowledge: chạy lệnh trong `worktree:` của bước nếu brief có, không thì trong `repo:` đích; chỉ xem diff trong thư mục đó. Cách build/test, cổng/DB test: `dieu-phoi knowledge get build-test ports-resources --repo <repo>` nếu kho có; chỉ dừng tiến trình do chính mình mở. Không ghi delta knowledge trừ khi phát hiện mục sai.
|
|
23
23
|
|
|
24
|
+
Trước STATUS/VERDICT: dừng mọi Bash/PowerShell `run_in_background` và Monitor bạn đã mở (TaskStop), chờ helper đã giao trả xong; không dừng được → ghi `LEFTOVER: <id/lệnh>` trong dp-out.
|
|
25
|
+
|
|
24
26
|
Giữ ngữ cảnh nhỏ (mỗi lượt gửi lại toàn bộ ngữ cảnh — số lượt mới là thứ làm phình):
|
|
25
27
|
- Grep/Glob trước, rồi Read đúng đoạn cần bằng offset/limit; không cat/sed -n cả file qua Bash.
|
|
26
28
|
- codebase-memory-mcp lỗi kết nối/không phản hồi → Grep/Glob ngay, ghi một dòng `codebase-memory: unavailable (<lý do>)` trong dp-out, không thử lại.
|
package/bin/dieu-phoi.cjs
CHANGED
|
@@ -21,7 +21,8 @@ Cách dùng: dieu-phoi <lệnh> [tuỳ chọn]
|
|
|
21
21
|
start [--mode fast|normal|strict] [--json]
|
|
22
22
|
khởi động cổng 1 trong một lệnh (~150 ms, không gọi mạng): kiểm cục bộ, task_id gốc,
|
|
23
23
|
tạo run dir, đường dẫn brief scout — dùng khi hook UserPromptSubmit không chạy;
|
|
24
|
-
không có --mode thì
|
|
24
|
+
không có --mode thì ghi "mode: chưa chọn" (mặc định normal); chỉ hỏi người dùng ở cổng 1
|
|
25
|
+
khi plan-table báo ≥ 4 bước s≤6
|
|
25
26
|
mode --root <root_task_id> [fast|normal|strict] [--reason R] [--session S] [--json]
|
|
26
27
|
xem/đổi mode của một yêu cầu (một sự kiện mỗi lần đổi, cục bộ); bước chưa giao áp mode mới,
|
|
27
28
|
bước đã giao giữ mode lúc giao; không bao giờ tự đổi
|
|
@@ -36,7 +37,20 @@ Cách dùng: dieu-phoi <lệnh> [tuỳ chọn]
|
|
|
36
37
|
người dùng nhận mọi bước đã giao exec của kế hoạch đã duyệt chưa có verdict người dùng
|
|
37
38
|
accept (--task/--root) tự gộp knowledge-delta-<task_id>*.md của run vào kho (--no-knowledge: bỏ)
|
|
38
39
|
discard --task <task_id> [--reason R]
|
|
39
|
-
loại một task nhầm khỏi thống kê/choose/state (ghi sự kiện discard, không sửa log)
|
|
40
|
+
loại một task nhầm khỏi thống kê/choose/state (ghi sự kiện discard, không sửa log);
|
|
41
|
+
gỡ worktree có dấu của task nếu sạch (còn thay đổi thì giữ và báo)
|
|
42
|
+
wt add --task <task_id> [--repo R] [--path D] [--branch B] [--force] [--deps auto|link|install|none] [--deps-path D]
|
|
43
|
+
tạo worktree cho một bước: <cha repo>/<tên repo>-wt-<task_id> trên nhánh dp/<task_id>,
|
|
44
|
+
có dấu dieu-phoi (điều phối viên dùng lệnh này, không git worktree add tay).
|
|
45
|
+
Repo đủ max_worktrees_repo (8; đếm cả checkout chính) thì từ chối kèm ứng viên dọn; --force vượt trần.
|
|
46
|
+
--deps (opt-in, mặc định none; env DIEU_PHOI_WT_DEPS / config wt_deps): install = pnpm install --frozen-lockfile
|
|
47
|
+
--offline; link = junction tới node_modules checkout chính khi package-lock giống hệt, không workspaces;
|
|
48
|
+
auto = pnpm thì install, không thì link; không đủ điều kiện → none + gợi ý. --deps-path: thư mục con có package.json
|
|
49
|
+
wt clean [--repo R] [--stale-days N] [--yes]
|
|
50
|
+
liệt kê worktree có dấu mà task đã nghiệm thu / bị loại, thư mục đã mất, hoặc sạch + nhánh đã merge
|
|
51
|
+
+ cũ ≥ N ngày (mặc định wt_stale_days 7); mặc định dry-run, --yes mới gỡ (còn thay đổi luôn giữ; nhánh giữ nguyên)
|
|
52
|
+
wt list [--repo R] [--all] [--json]
|
|
53
|
+
bảng worktree có dấu: task, tuổi, sạch/bẩn, node_modules (link|dir|none), deps của dấu; --all thêm worktree không dấu (chỉ báo)
|
|
40
54
|
steer <agent_id> --kind minor|plan|redirect [--reason R]
|
|
41
55
|
steer --task <task_id> --kind minor|plan|redirect [--reason R]
|
|
42
56
|
ghi một lần người dùng lái giữa chừng (--task: chỉ các agent đang chạy của task)
|
|
@@ -51,11 +65,19 @@ Cách dùng: dieu-phoi <lệnh> [tuỳ chọn]
|
|
|
51
65
|
(--mode mặc định: mode của root của --task, rồi normal)
|
|
52
66
|
ctx [--session <id>] [--json]
|
|
53
67
|
context + chi phí của phiên điều phối (mặc định $CLAUDE_CODE_SESSION_ID) so với trần mềm
|
|
68
|
+
reap [--yes] [--orphans] [--session <id>] [--json]
|
|
69
|
+
agent kẹt/mồ côi trong data/live (im > stuck_idle_min, chạy > stuck_hard_min, còn sống sau STATUS); mặc định dry-run, --yes xoá file live + ghi event reap; kill tiến trình con theo kill_leftovers (guarded mặc định: chỉ cái quy chắc về agent, kiểm lại pid + giờ tạo); --orphans thêm tail/sleep/shell mồ côi quá orphan_kill_min (60) phút
|
|
54
70
|
state [--session <id>] [--json]
|
|
55
71
|
trạng thái điều phối của phiên dựng lại từ log (cũng được nạp tự động sau /compact)
|
|
56
72
|
plan-table --file <steps.json> [--mode M] [--json] [--approve --root <root_task_id>]
|
|
57
73
|
bảng phân công: Bước | Model/effort | Kiểm | Lý do | Ước tính + tổng + đường găng;
|
|
58
74
|
file là mảng bước hoặc { "mode": "fast", "steps": [...] } (bước có thể ghi đè "mode")
|
|
75
|
+
load sample [--interval 10] [--count 12] [--repo R] [--json]
|
|
76
|
+
đo tải (core 0.7.3): mỗi mẫu một dòng data/load.jsonl — số agent theo phiên/toàn máy, hàng đợi,
|
|
77
|
+
worktree có dấu, tốc độ đọc/ghi đĩa (Windows: typeperf; Linux: /proc/diskstats; thiếu thì null)
|
|
78
|
+
load report [--days 21] [--json]
|
|
79
|
+
số phút ở mỗi mức đồng thời (toàn máy, phiên lớn nhất) từ events dispatch/complete, và tương quan
|
|
80
|
+
IO đĩa với số agent toàn máy từ load.jsonl
|
|
59
81
|
new-id [--count n] [--json]
|
|
60
82
|
in task_id mới hợp lệ (8 ký tự a-z0-9), mỗi dòng một id — không tự bịa id
|
|
61
83
|
sync đẩy bản ghi chưa đồng bộ lên sink
|
|
@@ -70,6 +92,9 @@ Cách dùng: dieu-phoi <lệnh> [tuỳ chọn]
|
|
|
70
92
|
profile base --save <dir> | apply --base <dir> [--lessons F] [--profile F] [--dry-run]
|
|
71
93
|
áp retro lên profile/ không ghi đè phiên khác: chụp base trước khi retro đọc, apply dưới khoá;
|
|
72
94
|
lessons chỉ thêm dòng → tự gộp, sửa/xoá dòng cũ hoặc profile.json đổi → dừng (exit 2); profile --help
|
|
95
|
+
profile scan [--dir P] quét secret/dữ liệu máy trong profile (exit 2 khi có; không in giá trị)
|
|
96
|
+
profile publish --to <repo>/skill/profile [--curated F] [--include-local] [--dry-run]
|
|
97
|
+
chép profile đã cài vào repo (bỏ dòng riêng của máy, scan trước, không commit/push)
|
|
73
98
|
uninstall [--purge] gỡ hook khỏi settings.json (--purge xoá cả hook.cjs; dữ liệu giữ lại)
|
|
74
99
|
hook (nội bộ) đọc payload hook từ stdin
|
|
75
100
|
|
|
@@ -112,12 +137,15 @@ async function main(argv) {
|
|
|
112
137
|
verdict: c.cmdVerdict,
|
|
113
138
|
steer: c.cmdSteer,
|
|
114
139
|
discard: c.cmdDiscard,
|
|
140
|
+
wt: (o) => require('../lib/worktree.cjs').cmdWt(o),
|
|
115
141
|
'plan-table': c.cmdPlanTable,
|
|
116
142
|
'new-id': c.cmdNewId,
|
|
117
143
|
stats: c.cmdStats,
|
|
144
|
+
load: (o) => require('../lib/load.cjs').cmdLoad(o),
|
|
118
145
|
choose: c.cmdChoose,
|
|
119
146
|
ctx: c.cmdCtx,
|
|
120
147
|
state: c.cmdState,
|
|
148
|
+
reap: c.cmdReap,
|
|
121
149
|
sync: c.cmdSync,
|
|
122
150
|
retro: c.cmdRetro,
|
|
123
151
|
prune: c.cmdPrune,
|