DeepSeek Harness 外掛 vs 技能:你到底需要哪個?

外掛改變 harness 能做什麼,技能改變 agent 知道什麼。對照表、真實截圖、兩個完整例項,再加三個幫你拍板的問題。

最近更新: 2026-09-09

DeepSeek Harness 自帶兩套聽起來很像的擴充套件機制:外掛和技能。官方首頁的口號是 "everything is a plugin",但 agent 同時也會老老實實讀取你倉庫裡的 Markdown 技能檔案。把這兩者搞混,結果是要強制執行的地方寫了個技能,或者一個 Markdown 檔案就能解決的事造了個外掛。

這一頁用證據而非感覺來區分兩者:下面每張截圖都來自真實會話,並且回鏈到源影片的精確秒數;每條結論都來自這兩支影片或 DeepSeek 官方首頁原文。

一句話結論

技能是一個 Markdown 指令檔案 —— 通常是 .agents/skills/<name>/SKILL.md —— 作用是補充上下文:agent 會讀它、通常照著做,但沒有任何機制強制。外掛是接進 harness profile 的 Cordis 包,裝在倉庫之外:它能新增工具、替換審批策略,甚至能在工具呼叫執行前直接攔截。要引導,寫技能;要保證,造外掛。

官方定位,逐項對照

DeepSeek 官網用一句話講清了架構:"Every capability is a plugin that can be swapped or recomposed: models, tools, skills, sessions, sandboxes, storage, loops, scheduling, and the UI." 注意細讀:技能出現在"可替換物"的清單裡,而外掛是這一切的封裝單元。

DeepSeek Harness 官網首頁 hero,寫著 everything is a plugin,說明從 models、tools、skills 到 scheduling 和 UI 的每種能力都可替換重組
官方定位:技能只是長清單裡一項可替換能力。看原影片 4:16

在一個跑起來的例項裡,外掛以設定面板裡一排開關的形式出現 —— harness 本身就是散件交付的,每個部件都能關掉:

DeepSeek Harness 設定裡的外掛面板,兩列網格展示 tool-subagent、spill-local、web 等外掛,各自帶啟用/停用開關
harness 本身就是散件交付 —— 一路都是開關。看原影片 4:32
維度外掛技能
本質Cordis 包,向 harness 本體注入一種能力 —— 工具、審批策略、定時任務,甚至 UI。Markdown 指令檔案(SKILL.md),給 agent 補充上下文和步驟。
存放位置倉庫之外:軟鏈到 ~/.dsh/profiles/<profile>/node_modules,並在 profile 的 cordis.patch.yml 裡註冊。專案內 .agents/skills/<name>/SKILL.md —— 或全域性技能目錄,會話會自動拾取。
分發方式走外掛目錄和 GitHub 倉庫;安裝進 profile,下次 harness 重啟時載入。把檔案拷進倉庫即可 —— 立刻出現在會話的技能目錄裡。
能力邊界能強制:外掛 hook 可以在工具呼叫執行前直接拒絕(同步的 ctx.tools.guard() API)。只能建議:agent 通常照步驟做,但沒有任何東西強制它照做。
適用場景改變 harness 能做什麼:新工具、安全護欄、審批流程、定時任務。教 agent 你希望一件重複的事怎麼做:提交規範、SOP、檢查清單。

還是拿不準?問自己三個問題

1

它必須被保證,還是大機率照做就行?

如果漏一步就是事故(碰生產資料庫、破壞性 git 操作),你需要強制:外掛 hook,或者讓技能裡的某一步跑確定性指令碼。如果只是風格和流程 —— 提交資訊、spec 工作流 —— 技能就夠了。

2

它屬於倉庫,還是屬於這臺機器?

應該隨倉庫走、給全團隊共享的團隊約定,放進跟程式碼一起提交的技能檔案。機器層面的能力 —— 攔直連 psql、加一個定時任務工具 —— 放進裝在這臺機器 profile 裡的外掛。

3

一個檔案的英文說明能不能說清?

如果 Markdown 裡幾步白話就夠了,就寫技能 —— 並且讓 agent 替你起草;crash course 的博主就讓 AI 寫他的技能,因為寫得比他自己還周全。一旦需要保證執行,就升級:把那一步變成指令碼,或者做成 hook 外掛 —— 影片裡走的正是這條升級路徑。

