iT邦幫忙

2026 iThome 鐵人賽

DAY 29
0

上一篇提到,PM/SA 和工程師各自留下了規格,卻還沒有接在一起。如果 PM/SA 繼續使用團隊 AI Agent,工程師也留在熟悉的開發工具裡,能不能讓兩邊讀寫同一份內容,不必再重新整理一次呢?

為了試試這個想法,我開始替 Speclink 加入 Remote:把 discussion、change 與正式 specs 保存在 server,再讓 Speclink Desktop 與 CLI 連線讀寫。工程師要修改的 code,仍然留在本機工作目錄。

這篇先看看我目前試到哪裡,再說明接下來想怎麼接回團隊系統。目前還沒有完成整套整合,文中的示範與接下來的構想會分開說明。

OpenSpec 怎麼透過 Git 進行團隊協作?

想讓不同角色共用規格以前,我先回頭看了 OpenSpec 原本怎麼讓團隊一起維護規格。OpenSpec 的團隊協作文件寫得很清楚:openspec/ 裡是普通的 Markdown,工具不會替我們建立 branch、commit、push 或 pull。規格、進行中的 changes 與 archive 都可以和 code 一起進 Git,再沿用團隊原本的 pull request 與 review 流程。

對平常就用 Git 協作的工程師來說,這是很熟悉的方式。一份 change 可以跟著同一條 branch 前進,reviewer 先看 proposal 與 delta spec,再確認 code 是否真的做到;合併後再把 change archive,正式 specs 也跟著 Git 歷史一起留下來。

如果規劃的範圍跨過好幾個 repos,寫這篇鐵人賽文章時,OpenSpec 也提供了 Stores Beta。它會把 planning 獨立成另一個 Git repo,仍然保留熟悉的 openspec/specs/ 與 openspec/changes/;不同 code repos 再指向這份 store,共用跨服務或跨團隊的規格。

不過,Stores 的分享方式仍然是 Git。每位成員要自行 clone、commit、push 與 pull,OpenSpec 不會在背景替大家同步,也不是一套放在 server 上、打開就能共同編輯的服務。我想嘗試的團隊使用方式,則是讓 PM/SA 能透過客製化系統查看規格、討論需求,由工程師繼續處理 repo 與實作。因此,除了規格保存在哪裡,我還需要考慮每個角色從哪裡進入、怎麼更新內容。

所以,我想讓規格直接進入團隊原本的系統,沿用既有的介面、帳號與權限。不過,要怎麼接進去,還得先看 Agent 是在使用者的本機,還是在團隊 server 裡執行。

Agent 在本機或 server,Speclink 要怎麼接?

前面使用 OpenSpec 時,我曾透過 Copilot SDK 操作 workflow。到了團隊的客製化系統,我考慮了兩種安排:目前使用 Pi Agent 的方向,是讓 Agent 在使用者的本機執行;另一種則是先前使用 Copilot SDK 時的 client/server 設計,把 Agent 放在團隊 server。

這是我的部署選擇: Copilot SDK 會透過 JSON-RPC 呼叫 Copilot CLI 的 server mode,但這個程序也能跑在本機,不代表一定需要遠端 server。這裡比較的是我怎麼安排系統,不是兩套 SDK 各自只能用在哪裡。

如果 Agent 在本機,透過 Speclink CLI 操作就很自然。需要實作時,可以處理本機的 code;規格如果保存在團隊系統裡,CLI 就透過 Remote 模式連線讀寫。Remote CLI 仍然是同一套 CLI,只是規格的讀寫位置從本機改成 server。

但如果 Agent 在團隊 server 執行,規格也存在同一套後端裡,就可以考慮不同的接法。若先啟動 Speclink CLI,再讓 CLI 透過 HTTP 呼叫這套系統自己的 Remote API,最後才讀寫規格,就會像下圖一樣繞出去又回來:

兩種部署安排:本機 Pi Agent 可透過 Speclink CLI 連線讀寫團隊規格;先前 Copilot SDK 的 server 設計若另啟動 Speclink CLI,再透過 HTTP 呼叫同一套後端的 Remote API,就多繞一圈。這是作者的部署選擇,不是 SDK 限制

如果同一套後端能直接呼叫 Speclink Engine,我就希望讓 Agent 透過 Tool 使用它,省去這一圈。本機 Agent 則可以繼續使用 CLI,不需要為了共用規格而改掉原本的操作方式。

不論 Agent 最後放在哪裡,只要規格保存在團隊系統裡,我都得先確認:原本的 workflow 還能不能正常讀寫這些內容。因此,我先用熟悉的 CLI 接上 Remote,等這條路能正常運作,再處理 Agent 的整合。

先準備一套可以測試的 server

如果一開始就把 Speclink 接進團隊系統,帳號、權限、資料庫和 Agent 都一起動,出了問題就很難知道是哪裡沒接好。

