前言¶
在 DeepSeek Harness(DSH)裏做大塊工程,常見做法是主會話一條線扛到底:規劃、實現、審查、提交擠在同一條上下文裏,模型路由也難按環節拆開。社區插件 @dyikai/dsh-hogwarts-loop 把 hogwarts-loop 方法論打包進 DSH:每個「角色」對應一個受管 subagent,各自可在客戶端配置 provider / model;主會話通過 skill 或 hogwarts_dispatch 按檢查點推進,而不是把所有步驟綁死在同一模型上。
下面介紹它是什麼、裝好後怎麼觸發、以及如何確認子智能體真的按角色路由在跑。
這是什麼¶
dsh-hogwarts-loop 是維護者 dyikai 發佈的 DSH 工作流類插件(npm 包名 @dyikai/dsh-hogwarts-loop,當前資料中版本 1.0.6,許可證 MIT)。一句話定位:Plan → build → review → commit,以 skill + 單一調度工具的形式,把大工程拆成可獨立驗收的小檢查點(checkpoint)。
插件目錄頁:skillhub.cn/plugins/dyikai/dsh-hogwarts-loop。源碼與說明:github.com/dyikai/dsh-hogwarts-loop(GitHub 星標在資料中爲 1)。DSH 社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係;安裝前仍應自行閱讀源碼與許可證。
核心能力(與倉庫結構對應)¶
資料中的能力表可概括爲以下幾塊:
| 能力 | 形態 | 位置 |
|---|---|---|
| 閉環方法論與各角色職責 | hogwarts-loop skill(也可 /hogwarts-loop 觸發) |
skill/SKILL.md、skill/references/*.md |
| 審查記錄、批量校驗、收斂上限與評估說明 | markdown 契約 + 合成/倉庫衍生用例 | skill/references/review-contract.md、skill/references/evaluation.md、skill/assets/eval-*.md |
| 在同一父會話內創建或延續某角色 subagent | hogwarts_dispatch 工具 |
由 index.js 註冊 |
| 按角色編輯 provider / model / effort / 輸出上限等 | Settings → Hogwarts Loop,以及插件行 Configure | client.js(瀏覽器端) |
調度語義(資料原文要點):
- 一個父會話、每個角色最多一個子會話:檢查點與修復輪次共用同一
childId;改description、完成 CP 或變爲 inactive 不會「換一個新的 Harry」。不同角色(例如 Harry 與 Severus)歷史互不混用。 - 非阻塞:應等該角色回報後再派下一個 CP;對同一角色併發調用不會拉出並行 worker。
- 綁定在插件重載、恢復同一父會話後仍保留;延續失敗不會靜默替換成新子會話。
cwd僅創建時有效:後續調用若傳入非空cwd會被拒絕;省略則保留子會話已有工作目錄。- 返回結果區分
started與continued;創建時會報告當時配置的 provider/model,延續時會標識已有 child,而不是聲稱已套用剛改過的默認值。
方法論層面的附加約束(workflow,非運行時強制):
- skill 要求 Harry 交付時附帶複雜度報告;滿足 ablation policy 時會做受控消融/替換實驗(資料稱爲 workflow gate;僅手動 dispatch、不走 skill 時會跳過檢查點/審查紀律)。
- review contract 約定:先校驗 blocking 候選再修復、保留證據與 finding ID、獨立驗修復而非整段重審;修復/重審輪次與「僅證據批次」有單獨預算。
- 工作規劃、進度與審查報告默認留在會話或任務級臨時存儲,不會默認寫入 Git 或
.gitignore背後;只有明確批准、長期維護的路標/設計文檔才應持久化。
安裝與啓用¶
環境要求:Node.js ≥ 20,以及已配置的 DeepSeek Harness profile。無需 build;安裝或修改 client.js 後 需刷新頁面一次,瀏覽器端 settings 與插件行纔會完整加載。
方式一:Add plugin 嚮導¶
在 Add plugin 搜索框輸入 @dyikai/dsh-hogwarts-loop,點擊 Install。
方式二:dsh CLI¶
dsh plugin --profile web add @dyikai/dsh-hogwarts-loop
dsh web
卸載(資料中的 plugin_manager 形式)¶
plugin_manager -> { action: "remove_bundle", target: "@dyikai/dsh-hogwarts-loop" }
插件沒有「開始任務」按鈕:安裝後常駐,提供 hogwarts_dispatch 工具、hogwarts-loop skill 和 設置頁;是否進入閉環取決於你是否觸發 skill 或手動 dispatch。
典型用法¶
1、通過 skill 進入完整紀律¶
任選其一:
- 在當前會話輸入
/hogwarts-loop,將 skill 內容注入會話。 - 用自然語言說明意圖,例如:plan this milestone with the hogwarts loop, then implement, review and commit each checkpoint(skill 自帶描述,任務匹配時模型也可能自行加載)。
2、手動 dispatch(跳過 skill 的檢查點/審查紀律)¶
僅想直接派某個角色時,可明確要求使用 hogwarts_dispatch。資料示例:首次調用創建 Harry;CP1 通過後再次調用 延續 同一 Harry:
// First call creates Harry; after CP1 passes, the next call continues him.
hogwarts_dispatch({ role: "harry", description: "CP1 build", prompt: "<first brief>" })
hogwarts_dispatch({ role: "harry", description: "CP2 build", prompt: "<next brief>" })
3、如何確認「真的在工作」¶
資料給出三條可觀察信號:
- 會話裏出現
hogwarts_dispatch工具調用; - 對同一角色重複 dispatch 返回 相同
childId; - 子會話日誌裏
agentModel與config.model等於該角色在設置裏配置的路由(例如harry在deepseek-flash、severus在deepseek-v4-pro),而不是主會話模型。
配置角色 cast¶
主入口:Settings → Hogwarts Loop(側邊欄底部 settings section,order 60)。同一表單也可從 Plugins → Installed plugins → @dyikai/dsh-hogwarts-loop → hogwarts-loop 行 → Configure 進入。
每個 cast 成員一行:provider、model 下拉來自宿主模型目錄(remote.session.modelCatalog(),按 provider 分組);切換 provider 會把 model 切到該 provider 的第一項。Reasoning effort 來自當前 model 實際支持的檔位(留空則用模型默認);max output tokens 可留空。其下 Dispatch settings 包含 subagent backend 與 delegation depth cap(資料在此處截斷,保存行爲爲單次原子、帶 version fence 的 mutate)。
適用場景與注意¶
更適合: 希望把「規劃 → 實現 → 審查 → 提交」拆成帶檢查點的工作流,且 不同環節想用不同模型/推理檔位 的 DSH 用戶;願意遵循 skill 附帶的審查與 ablation 紀律時,用 /hogwarts-loop 或匹配描述觸發完整閉環。
務必注意:
- 插件以 當前 dsh 進程權限 運行;安裝前請閱讀 倉庫源碼 與 MIT 許可證,自行評估風險。
- 僅手動
hogwarts_dispatch不會自動帶上 skill 裏的 checkpoint / review 約束;大里程碑仍建議走 skill 或明確口述同等紀律。 - 全新的父會話會啓動新的 cast,並從 plan 重新 hydrate;不要假設跨會話自動繼承未持久化的執行報告。
結尾¶
@dyikai/dsh-hogwarts-loop 把 hogwarts-loop 從「寫在文檔裏的流程」變成 DSH 裏可安裝的 skill + 調度工具 + 客戶端設置頁:主會話保 orchestration,各角色 subagent 在可配置模型上獨立推進檢查點。若要瀏覽元信息與安裝入口,見 SkillHub 目錄頁;細節與中文 README 鏈見 GitHub 倉庫。