
LibreChat 的 codebase-design 技能實踐Design It Twice 并行接口設計方法論指南【免費下載鏈接】LibreChatEnhanced ChatGPT Clone: Features Agents, MCP, Skills, DeepSeek, Anthropic, AWS, OpenAI, Responses API, Azure, Groq, o1, GPT-5, Mistral, OpenRouter, Vertex AI, Gemini, Artifacts, AI model switching, message search, Code Interpreter, langchain, DALL-E-3, OpenAPI Actions, Functions, Secure Multi-User Auth, Presets, open-source for self-hosting. Active項目地址: https://gitcode.com/GitHub_Trending/li/LibreChatDesign It Twice設計兩次是 LibreChat 倉庫中內置的 Claude Codebase Design 技能位于.claude/skills/codebase-design/DESIGN-IT-TWICE.md所提供的并行子代理協(xié)作范式當完成對某個“深化候選模塊”的評估后系統(tǒng)性地并行生成多種彼此截然不同的接口設計方案再通過深度、局部性與接縫位置三個維度進行對比與收斂。本指南以該文檔為骨架結合同目錄的詞匯表SKILL.md與依賴分類框架DEEPENING.md詳細拆解這套流程的每一步。讀完本文你將掌握如何界定問題空間、如何編排 3 個并行子代理、如何為每個代理下發(fā)不同的設計約束、如何對設計結果進行結構化比較并給出有立場的推薦以及在像 LibreChat 這樣的復雜代碼庫中落地的具體方法。一、方法與定位為何第一個想法很少是最優(yōu)的Design It Twice 方法的理論源頭是 John Ousterhout 在《軟件設計哲學》中提出的論斷——你基于直覺產生的第一個設計想法很難是最好的。該文檔本身即是這一理念的工程化表達文檔開篇即聲明其用途是當用戶希望為某個已選定的深化候選模塊探索備選接口時采用一套并行的子代理工作模式。值得強調的是它的使用時機這套流程不是憑空造接口而是出現(xiàn)在深化流程的下游。在啟動本流程之前用戶應當已經經歷了codebase-design技能的前置步驟——先在 DEEPENING.md 的框架下評估如何深化一組淺模塊選定一個候選對象后再進入 Design It Twice 去探索該模塊的接口還能怎么設計。從整個技能目錄的結構看codebase-design技能由三份文檔構成一個完整閉環(huán)文檔職責SKILL.md定義深度模塊的統(tǒng)一詞匯表與設計原則是全套方法的語言底座DEEPENING.md給定依賴時如何安全深化一組淺模塊含依賴分類、接縫紀律、替換式測試策略DESIGN-IT-TWICE.md通過并行子代理為候選模塊設計多個截然不同的接口方案三份文檔共同指向同一個目標設計深模塊deep modules——在一個小而清晰的接口背后承載大量行為把接口放在干凈的接縫seam上并讓測試可以只通過該接口完成。最終收益是調用方的杠桿leverage、維護方的局部性locality以及全體參與者的可測試性。二、前置基礎理解流程依賴的統(tǒng)一詞匯表DESIGN-IT-TWICE.md 反復強調一件事子代理的技術簡報中必須包含 SKILL.md 與CONTEXT.mdLibreChat 倉庫根目錄下的領域語言文件中的詞匯讓每個子代理都以與架構語言、項目領域語言一致的方式命名事物。因此在真正執(zhí)行三步流程前必須先掌握這套受控詞匯。SKILL.md 要求精確使用以下術語不用 component、service、API、boundary 等泛稱替換——一致的語言本身就是目的Module模塊任何擁有接口與實現(xiàn)的東西。刻意與規(guī)模無關——一個函數、一個類、一個包甚至一個橫跨多個層級的切片都屬于模塊。Interface接口調用方為正確使用模塊所必須知道的一切類型簽名之外還包括不變量、順序約束、錯誤模式、必需配置和性能特征。注意它比API或簽名更寬——后兩者只覆蓋類型層面。Implementation實現(xiàn)模塊內部承載行為的主體代碼。它與Adapter適配器不同適配器是對在接縫處滿足接口的具體事物的角色描述與內在構成無關。一個 Postgres 倉儲可能是小適配器 大實現(xiàn)而一個內存假實現(xiàn)則是大適配器 小實現(xiàn)。Depth深度接口處的杠桿——調用方或測試每學習一份接口所對應的行為量。深模塊 小接口 大實現(xiàn)淺模塊 大接口 薄實現(xiàn)應避免。Seam接縫源自 Michael Feathers可以在不修改該處的前提下改變行為的位置即模塊接口所棲身的位置。接縫放哪里本身就是獨立于接縫后面放什么的設計決策。Leverage杠桿深度帶給調用方的回報——每學習一份接口獲得更多能力一份實現(xiàn)回饋 N 個調用點與 M 個測試。Locality局部性深度帶給維護方的回報——變更、缺陷、知識與驗證都集中在一處而不是彌散到所有調用方。一次修復處處生效。SKILL.md 在界面上給出了設計時的三個經典發(fā)問也是后續(xù)評估各方案深度的判據能否減少方法數量能否簡化參數能否把更多復雜度藏進實現(xiàn)內部此外還有兩條貫穿性原則刪除測試想象刪除該模塊——若復雜度隨之消失說明它只是透傳若復雜度在 N 個調用方身上重新冒出來它才算物有所值、一個適配器是假設性接縫兩個適配器才是真實接縫不要為了引入接縫而引入接縫除非確有事物跨縫變化。而接口即測試面的原則意味著調用方與測試穿越的是同一條接縫如果你發(fā)現(xiàn)自己想越過接口去測試模塊的形狀大概率有問題。三、依賴分類界定深化候選的約束條件DESIGN-IT-TWICE.md 的第一步要求為每個子代理提供來自 DEEPENING.md 的依賴類別信息并在輸出的第 4 項要求子代理給出依賴策略與適配器。因此理解 DEEPENING.md 的依賴分類體系是編排并行設計的前提。按文檔依賴被分為四類類別直接決定深化后的模塊如何跨接縫測試進程內In-process純計算、內存態(tài)、無 I/O。總是可深化——合并模塊并直接通過新接口測試無需適配器。本地可替換Local-substitutable擁有本地測試替身的依賴如用 PGLite 替 Postgres、用內存文件系統(tǒng)替磁盤。若替身存在即可深化測試套件中以替身運行接縫在內部模塊外部接口上不設端口。遠程但自有Remote but owned端口與適配器跨越網絡邊界的自有服務微服務、內部 API。在接縫處定義端口port深模塊持有邏輯傳輸層作為適配器注入——測試用內存適配器生產用 HTTP/gRPC/隊列適配器。文檔給出的推薦句式是在接縫處定義一個端口為生產實現(xiàn)一個 HTTP 適配器、為測試實現(xiàn)一個內存適配器這樣即便邏輯跨網絡部署它也坐落在一個深模塊中。真外部依賴True externalMock不受你控制的第三方服務Stripe、Twilio 等。深化后的模塊把外部依賴作為注入端口接受測試提供 mock 適配器。配合這套分類的是兩條接縫紀律seam discipline其一上文提到的一個適配器意味著假設性接縫兩個適配器才是真實的——除非至少存在兩個適配器典型如生產 測試否則不要引入端口單適配器的接縫只是間接層其二區(qū)分內部接縫與外部接縫——深模塊內部可以存在僅供自身實現(xiàn)與測試使用的私有接縫但不應僅僅因為自身測試要用就把內部接縫暴露到接口上。測試策略上DEEPENING.md 主張?zhí)鎿Q而不是分層replace, dont layer一旦深化模塊接口層的測試就緒舊的淺模塊單元測試即成為廢料應當刪除新測試一律寫在深化模塊的接口上并斷言可觀測結果而非內部狀態(tài)測試應當能在內部重構中存活——它們描述的是行為而非實現(xiàn)。如果實現(xiàn)一改測試就得改說明測試越過了接口。四、三步流程詳解DESIGN-IT-TWICE.md 把整個流程組織為三個清晰的步驟下面逐一展開并結合倉庫上下文補充執(zhí)行細節(jié)。步驟一界定問題空間Frame the problem space在派生子代理之前先為用戶寫一段面向用戶的解釋把針對所選候選模塊的問題空間講清楚。這一步產出三樣東西任何新接口都必須滿足的約束條件constraints它將依賴的東西以及這些依賴所屬的類別對照 DEEPENING.md 的四分法一段粗略的說明性代碼草圖——注意文檔的措辭它不是提案只是讓約束變得具體的一種方式a rough illustrative code sketch to ground the constraints — not a proposal。把這段解釋展示給用戶后立即進入步驟二。這里有一個刻意設計的產品節(jié)奏用戶將在子代理并行工作期間閱讀與思考這段問題空間說明從而實現(xiàn)并行不空轉——人的注意力與機器的計算同時在推進。步驟二并行派生子代理Spawn sub-agents這是整個流程的核心動作。要點如下數量與差異性并行派出3 個以上子代理每個都必須為深化模塊產出一個**根本不同radically different**的接口。獨立簡報separate technical brief每個子代理收到一份獨立的技術簡報包含文件路徑、耦合細節(jié)、來自 DEEPENING.md 的依賴類別以及接縫后面是什么。注意這份簡報獨立于步驟一中那段面向用戶的問題空間解釋——即用戶看到的內容與代理拿到的技術輸入是兩個東西前者偏業(yè)務語境后者偏工程語境。差異化約束給每個代理一個不同的設計約束作為主命題文檔給出四組建議代理設計約束Agent 1最小化接口——最多 1–3 個入口點讓每個入口點的杠桿最大化。Agent 2最大化靈活性——支撐盡可能多的用例與擴展。Agent 3為最常見的調用方做優(yōu)化——讓默認情形平凡到無需思考。Agent 4視情況圍繞端口與適配器設計處理跨接縫依賴。Agent 1 與 Agent 2 之間是典型的深度與彈性之辯Agent 3 讓設計者代入主流調用方的視角防止過度抽象Agent 4 則在涉及 DEEPENING.md 第三類依賴遠程但自有時兜底。四個約束覆蓋了接口設計最主要的張力軸。簡報中必須包含的詞匯既包括 SKILL.md 的架構詞匯module、interface、seam、adapter、leverage也包括CONTEXT.md的領域詞匯。以當前倉庫為例LibreChat 的 CONTEXT.md 定義了諸如 Agent run envelope、Agent execution context、MCP runtime request body、Event actor head 等一整套領域語言。讓子代理使用雙方一致的命名是保證多路設計結果可橫向對比、可與倉庫既有架構縫合的前提。每個子代理的輸出結構固定為五項接口類型、方法、參數——外加不變量、順序約束、錯誤模式用法示例展示調用方如何使用它實現(xiàn)藏在接縫后的是什么即該設計把哪些復雜度收納進了實現(xiàn)依賴策略與適配器對照 DEEPENING.md 的依賴類別權衡哪里杠桿高、哪里杠桿薄。步驟三呈現(xiàn)與比較Present and compare比較環(huán)節(jié)同樣有明確的呈現(xiàn)紀律順序呈現(xiàn)逐個展示設計方案讓用戶有時間消化每一份之后再進行整體比較——而不是一次性把所有方案倒給用戶。三個對比維度按深度接口處的杠桿、局部性變更集中在何處、接縫位置seam placement進行對比。這三個維度正好對應 SKILL.md 詞匯表中 depth / locality / seam 三個核心概念。給出有立場的推薦對比之后給出你自己的推薦——你認為哪個設計最強、為什么。如果不同設計中的某些元素能良好組合請?zhí)岢鲆粋€混合方案hybrid。文檔特別要求要有主見Be opinionated——用戶要的是一個有分量的判斷而不是一份菜單。從呈現(xiàn)順序 → 三維對比 → 明確推薦或混合方案的編排可以看到這套方法的最終產出不是一份并列清單而是一個收斂后的設計決策。值得一提的兜底校驗是刪除測試在挑選或混合接口時用刪除該模塊后復雜度是否在 N 個調用方身上復活來檢驗它的真實深度同時警惕淺模塊的兩個典型信號——大接口 薄實現(xiàn)以及只有一個適配器的假設性接縫。五、在 LibreChat 倉庫中的落地形態(tài)與延伸資源技能的組織方式在 LibreChat 倉庫中該文檔并不是一份孤立的方法論筆記而是面向 AI 編碼代理的可執(zhí)行技能的一部分。從倉庫結構看.claude/skills/下還有improve-codebase-architecture技能說明這套體系是多技能的架構工作臺。codebase-design技能目錄內的 agents/openai.yaml 將技能注冊為名為 Codebase Design、能力描述為 Vocabulary for deep-module design深度模塊設計詞匯表的接口條目供支持該規(guī)范的客戶端調用。應用時的自然銜接點當你作為開發(fā)者在 LibreChat 中面對一個具體的重構場景時完整的調用鏈應當是這樣先依據 SKILL.md 用統(tǒng)一詞匯把現(xiàn)狀說清楚哪個是淺模塊、接縫在哪、調用方與測試面重合度如何→ 依據 DEEPENING.md 評估候選模塊依賴并決定測試策略 → 選定一個深化候選后用本文的 Design It Twice 流程并行探索多種接口形態(tài)。以倉庫的真實構成api/下大量服務模塊如api/app/clients/、api/server/services/Tools/、api/server/services/MCP.js以及packages/中按 api、client、data-provider、data-schemas 劃分的子包為例一個典型的場景是某個服務模塊暴露了十余個入口點但行為單薄屬于典型的淺模塊——此時可將其定為深化候選再派出四個子代理分別按最小接口/最大靈活/主流調用方優(yōu)先/端口與適配器四路出方案讓每個代理基于真實文件路徑與依賴類別工作最終按深度、局部性與接縫位置對比選型。質量自檢清單執(zhí)行完一遍流程后可用以下清單做最終校驗依據 SKILL.md 與 DESIGN-IT-TWICE.md 的原則綜合而成每個方案在接口處是否滿足每單位接口學習成本對應盡可能多的行為量深度判據變更、缺陷與驗證是否收斂在單點而非散布于調用方局部性判據接縫位置是否獨立、干凈且不存在僅一個適配器的假設性接縫測試是否能完全穿越接口斷言可觀測結果且能在內部重構中存活多路方案是否已按順序呈現(xiàn)、按三維度比較并收斂為明確推薦或混合方案——而不是丟給用戶一份選項菜單。六、結語從唯一答案到設計空間Design It Twice 的方法論價值在于把接口設計從一次性的靈光一現(xiàn)改造成可編排、可并行、可對比、可收斂的工程流程。它用三個被約束到彼此沖突的視角強行撐開設計空間再用深度、局部性與接縫位置三個標尺把空間重新壓縮成一個有主見的決策。在 LibreChat 這類體量龐大、模塊橫跨服務端與多個子包的代碼庫中這套方法尤其適用于那些需要反復斟酌邊界的模塊——而它留給你的最終資產不是某一版完美的接口而是一套當你下一次面對接口該怎么畫時能系統(tǒng)化產出并驗證答案的思維方式。如需進一步深入請直接閱讀該技能的三份源文檔SKILL.md詞匯表與原則、DEEPENING.md依賴分類與深化策略、DESIGN-IT-TWICE.md本文所解說的并行設計流程本體?!久赓M下載鏈接】LibreChatEnhanced ChatGPT Clone: Features Agents, MCP, Skills, DeepSeek, Anthropic, AWS, OpenAI, Responses API, Azure, Groq, o1, GPT-5, Mistral, OpenRouter, Vertex AI, Gemini, Artifacts, AI model switching, message search, Code Interpreter, langchain, DALL-E-3, OpenAPI Actions, Functions, Secure Multi-User Auth, Presets, open-source for self-hosting. Active項目地址: https://gitcode.com/GitHub_Trending/li/LibreChat創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考