Skip to content

feat: auto-@mention when idd-issue/idd-comment poses open question to a person (diagnose excluded) #128

Description

@kiki830621

Problem

Original text:
「如果要問一個人問題,要在問題上自動tag他吧(diagonose除外,所以你要知道使用電腦的人是哪一個使用者)我不知道要不要另外設定一個idd,然後要有勾選清單可以給對方勾 或者是請對方回覆嗎?」
— Source: kiki830621 在 teaching/20260317_Liu//idd-comment workflow 後立即提出 (2026-05-21)

當 IDD lifecycle 的某個 step 本質上是向特定人提問時(典型例子:idd-comment --type=question 留 open question、idd-issue 收到 description 含「請 X 確認」、idd-close 把球丟給 collaborator 確認結果),skill 應該預設自動 @-tag 那個人,而不是等使用者每次手動下 --mention <login> flag。實戰案例:剛剛在 kiki830621/collaboration_liu-thesis-analysis#25 留了一則 type=note comment,body 含一段 ### Open question(需我這邊回覆確認) 直接問 HsuanYuLiuuu「Exp3 MS-as-covariate 是不是要等 #24 merge」,但 comment 沒 @-tag 她——她不會主動收到通知,這則 open question 就靜默躺在 issue 裡,跟 PR #23 卡 21 天沒 review 完全一樣的失敗模式(GitHub 沒 explicit ping 就不會通知人,工序漏斗在 IDD 流程上重演)。

唯一的例外是 idd-diagnose —— diagnose 是 AI 內部的 root cause analysis / 設計選項枚舉,產出對象是同一個操作者(kiki830621 自己),tag 自己沒意義也增加 inbox 雜訊。所以 auto-tag 規則不能無腦套用到所有 step,需要分流。

這引出一個 prerequisite:skill 必須知道「當前操作電腦的人是誰」(GitHub login),才能判斷「被問的人 ≠ 操作者」,避免自己 tag 自己。這部分已經有 #86 在處理 collaborator config schema,但「current operator」這個概念在 #86 也只是當作 role: maintainer 列在 collaborators 內,沒有獨立的 resolution mechanism(也許用 gh api user --jq .login 即時抓 + cache)。

Type

feature

Expected

A. Auto-mention 觸發規則

Lifecycle step Auto-mention 行為 Whom to tag
idd-issue 若 body 含「請 X 確認」/「ask X」/「@x 你看」/ --ask <login> flag → auto-resolve + auto-tag X 被點名的人,不含 operator
idd-comment --type=question 永遠 auto-tag 該 issue 的相關 collaborator(assignee / requestor / 上一則 phase comment 的 author / 從 conversation 推斷的對象) 由 AI 選 1-2 個最相關,列在 confirmation prompt 讓 operator 確認
idd-comment --type=decision 含 follow-up question 把含 question 那段 quote 出來 + auto-tag 同上
idd-close 若 closing summary 提到「等 X 回」/「pending Y review」→ auto-tag 被等待的人
idd-implement complete comment 若 PR 需要 reviewer → auto-tag PR reviewer reviewers 名單
idd-verify 若 verify FAIL 且需要 collaborator 補資料 → auto-tag data owner
idd-diagnose 永不 auto-tag n/a
idd-update / idd-edit / idd-list 等純 metadata sync 不 tag n/a

B. Operator identification

C. Response UX:checklist vs free-form reply(open design question)

User 在原文同時提出兩種交互 pattern:

  1. 勾選清單:comment body 內嵌 GitHub task list 讓 collaborator 直接勾,例如:

    ## ❓ Open Question
    
    Exp3 中 MS 當 covariate 的分析是否要等 #24 merge?
    
    - [ ] (1) 等 #24 merge 後補 Exp3 列到既有 doc §3
    - [ ] (2) Exp3 不在 #25 scope,標示為 limitation
    - [ ] Other (請在底下 reply 補充)

    優點:collaborator 點兩下勾選即可,門檻最低、GitHub UI 渲染 checkbox 直接互動、選項收斂;缺點:選項要 AI 先抽出來才能放,open-ended 的問題沒法用 checklist。

  2. Free-form reply:純文字 prompt 等 collaborator reply comment。優點:適合 open-ended;缺點:collaborator 可能拖 / 沒看到 / 沒回覆,且 reply 後 AI 要 detect「她回了什麼 = 對應哪個選項」的 NLP 成本不低。