所以,我在遠端協作的規劃裡,決定先做一套 Demo server,讓它保存規格,並處理登入、權限與文件更新,再用原本熟悉的 CLI 連上去。先確認規格改放在 server 後,原本的 workflow 還能繼續使用,接著才把同樣的操作接進 Speclink Desktop。

下面就用這套 Demo server,看看規格不放在本機時,實際操作起來會是什麼樣子。

從 Speclink Desktop 與 CLI,讀取同一份規格

Speclink Desktop 目前已經可以在新增 Workspace 時,選擇本機資料夾或 Server:

Speclink Desktop 新增 Workspace 時,可以選擇本機資料夾或 Speclink Server

選好已登入的 server 與 Project/Repo 後,接著可以決定要不要連接本機工作目錄。如果只是想查看或整理規格,可以直接選擇「略過(規格模式)」;需要把 Remote 規格和本機 code 放在一起使用時,再選擇對應的 Git working tree。

Speclink Desktop 開啟 Remote Workspace 前,可以略過本機工作目錄,以規格模式直接讀取 server 裡的內容

為了示範看板上的狀態,我請 Codex 在本機 Demo server 準備了一份示範用的 discussion,以及一份已經認領、完成 2/4 tasks 的 change。用規格模式開啟後,Speclink Desktop 一樣看得到兩邊目前走到哪裡:

Speclink Desktop 的 Remote 看板同時顯示一份 discussion,以及一份已認領並完成 2/4 tasks 的 change

點進 change 後,proposal、specs 與 tasks 也能直接從 server 讀取。下面這張圖裡沒有連接本機工作目錄,右側仍然可以打開完整 proposal:

Speclink Desktop 在沒有連接本機工作目錄的 Remote Workspace 中,仍能讀取 server 保存的 proposal

Speclink Desktop 能打開這份 proposal,那麼回到工程師平常使用的 CLI,能不能讀到同一份內容呢?

我請 Codex 準備了一個沒有 openspec/ 的暫存 repo,裡面有 Git 與連線設定檔 .speclink.yaml,再連到同一個 Project/Repo,讀取剛才的 proposal:

暫存 repo 有 Git 與 Speclink 連線設定、沒有 openspec 目錄,仍能透過 CLI 從 Remote Store 讀回和 Speclink Desktop 相同的 proposal

兩邊讀到的是同一份 proposal。這樣,從介面查看規格,或回到 CLI 繼續操作,都不必另外複製一份文件。

接回團隊系統時,哪些部分可以沿用?

前面的示範使用我準備的 Demo server,但團隊已經有自己的帳號、介面與資料庫。我希望接回去時,這些東西能繼續使用,也不用重新寫一套 Speclink workflow。

因此,列出 changes、建立 change、archive 這些操作,仍然交給同一套 Speclink Engine 處理。文件要從哪裡讀、更新後存到哪裡,則透過 Store 這層介面接到團隊的資料庫。Store 可以理解成 Engine 讀寫文件的方法,真正的內容仍然保存在檔案或資料庫裡。

把目前的示範與接下來想試的方向放在一起,大概會像下面這樣:

Speclink 的三種接法:目前以 Speclink Desktop 或 Remote CLI 連到 Demo server 與資料庫;接下來想接到團隊後端,或讓團隊 server 裡的 Agent 直接呼叫 Speclink Engine,再讀寫團隊資料庫

第一條就是前面截圖使用的組合。第二條則是讓 Speclink Desktop/CLI 改連團隊自己的後端,沿用既有的帳號與資料庫。

第三條,就是前面提到讓 server 裡的 Agent 透過 Tool 直接呼叫 Engine 的方向。目前 Speclink 已有 Node SDK 可以使用,但還需要把它接進團隊 Agent,確認每次操作使用誰的權限,以及對話時該怎麼取得與更新規格。後面這兩條路,都還需要繼續完成整合。

所以,目前先確認的是 Speclink 能提供哪些操作;真正接回團隊系統後,還得繼續確認大家實際使用時,這些安排是不是合適。

規格放在哪裡,最後還是回到團隊怎麼工作

這次嘗試 Remote,讓我想的事情又多了一點。自己用 Speclink 時,我比較在意流程順不順;準備讓 PM/SA 也一起使用後,才發現還得考慮:大家從哪裡操作、談好的內容放在哪裡,以及工程師接手時能不能繼續用。

回頭看,剛接觸 SDD 時,我連每個指令該在什麼時候用,都還要邊查邊試。後來用得多了,才慢慢開始問:這一步為什麼要這樣安排?如果不適合我的工作方式,又可以怎麼改?

寫到這裡,也差不多該回來回答【Day - 1】留下的問題了:會跑 workflow,真的就等於懂 SDD 嗎?

最後一天,就來聊聊這一路用下來、也自己動手做過之後,我對 SDD 有了哪些不同的想法吧!

參考資料


上一篇
【Day - 28】Word、SDD 與 AI Agent 都有了,我們的規格為什麼還是沒有接起來?
系列文
我的 SDD 實驗之路 - 從實際使用現有工具,到設計自己的流程 共 29 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言