例項一:commit 技能(寫一個技能)

在 Agentic AI crash course 裡,博主需要一個可複用的提交流程:全部提交、資訊乾淨、絕不 push。一條提示詞就產出一個技能 —— 整個過程在影片裡只花了兩三分鐘。

  1. 1

    一條訊息把技能說清楚

    提示詞要求建立一個負責 commit 的技能:不署 AI 名、資訊用簡潔的要點列表、快速檢查不該提交的東西、預設提交所有工作區檔案、絕不 push 或部署。

    DeepSeek Harness 聊天輸入框裡那段建立 commit 技能的提示詞,要求 agent 提交全部工作區檔案、不署 AI 名、絕不 push 或部署
    整個需求就是一段白話訊息 —— 沒有 SDK,沒有樣板程式碼。看原影片 15:50
  2. 2

    agent 寫檔案並當場註冊

    技能從 .agents/skills/<name>/SKILL.md 這類專案根路徑被發現。新的 commit 技能立刻出現在會話的技能目錄裡 —— 輸入框的斜槓選單能看到 agent 可呼叫的所有技能。

    DeepSeek Harness 聊天確認 .agents/skills/commit/SKILL.md 已寫入,帶 name、description、whenToUse frontmatter,且 commit 技能已進入會話技能目錄
    儲存為 .agents/skills/commit/SKILL.md —— 當場進入會話目錄。看原影片 17:00
    DeepSeek Harness 輸入框的斜槓選單,列出已安裝技能如 find-skills 和 cordis-plugin-development,每項帶一行描述
    敲一個斜槓,目錄裡就是 agent 能呼叫的所有技能。看原影片 10:55
  3. 3

    當成 Markdown 來讀:frontmatter、步驟、規則

    生成的檔案帶 frontmatter(name、description、whenToUse),從 git status 到 verify 共六步,外加"不署名""絕不 push 或部署"這類規則。它就是個檔案 —— 隨時可以手動改。

    VS Code 預覽生成的 commit SKILL.md:從 git status 到 verify 的六步,外加"不署名""絕不 push 或部署"等規則
    技能就是 Markdown:frontmatter、編號步驟、規則。看原影片 18:00
    check-invoices 技能的 SKILL.md 示意動畫:name、description 頭部加上四個發票核驗步驟,第一步打了勾
    第二支影片用動畫演示同一個結構:先描述,後步驟。看原影片 10:45
  4. 4

    把模糊步驟升級成確定性指令碼

    "快速安全檢查"原本靠模型判斷,於是讓 agent 把它轉換成 scripts/check-commit-safety.sh,用退出碼錶示結論:0 安全、1 有問題、2 環境錯誤。當場實測:故意埋的 .env 檔案被 deny 規則攔下 —— 相同的 git 狀態進,相同的結論出。

    DeepSeek Harness 聊天裡 check-commit-safety.sh 的實測表:乾淨工作樹退出碼 0,故意埋的 .env 檔案被 deny 規則攔下
    模糊步驟變成了指令碼:0 安全,1 有問題,2 環境錯誤。看原影片 19:30

例項二:git-protect 外掛(造一個外掛)

同一支影片的後半段,倉庫需要一個"破壞性 git 命令永遠跑不了"的保證 —— 光靠引導不行。agent 最終造了一個外掛,整個過程把對照表裡外掛的特徵全演了一遍。

  1. 5

    要一個 hook;批准工作區外的寫入

    agent 找到了正確的擴充套件點:工具登錄檔暴露了 ctx.tools.guard() API —— 一個能在工具呼叫執行前拒絕它的同步 hook。接線需要寫到工作區之外,所以螢幕上先彈出審批對話方塊。

    DeepSeek Harness 審批對話方塊,請求提升沙箱許可權,以便把 git-protect hook 接到工作區之外使用者的 .dsh profile 目錄
    外掛裝在倉庫之外 —— 寫入前 agent 會先請求批准。看原影片 24:30
  2. 6

    造了什麼:contract、profile 接線、重啟

    產物是真正的程式碼:.agents/git-protect/hook/index.mjs,帶 Cordis contract(name、inject: ['tools']、apply),軟鏈進 ~/.dsh/profiles/node_modules 並通過 cordis.patch.yml 註冊。螢幕上的注意事項寫明:web profile 關閉了 HMR,外掛要等下次 harness 重啟才生效。

    DeepSeek Harness 聊天列出 git-protect 外掛建立的東西:Cordis contract 的 index.mjs、指向 ~/.dsh/profiles/node_modules 的軟鏈,以及需重啟生效的注意事項
    外掛是帶 contract 的真程式碼 —— 而且要重啟才載入。看原影片 25:00
  3. 7

    驗證強制力

    重啟之後,git reset --hard 和 git branch -D 探測都被攔下 —— 拒絕來自 hook 而不是 shell —— 而 git status、git log、git diff 正常通過,待提交的 spec.md 改動完好無損。

    DeepSeek Harness 驗證表:git reset --hard 和 git branch -D 被 git-protect hook 攔截,而 git status、git log、git diff 正常通過
    破壞性命令在 harness 層被拒 —— 不靠客氣。看原影片 26:30