初步設計建議(待討論):

  • 兩種並存而不二選一。idd-comment --type=question--options "a; b; c" flag 觸發 checklist mode;不帶 --options → free-form mode。
  • Checklist mode 的選項 AI 可以從 body prose 自動抽(題目 + 「兩種可能」/「三個選項」這類連接詞)。
  • 兩種 mode 都強制 auto-@tag(這是本 issue 的核心)。
  • 後續可考慮 idd-poll #N skill 來 detect collaborator 在 checklist 上的勾選結果 + 自動更新 issue body Current Status。

D. 例外與 escape hatch

  • --no-auto-mention flag override(CI / unattended 場景)
  • IDD_NO_AUTO_MENTION=true env var 全 session 關閉
  • AI 推斷 tag 對象有歧義 → AskUserQuestion 列候選人讓 operator 選(不靜默亂 tag)

Actual

  • 目前 idd-comment --mention <login> 是 opt-in,operator 沒寫 flag 就不 tag
  • rules/tagging-collaborators.md 5-step protocol 處理「已決定要 tag」的後續驗證 + fuzzy match,但**沒回答「該不該 tag」**的判斷邏輯
  • 結果:含 open question 的 comment 經常忘記 tag,collaborator 不知道有問題在等她(HsuanYuLiuuu 案例)
  • IDD 沒有 「current operator」的 stable identity handle —— 每個 skill 各自處理 mention 時都需要 ad-hoc 抓 gh api user,沒 cache 也沒 cross-skill share
  • feat: collaborator config in idd-config — record GitHub login, email, name, aliases for tagging accuracy #86 collaborator config 涵蓋「collaborator 是誰」但沒涵蓋「operator 是誰」

Impact

Related

Open design questions(給 maintainer / community 討論)

  1. Auto-tag 是 default-on 還是 opt-in? 本 issue 主張 default-on(with --no-auto-mention escape),但 IDD comment 過多觸發 GitHub notification fatigue — human-only vs AI-only 分流? #116 fatigue 風險可能要求 opt-in。
  2. 要不要另起 /idd-question/idd-ask skill? 還是塞進 idd-comment --type=question 的擴展?傾向後者(避免 skill 數量爆炸,per IDD anti-pattern),但 checklist mode 的複雜度可能值得獨立 skill。
  3. Checklist 選項要 AI 自動抽,還是 operator 顯式提供? 自動抽降低門檻但容易抽錯;顯式提供準確但 operator 要寫 flag。可能兩種並存。
  4. Collaborator 在 checklist 上勾完後,IDD 怎麼知道? Polling skill (/idd-poll)?webhook?還是 operator 下次跑 idd-list 時被提示「#N has new checkbox state」?
  5. 多人對話:同一個 issue 上需要同時 ping A 和 B 不同問題,怎麼設計?兩個獨立 comment 各 tag 一人?還是一個 comment 內結構化 section + 各 section 分別 tag?
  6. 「Current operator」識別:除了 gh api user,要不要支援 explicit override(例:IDD_OPERATOR=foo env var,給 service account / 自動化跑 IDD 的場景)?
  7. Notification failure mode 在 idd-implement 開 PR 時的對應:同 session 觀察到 PR [Bundle test] Step 1: build schema #23 冷置 21 天的根因是「PR body 寫了 reviewer = HsuanYuLiuuu,但沒跑 gh pr edit --add-reviewer,她沒收到通知」。這是同一個 notification gap class,但 step 在 idd-implement 而非 idd-comment。要不要把 auto-trigger 規則擴到「idd-implement 開 PR 時自動 gh pr edit --add-reviewer <PR body 提到的 reviewer>」?Sister concern from 2026-05-21 PR [Bundle test] Step 1: build schema #23 incident(kiki830621/collaboration_liu-thesis-analysis#23)。

Linked-Context Siblings Filed (v2.48.0+ #529)

Skipped per user choice (kept inline as Open Design Question Q7):

Rationale: tightly coupled to this issue's core mechanism (auto-@-tag → notification reach); user opted to consolidate design discussion rather than split into separate triage.


Current Status

Phase: diagnosed
Last updated: 2026-07-06 by /idd-diagnose (via /idd-all batch drain)

Key Decisions

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions