iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0

【Day - 16】把討論留下來後,下次就能接著談。不過,已經談妥的內容,還得帶進 change,才能繼續準備規格與 tasks。

如果同一場 discussion 裡,只有其中一個主題先談好,也不一定要等其他問題全部談完。我希望能先替它建立 change,剩下的繼續留著討論;如果談的是原本就在做的功能,則把新結論補回那份 change。這篇就來看看這幾種情況怎麼處理。

一場 discussion,怎麼分出多個 changes?

例如,一開始只是想討論「登入流程還可以怎麼調整」,最後可能拆出三個方向:

同一場登入流程 discussion 可以把已經談妥的 MFA 與錯誤訊息分別建立成 change,還沒確定的 session 過期時間則留在原本的 discussion 繼續討論

圖中的 MFA 與錯誤訊息已經談妥,可以先各自建立 change;session 過期時間還沒有結論,就繼續留在原本的 Rounds。這樣不需要為了先做其中一項,就把整場 discussion 提早結束。

實際記錄時,第一輪的 Open 會先列出還沒處理完的主題。某一項談妥後,AI 會先確認要把它接到 change,還是繼續討論其他內容。如果決定先分出去,這一輪的 Position 會記下它去了哪個 change,下一輪的 Open 則只保留尚未處理的項目。

建立 change 後,discussion 會在 promoted_to 記下它的名稱;change 則在 from_discussion 記下來源 discussion。這樣從任何一邊,都能找到另一邊。

from_discussion 就放在【Day - 7】介紹過的 .openspec.yaml 裡。Speclink 沿用這份檔案記錄 change 的基本資料,再加上討論來源。以前面的登入流程為例,大概會像這樣:

# openspec/discussions/login-flow.md
status: promoted
promoted_to: add-mfa, improve-login-errors

# openspec/changes/add-mfa/.openspec.yaml
from_discussion: login-flow

# openspec/changes/improve-login-errors/.openspec.yaml
from_discussion: login-flow

所以下次回到 discussion 時,我不只看得到還有哪些問題沒談完,也能知道前面談妥的內容分別去了哪些 changes;從 change 往回看,也找得到最初是在哪一場 discussion 做出決定的。

打開同一份 discussion 的「衍生變更」頁籤,就能直接看到它分出去的兩個 changes:

Speclink Desktop 的 discussion「衍生變更」頁籤,列出從同一場登入流程討論分出的 add-mfa 與 improve-login-errors

要不要把談妥的主題建立成 change,還是由我們決定,不會每談一個主題就自動建一份。

不過,已經建立 change,不表示整場 discussion 都談完了。只要還沒寫下 Conclusion,就能繼續新增 Rounds。Speclink Desktop 也會把它留在進行中的討論區,標示「已轉出・尚無結論」。

畫面上會像下面這樣:discussion 仍然留在左側的討論區,已經分出去的 add-mfa 則進入提案中。

Speclink Desktop 顯示一場已轉出 add-mfa、但尚未寫下 Conclusion 的 discussion;討論卡片仍留在進行中的討論區,並標示「已轉出・尚無結論」

知道討論與 change 怎麼互相找得到之後,接著來看實際怎麼建立 change:整場談完再規劃,和只把其中一項先分出去,操作上有什麼不同?

建立新的 change:我平常先談完,再進入 propose

我平常最常走的路其實很單純:先把整場 discussion 談完,確認每個 change 的範圍,再從 discussion 進入 propose,把規劃需要的 artifacts 建立起來。只有某個主題已經談妥、其他內容還想留在原本的 discussion 繼續談時,才需要先用 promote 把它分出去。

當時和 AI 討論這套設計時,我們整理出的路徑大致可以分成三種:

當下的情況 使用的作法 這一步會做到哪裡?
整場 discussion 已經有 Conclusion,也準備開始規劃 propose from discussion 讀取 Conclusion 與前面的 Rounds,建立 change,並依照 schema 準備實作前需要的 artifacts
只有其中一項先談妥,其他主題還要繼續 promote 先替這一項建立 change 骨架並記住來源,原本的 discussion 可以繼續新增 Rounds
其中一項先談妥,而且現在就想把它規劃完整 promote → propose 先用 promote 把這一項分成明確的 change,再對同一個 change 執行 propose 補齊 artifacts;其他主題仍然留在原本的 discussion

propose from discussion 適合整場討論已經收斂的情況。它會直接從 Conclusion 建立 change,再把 schema 要求的規劃文件一起準備好。至於 promote,目的則是先把某一項從還沒結束的 discussion 裡分出去。這時候建立的 change 大概只有下面這些內容:

openspec/changes/<change>/
├── .openspec.yaml   # schema、建立資訊與 from_discussion
└── proposal.md      # 先填入 Why,其他段落仍待後續補齊

這時候只有 change 的基本資料,以及還沒寫完整的 proposal,所以還不能開始 apply。要繼續實作,得先透過 propose 補齊 schema 要求的規劃文件;原本還沒談完的主題,則繼續留在 discussion。

不過,我後來很少先用 promote。除了個人習慣,也因為分出去後還是要再跑 propose,所以我通常會先談完、確認各個 change 的範圍,再開始規劃。只有某一項真的想先做,才會用到這個流程。

上面三種情況都是建立新的 change。如果 discussion 談出的結論,是要調整一份正在實作的 change,又該怎麼接回去?

更新既有 change:文件還沒改,怎麼就顯示完成了?

如果討論的結果是要修改原本的 change,我平常就會請 AI 把新結論補進原本的規劃。不過,這中間曾經遇到一個問題:文件還沒更新,discussion 卻先顯示成「已轉出」了。

當時留下的設計討論記錄了這個情況。AI 先把 discussion 和 change 的關係記下來,但 session 在執行 ingest 前就停了。結果 change 裡還是舊內容,畫面卻讓人以為新的結論已經補進去了。

所以,我後來把「記下來源」和「更新完成」分開。先記住這次修改來自哪場討論,等文件真的更新好了,再標示完成。discuss Skill 會依序執行三個動作:

動作 這一步在做什麼?
link 先在 change 記下這次決定來自哪一場 discussion。
ingest 把新的結論補進 proposal、specs、design 或 tasks。
seal 更新完成後,再把 change 加進 discussion 的 promoted_to,標示這份結論已經轉入。

這樣就算 session 中途停下來,也不會把「已經記下來源」當成「文件已經更新完成」。

更新完後,討論也可能繼續。如果後來又改了 Conclusion,之前照著舊結論規劃的 changes,要不要跟著改呢?Speclink 會先把仍在進行中的相關 changes 標成「待重新反映」,提醒我們確認。有影響就透過 ingest 更新,完成後清掉提醒;沒有影響,確認後就不用改。

建立新 change、先把其中一個主題分出去,以及更新原本的 change,這幾種作法放在一起,就會像下面這張圖:

discussion 的結論可以直接透過 propose 建立完整的新 change,也可以先用 promote 建立骨架並繼續討論;如果結論屬於既有 change,則透過 link、ingest 與 seal 更新原本的內容

同一場 discussion 可以建立新的 change,也可以更新既有 change。那麼,一次談了 5~10 個主題,到底該分成幾個 changes 呢?

一場 discussion 談了好幾個主題,要怎麼分成 changes?

一場 discussion 談了幾個主題,不一定就要建立幾個 changes。幾個想法可能是在解決同一件事,也可能談到後來,才發現其實是彼此獨立的功能。

我會先把想到的問題一起提出來,讓 AI 依序和我討論。這時候很多事情還沒確定,不需要一開始就決定要怎麼拆。等方向比較清楚後,再一起確認:哪些內容適合放在同一個 change?哪些應該分開做?還沒談清楚的,就留著繼續討論。

到了這一步,才會回到【Day - 6】提過的原則:規格的範圍要清楚,也要能一起驗證。如果幾個主題是在完成同一個目標,而且適合一起實作與驗證,就可以放進同一個 change;如果各自是獨立的功能,就分開處理。

discussion 可以先放進多個想法與問題,經過討論與收斂後,同一目標且適合一起驗證的主題可以合成一個 change、獨立主題拆成多個 changes、還沒談完的內容留在 Rounds,決定不做則進入 archive

一次要談多少主題? 5~10 個是我自己的使用習慣。如果一次只談一兩個比較好掌握,也不需要刻意增加。

這樣,我就不用在開始討論前先把所有需求分好,也不用為了先做其中一項,就把其他問題一起塞進 change。談好的部分可以往下做,還沒談完的也留得住;下次回來,還能查到各個主題後來去了哪裡。

討論怎麼保存、談好的內容怎麼接進 change,到這裡都有了作法。至於討論正在進行時,AI 怎麼帶著我把問題問清楚,當時仍然沿用 Spectra discuss。我平常遇到的幾乎都是先列假設的 Assumptions,很少進入一次問一題的 Interview。為什麼會這樣選,這個問法又適合我的需求嗎?接下來,我們就看看我後來怎麼調整 Speclink 的提問方式吧!

參考資料


上一篇
【Day - 16】討論不能只留在 session 裡,Speclink discuss 會留下什麼?
系列文
我的 SDD 實驗之路 - 從實際使用現有工具,到設計自己的流程17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言