跳到內容

選擇語言

目前語言: 繁體中文

在團隊中使用 OpenSpec

其他指南中的所有內容,無論你是獨自工作還是身處二十人團隊,流程都一樣。團隊協作帶來的變化在於周邊問題:規格說明放在哪裡、團隊成員如何審查計畫,以及這一切如何融入現有的拉取請求流程?

簡短回答:變更只是檔案,而 OpenSpec 從不觸碰 git。因此它能融入現有工作流程,而不是取代它。本頁說明哪些約定行之有效。

OpenSpec 會在 openspec/ 下讀取和寫入純 Markdown 檔案。它絕不會在你的專案中提交、建立分支、推送或拉取,也不會自行複製或同步儲存庫。這意味著:

  • 像提交其他原始檔一樣提交 openspec/。 規格說明、活動中的變更和歸檔都屬於專案歷史。(沒錯,要提交整個資料夾——參見常見問題。)
  • 像管理程式碼一樣對變更資料夾進行版本管理。 openspec/changes/add-dark-mode/ 只是一個分支上的一組檔案。
  • 以下所有內容都是約定,而非強制。 OpenSpec 不會要求你必須這樣做,只是這種方式配合起來很順暢。

一種行之有效的工作流程,是將變更對應到一個分支和一個拉取請求:

git switch -c add-dark-mode start a branch, as usual
│
/opsx:propose add-dark-mode draft the plan (proposal + specs + tasks)
│
REVIEW THE PLAN you read it before any code — see Reviewing a Change
│
/opsx:apply build it; artifacts + code change together
│
git commit && open a PR the PR contains the spec delta AND the code
│
teammate reviews, merges
│
/opsx:archive fold the delta into specs/, move the change to archive/

計畫和程式碼並排儲存在同一分支中,隊友可以一併審查;六個月後,歸檔的規格說明仍能解釋程式碼為何如此編寫。

團隊協作最能體現這種做法的價值。如果 PR 包含該變更的差異規格說明,審查者就能獲得單看程式碼差異無法提供的資訊:在閱讀任何程式碼之前,先用通俗語言說明這項變更應該實作什麼。

建議審查者按以下順序閱讀:

  1. 閱讀 proposal.md —— 問題和範圍是否合適?
  2. 閱讀 specs/ 下的差異 —— “完成”的定義是否正確?(也就是審查變更中的兩分鐘檢查,現在直接在 PR 中進行。)
  3. 然後閱讀程式碼差異 —— 它是否準確滿足了這些要求?

如果審查者不同意方案,可以直接針對提案提出意見,成本很低,而不必在 300 行程式碼中反覆爭論。可以把差異規格說明放在 PR 描述靠前的位置,或指向變更資料夾,讓審查者從那裡開始。

歸檔會將某個變更的差異合併到主 openspec/specs/ 中,並將變更資料夾移到 openspec/changes/archive/YYYY-MM-DD-<name>/。由於 specs/ 是共享的唯一真實依據,團隊需要關注歸檔時機。以下兩種約定都可行:

  • PR 合併後再歸檔(推薦)。 分支攜帶活動中的變更;合併到主分支後,在主分支上歸檔(通常是一個很小的後續提交,或安排一次定期清理)。這樣,共享的 specs/ 只會隨實際釋出的工作更新。
  • 在 PR 中歸檔。 小團隊採用這種方式更簡單:同一個 PR 既加入程式碼,也同步並歸檔規格說明。代價是 specs/ 和程式碼差異會一起出現,可能讓 PR 顯得更繁雜。

選定一種並保持一致。無論採用哪種方式,/opsx:archive 都會檢查任務是否完成,並提示先同步,以免未完成的內容意外合併。

由於變更位於獨立資料夾中,彼此不會衝突:

  • 不同的人處理不同變更——沒有問題。 add-dark-mode 和 rate-limit-login 位於不同分支的不同資料夾,直到兩者都歸檔時才會相遇。
  • 一個變更,一個負責人。 兩個人同時編輯同一個變更資料夾,就像同時編輯同一個檔案一樣會衝突。讓一個變更由一位作者負責,或者將其拆分為兩個變更(這也是合理控制變更規模的另一個理由)。
  • 衝突只會出現在 specs/。 如果兩個變更都修改了同一項需求,第二個變更歸檔時會在 openspec/specs/…/spec.md 中衝突——像處理其他合併衝突一樣解決即可,保留符合實際情況的需求。這種情況很少見,而且是件好事:git 正在提醒你,兩個變更對系統行為的看法不一致。

以上內容都假設計畫位於程式碼儲存庫自己的 openspec/ 資料夾中,這也是正確的預設選擇。如果規劃確實跨越多個儲存庫或團隊(例如一項功能涉及三個服務,或某個團隊擁有而其他團隊依賴的需求),可以使用 beta 版 stores 功能:規劃放在獨立儲存庫中,任何程式碼儲存庫都可以引用它。請從儲存庫使用者指南開始瞭解。

HagiCode

HagiCode 是智慧代理程式開發工作台,結合結構化工作流程、多代理程式執行與 Hero Dungeon 介面,將想法化為交付成果。

以更聰明、更快速且更有趣的智慧代理程式工作流程,打造實用的軟體。

HagiCode 淺色主題介面畫面
  • Smart結構化流程將意圖轉化為從構想到交付的可執行步驟。
  • Efficient多代理程式工作流程讓研究、實作與審查並行進行。
  • FunHero Dungeon 讓長時間的程式協作更直覺、更有參與感。
造訪 HagiCode