前言¶
DeepSeek Harness(dsh)把模型適配、工具、會話、沙箱和界面都做成插件,官方倉庫的口號就是「Everything is a plugin」。Web 界面裏真正跑着哪些內置能力、哪些被 profile 覆蓋、哪些只是當前會話的 Agent 預設,平時並不好一眼看清。社區裏也已經出現了若干「插件開關板」,但它們管的是用戶安裝的第三方插件生命週期,並不會按證據去審閱官方內置項。
dsh-builtin-toggles 走的是另一條路:先做檢查器,再給 9 個已經審閱過的界面控件提供極窄、fail-closed 的開關。本文按社區目錄頁、GitHub 倉庫 README、Inspection API 文檔和 npm 頁面交叉覈對後整理:它是什麼、能看什麼、怎麼裝、怎麼用,以及明確不能做什麼。
需要先說清楚兩件事。第一,DeepSeek Harness 目前仍是 developer preview,官方 README 寫明會有破壞性變更。第二,deepseek-harness-plugin.com 是獨立的社區目錄,和 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。
這是什麼¶
dsh-builtin-toggles 是一款面向 DeepSeek Harness Web 的界面增強插件,產品名是 Evidence-backed Built-in Capability Inspector。GitHub 倉庫由 Starfie1d1272 維護,npm 包名同樣是 dsh-builtin-toggles,當前版本 0.3.2,許可證 MIT。倉庫 README 明確寫了:這是非官方社區插件,與 DeepSeek Harness 官方無關,也不受官方支持。
它解決的問題可以收成一句:把當前 Web Loader 裏的內置 capability 攤開給你看,並只允許改那 9 個已審閱的純界面開關。
社區目錄把它分在「界面增強」,收錄頁簡介是「基於 evidence 的 DeepSeek Harness Web 內置能力檢查器」。GitHub API 在 2026-08-17 顯示倉庫 7 星;目錄頁當時仍顯示 5 星,星標以 GitHub 一手數據爲準。主要語言是 TypeScript,只掛 web profile。
它不是通用插件管理器,也不提供 marketplace,不會安裝、更新或刪除第三方插件。同類名字的 dsh-plugin-toggle 管的是已加載插件的啓停,和這份檢查器不是同一個東西。
核心功能¶
Capability Inspector¶
裝好之後,入口在 設置 → 插件 → 內置插件(倉庫 README 當前文案;社區目錄簡介仍寫成「內置開關」,界面以倉庫爲準)。
頁面展示的是 Host 生成的 capability inspection,不是瀏覽器自己猜出來的狀態。每一項可以看到:
- 運行狀態
- profile override 三態(繼承 / 強制啓用 / 強制停用)
- Agent 預設歸屬
- composition scope(Host 組合,或按會話掛載的 Agent 預設組合)
- 審閱溯源、依賴證據
- 兼容性
- 服務端計算的 mutation eligibility(是否允許改配置)
檢查範圍包括 external、未審閱和異常條目。篩選可以按 ID/包名、類別、管理平面、組合範圍、策略、驗證、運行狀態和異常來做。需要對外貼日誌時,頁面提供一份脫敏診斷報告,不含本地路徑和配置內容;複製成功或失敗會顯示在按鈕旁。
0.3.2 對中文文案做了對齊:沒有結構漂移時,Doctor 摘要寫「未發現結構漂移」,而不是把「運行時身份不可用」當成默認健康狀態。Host 目前不公開穩定的 runtime release identity,Compatibility 會如實顯示 unverified,插件不會從模塊路徑或私有字段去猜版本。
組合範圍:Host 和 Agent 預設分開算¶
同一份 Loader 裏,Host/profile 組合和按會話掛載的 Agent 預設組合可以共用一個裸 ID,例如 tool-bash。檢查器按 Loader 公開的 Entry.id(含 tree-owner 鏈)區分 scope,不會把這種合法共存誤判成 duplicate_runtime_id。同一 scope 裏真的撞 ID,纔會標成 drifted 並 fail-closed。
tool-*、plan-mode 這類按會話由 Agent 預設組裝的條目會單獨標註。服務端直接把它們鎖住:policy=locked(原因 agent-preset),mutationEligibility=ineligible。它們不會借用同名 Host 行的可管理性,也不會變成 Web profile 裏能改的項。
9 個已審閱的界面開關¶
開關只覆蓋下面 9 個 ID,全部是純界面 leaf,作用在 web profile 上,會影響全部 Web 會話,但不會去改 Agent 預設:
ui-deliverablesui-jobsui-goalui-message-feedbackui-model-selectionui-agent-presetui-skillui-subagentui-trajectory
可管理名單寫在 src/policy.ts 的 MANAGEABLE_IDS 裏。強制開/關會更新 Host 並持久化;「恢復繼承」只刪掉本插件寫下的頂層字面量 disabled override,下層值交給 DSH 的 profile / HMR 重組。
核心服務、Agent 能力、第三方和未知條目一律鎖定。沒有 generic plugin manager,也沒有安裝/更新生命週期。
Inspection API v1¶
機器接口是隻讀的:
GET /api/builtin-toggles/v1/inspection
響應使用 schemaVersion: "builtin-toggles.inspection/v1",不含本地化文案,提供 inventory、審閱基線、配置三態、compatibility 和 eligibility。loopback 和顯式 trusted host 都能讀;改配置的 POST 額外要求 loopback same-origin。trustedHosts 只用於防 DNS rebinding,不是認證。遠程打開 Inspector 時是隻讀的。
安裝與啓用¶
前置條件:已經初始化過 DSH 的 web profile。插件當前審閱過的基線是 published @deepseek-ai/dsh-base@0.1.0-rc.6 與 @deepseek-ai/dsh-web-app@0.1.0-rc.6,不是 >= rc.6 這種版本範圍承諾。後續公開版本也許仍能裝、能跑,但未經明確 review 前,不自動變成 supported baseline。package.json 要求 Node.js ^22.19.0 || >=24.0.0。
社區目錄頁給出的安裝命令是:
dsh plugin add github:Starfie1d1272/dsh-builtin-toggles
目錄頁同時提醒:如需可復現安裝,應固定 commit 哈希,寫法是 github:Starfie1d1272/dsh-builtin-toggles#<commit>。不要把 #commit 三個字原樣貼進去,把 <commit> 換成倉庫裏真實的哈希。
倉庫 README 寫的是按 npm 包名裝進 web profile,和目錄頁的 GitHub 源是兩條已公開路徑:
dsh plugin --profile web add dsh-builtin-toggles
dsh web
沒有全局 dsh CLI 時,可以用:
npx @deepseek-ai/dsh plugin --profile web add dsh-builtin-toggles
npx @deepseek-ai/dsh web
安裝後需要重啓 DSH web / gateway,讓啓動過程讀到 bundle 層。發行方建議把版本 pin 死,不要隨上游自動漂移。
目錄頁和倉庫都寫了同一條安全提示:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。 裝之前應檢查源代碼倉庫和許可證。
卸載:
dsh plugin --profile web remove dsh-builtin-toggles
或:
npx @deepseek-ai/dsh plugin --profile web remove dsh-builtin-toggles
然後重啓。插件不會擅自刪除用戶 profile 內容。如果曾經對那 9 個控件做過強制開/關,卸載前應先執行「恢復繼承」,只清掉自己寫下的頂層 disabled override。
典型用法¶
下面步驟都來自倉庫 README 和 Inspection API 文檔,可以按原樣做。
- 確認
webprofile 已初始化,按上一節裝好插件並重啓。 - 打開 DeepSeek Harness Web,進入 設置 → 插件 → 內置插件。
- 先看 Doctor / Inspector 總覽:有沒有結構漂移、異常項、profile 不可寫。乾淨的 rc.6 + 內置
standardAgent 預設下,倉庫截圖展示「僅異常項」爲 0;Compatibility 在缺少 runtime identity 時仍會是unverified,這是預期行爲,不是裝壞了。 - 用篩選器縮小範圍。Host 行和 Agent 預設行即使 ID 相同也會分開展示,不要把預設行上的鎖定當成故障。
- 只對上述 9 個 UI 控件做開關。API 接受的動作是
force-enable、force-disable、restore-inheritance。成功後,強制類動作的runtimeEffect是applied;恢復繼承是recomposing,表示 profile 已提交,運行時還要等 DSH 的 watcher 重組,不保證已經打開的頁面同步收斂。頁面隨後會重新拉取 inspection。 - 需要把現場狀態發給別人時,用頁面上的脫敏診斷複製,不要直接貼本地路徑或 profile 原文。
需要機器讀這份清單時,在 loopback 下請求:
curl -sS http://127.0.0.1:3080/api/builtin-toggles/v1/inspection
3080 是官方 dsh web 的默認端口;如果你改過綁定地址,換成實際 origin。遠程 trusted host 可以讀,但不能 POST 改配置。
適用場景與注意事項¶
適合這幾類人:
- 在 DSH Web 上排查「這個內置控件到底開沒開、是 profile 覆蓋還是 Agent 預設」
- 發行版或集成方需要一份可機讀的 capability inventory,對接 Inspection API v1
- 只想關掉少數幾個已審閱的界面模塊,而不想碰核心服務和工具
不適合、也不該指望它做的事:
- 管理第三方插件的安裝、更新、刪除
- 編輯 Agent 預設,或把預設裏的
tool-*當成 Web profile 開關 - 把 Compatibility
unverified理解成「當前環境已經官方認證」 - 在非
webprofile、或未審閱的上游版本上,把 9 個開關當成穩定支持面
再強調一遍安全邊界:可管理性只來自服務端 allowlist,瀏覽器不是授權邊界;每次 POST 都會重新校驗名單、包身份、self protection、eligibility 和 profile writer。插件以當前 dsh 進程權限運行,安裝前請自己看源碼和 MIT 許可證。
小結¶
dsh-builtin-toggles 把 DeepSeek Harness Web 的內置能力攤成一張有證據的檢查表,真正能撥動的只有 9 個已審閱的界面開關。它刻意做窄、做 fail-closed,所以不會變成又一塊插件市場。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-builtin-toggles/
GitHub:https://github.com/Starfie1d1272/dsh-builtin-toggles
npm:https://www.npmjs.com/package/dsh-builtin-toggles