Problem
Original request (使用者於 thesis project session 中提出,2026-05-03) :
「idd-all 我想要有一種是直接 commit 的方案,因為 PR 不一定很方便,我其實是在旁邊,這樣的 all 中間還是可以問我問題,總之 all 可以分成 human-in-the-loop 跟不是的情況」
當前 idd-all v2.40.0 強制走 PR path 且強制 unattended(所有 sub-skill 的 AskUserQuestion 都被 suppress)。這個設計對「fire-and-forget orchestration」很合適,但對「使用者就在旁邊、想監控進度也想被諮詢」的常見場景反而是 friction:
PR 對小型 / 個人 repo 是 overhead — 沒有 review 流程的 solo project,每個 issue 開 feature branch + PR 是純 ceremony
Sub-skill 的 attended 預設被一律 override — 像 spectra-discuss 的多輪對話、spectra-propose 的 Park/Apply 抉擇、idd-implement 的 plan-tier approval gate,全被靜默跳過。當使用者就在旁邊時,這些 checkpoint 反而是它們存在的意義
Type
feature / enhancement
Proposed design (待 diagnose 細化)
兩種模式
Mode
Path
Sub-skill questions
Stop point
Use case
Unattended (current v2.40.0)
PR (forced)
All suppressed
Verify → stop
Background automation, scheduled cron, /loop
Attended (HITL) (NEW)
Direct-commit (current branch)
Allowed at natural points
TBD: verify-stop or full-cycle?
使用者就在旁邊、想被諮詢
Open design questions (留給 diagnose)
Flag 設計 — --hitl / --attended / --no-pr?要不要乾脆把預設改成 attended(因為直接從 CLI 喊的用例多半是現場互動),unattended 變成 opt-in via --unattended?
Branch 策略 — Attended 模式還要不要強制 feature branch?還是允許在當前 branch 直接 commit?若使用者已經在 feature branch(例如自己手動切過去),維持當前 branch 是合理的;若在 main,仍然應該建 feature branch(保險)?
Verify 之後 — Attended 模式既然使用者就在旁邊,要不要直接連 idd-close 也跑?還是維持「verify 後停下、由人決定 close」?
Spectra path interaction — Attended 模式的 sub-skill suppress hint 整個拿掉?還是仍然保留某些 checkpoint suppress(例如 spectra-propose Step 10 Park/Apply)?「都讓 sub-skill 自己決定」是最乾淨的,但要 audit 每個 sub-skill 的 attended 預設是否合理。
混用情境 — Attended 模式中途使用者可能離開 keyboard,sub-skill 卡在 AskUserQuestion 等不到回應 — 是否需要 timeout fallback?或者明確記錄 attended 模式假設「使用者全程在線」?
Backward compat — 現有 idd-all #N --pr 的 caller(包含 /loop 自動化)期望 unattended 行為。若預設改成 attended,需要 deprecation 期 + warning。
與 idd-implement --no-pr 的關係 — idd-implement 已經透過 pr_policy config 支援 PR / direct-commit / ask 三選一。Attended idd-all 是不是直接用 pr_policy 而不是新增 flag?這樣 config 介面比較一致。
Impact
新使用者第一次跑 idd-all 會比較直覺(不用先理解「為什麼一定要開 PR」)
解放 sub-skill 的 attended 設計(spectra-discuss 多輪對話、Plan tier EnterPlanMode 等)— 讓 unattended override 變成 opt-in 而不是 default
對 solo repo / personal project 的 friction 大幅降低
Acceptance criteria(draft,待 diagnose 確認)
Related
當前 idd-all skill: plugins/issue-driven-dev/skills/idd-all/SKILL.md (v2.40.0)
Sub-skill 的 attended 預設文件: plugins/issue-driven-dev/references/pr-flow.md
v2.40.0 release notes: cross-repo --cwd 支援(先前 milestone)
Current Status
Phase : closed
Last updated : 2026-05-04 by idd-close
Key Decisions
Closing summary posted: idd-all: 增加 HITL(attended)模式 — direct-commit + 允許 sub-skill AskUserQuestion #1 (comment)
Round-1 verify FAIL → fix → Round-2 verify PASS → smoke test 28/28 PASS — full audit chain
設計重構為兩軸正交化 (path × interaction 從 pr_policy + --pr/--no-pr 同源推導),不引入新 --hitl flag
pr_policy 缺省 → idd-all 默認 (PR, unattended) (v2.40.0 backward compat); 顯式 pr_policy: ask 才走 AskUserQuestion — idd-implement vs idd-all 在缺省時刻意 diverge (intentional, documented in pr-flow.md)
不 自動 close — idd-all 兩 mode 都停在 verified;closing summary 由人寫(本 closing comment 即實踐)
HITL mode 不加 silent timeout ;明示「attended assumes user in session」
Backward compat: /loop 等顯式 --pr caller 零受影響;新缺省規則保護無 config 的 caller 不 hang
Scope Changes
Blocking
Commits
Problem
當前
idd-allv2.40.0 強制走 PR path 且強制 unattended(所有 sub-skill 的 AskUserQuestion 都被 suppress)。這個設計對「fire-and-forget orchestration」很合適,但對「使用者就在旁邊、想監控進度也想被諮詢」的常見場景反而是 friction:spectra-discuss的多輪對話、spectra-propose的 Park/Apply 抉擇、idd-implement的 plan-tier approval gate,全被靜默跳過。當使用者就在旁邊時,這些 checkpoint 反而是它們存在的意義Type
feature / enhancement
Proposed design (待 diagnose 細化)
兩種模式
Open design questions (留給 diagnose)
--hitl/--attended/--no-pr?要不要乾脆把預設改成 attended(因為直接從 CLI 喊的用例多半是現場互動),unattended 變成 opt-in via--unattended?idd-close也跑?還是維持「verify 後停下、由人決定 close」?spectra-proposeStep 10 Park/Apply)?「都讓 sub-skill 自己決定」是最乾淨的,但要 audit 每個 sub-skill 的 attended 預設是否合理。idd-all #N --pr的 caller(包含 /loop 自動化)期望 unattended 行為。若預設改成 attended,需要 deprecation 期 + warning。idd-implement --no-pr的關係 —idd-implement已經透過pr_policyconfig 支援 PR / direct-commit / ask 三選一。Attended idd-all 是不是直接用pr_policy而不是新增 flag?這樣 config 介面比較一致。Impact
Acceptance criteria(draft,待 diagnose 確認)
idd-all --no-pr #N走 direct-commit + 允許 sub-skill AskUserQuestion — naming chosen as--no-pr(reuse idd-implement vocab); SKILL.md Step 0.2/Phase 0.5; smoke test Case Bidd-all #N --pr行為不變(unattended PR path)— smoke test Cases A + H + F (absent config /loop default); regression reviewer round-1 confirmed byte-equivalent v2.40.0 behaviorif [ "$INTERACTION" = "unattended" ]guards; spectra-apply attended branch SHALL NOT inject any directive (round-2 fix)openspec/changes/idd-all-hitl-mode/smoke-test.sh(28/28 assertions PASS);smoke-test-trace.txtcapturedRelated
plugins/issue-driven-dev/skills/idd-all/SKILL.md(v2.40.0)plugins/issue-driven-dev/references/pr-flow.md--cwd支援(先前 milestone)Current Status
Phase: closed
Last updated: 2026-05-04 by idd-close
Key Decisions
pr_policy+--pr/--no-pr同源推導),不引入新--hitlflagpr_policy缺省 →idd-all默認(PR, unattended)(v2.40.0 backward compat); 顯式pr_policy: ask才走 AskUserQuestion — idd-implement vs idd-all 在缺省時刻意 diverge (intentional, documented in pr-flow.md)idd-all兩 mode 都停在 verified;closing summary 由人寫(本 closing comment 即實踐)/loop等顯式--prcaller 零受影響;新缺省規則保護無 config 的 caller 不 hangScope Changes
Blocking
Commits
f7230b8test: idd-all Phase 0.5 smoke test — 28/28 assertions PASS, AC idd-all Phase 0.5: fork detection 改 fail-closed (gh repo view 失敗時預設 PR mode) #5/idd-all SLUG derivation: BSD/GNU sed alternation (\| not portable) #6 PASSED (Refs idd-all: 增加 HITL(attended)模式 — direct-commit + 允許 sub-skill AskUserQuestion #1)5fc39fcfix: idd-all HITL mode — close P0/P1 verify FAIL blockers (Refs idd-all: 增加 HITL(attended)模式 — direct-commit + 允許 sub-skill AskUserQuestion #1)98b7a71feat: idd-all HITL mode — Phase 0.5 (path, interaction) tuple resolution (Refs idd-all: 增加 HITL(attended)模式 — direct-commit + 允許 sub-skill AskUserQuestion #1)