兩者如何協作

這兩種機制是分層,不是對手。影片裡的同一個倉庫最後兩者都有:commit 技能讓每次提交都乾淨,git-protect 外掛保證破壞性命令在 harness 層就被拒絕 —— 不管對話裡說了什麼。

還有一個反方向:存在專門教 agent 造外掛的技能。入門向那支影片裡,agent 在 creator mode 搭建新外掛時載入了 cordis-plugin-development 技能 —— 用技能生產出整套架構所依賴的外掛。

The full guardrail stack is now active: the harness hook (tool-level deny), the commit skill (safety check → ignore resolution → clean local commits), and AGENTS.md policy.

crash course 影片約 26:30 處的螢幕總結

常見問題

這一頁最常被問到的問題,答案全部來自影片與官方原文。

DeepSeek Harness 的技能檔案放在哪?

專案技能放在倉庫根目錄的 .agents/skills/<name>/SKILL.md —— 影片裡的 agent 說這是專案級、會被自動發現。也支援全域性技能:第二支影片裡,他原有 Claude Code 配置中的全域性技能就被自動拾取進來了。

技能能執行工具和命令嗎?

技能本身只是指令 —— 預設 agent 會讀它並自行解釋步驟。想要可預期的結果,學 crash course 的做法:附一個指令碼(check-commit-safety.sh)讓步驟去執行它,或者把檢查綁成 hook,從"建議"升級成"強制"。

外掛能做到哪些技能做不到的事?

改變 harness 本身。外掛可以注入工具、在工具呼叫執行前拒絕它、替換審批策略、增加定時任務之類的能力;它接在倉庫之外的 profile 上,重啟時載入。技能只能給對話補充上下文。

官方對外掛和技能的定位原話是什麼?

官網首頁寫的是:"Every capability is a plugin that can be swapped or recomposed: models, tools, skills, sessions, sandboxes, storage, loops, scheduling, and the UI." 換句話說,技能是清單裡的一項能力,而外掛是這一切(包括技能)的出廠封裝單元。

我從 Claude Code 遷移過來,技能還能用嗎?

基本能用:技能就是純 Markdown。crash course 提到,倉庫裡已有的本地技能 harness 應該能直接讀;第二支影片裡 Claude Code 的全域性技能也被自動拾取了。外掛是例外 —— 它繫結 Cordis,需要為 DeepSeek Harness 重新構建或安裝。

為什麼我的外掛沒有馬上生效?

因為 web profile 關閉了 HMR,新接線的外掛要等下次 harness 重啟才生效 —— 影片裡的注意事項原話就是這麼說的。驗證方法:讓 agent 跑一條該外掛應攔截的命令,你應該看到 hook 拒絕而不是 shell 結果。

相關攻略

分清要用哪個之後,接著讀這些。

來源與署名

本頁所有截圖來自這兩支影片攻略,每張圖都深鏈回它被擷取的精確秒數。上面的文字講解是我們自己寫的。

DSH Plugins 是獨立的 DeepSeek Harness 外掛市集,與 DeepSeek 官方無關,也不代表官方背書。第三方外掛未經安全稽核,安裝前請審查原始碼。

每週取得最新的 DeepSeek Harness 外掛,絕不濫發。