DeepSeek Harness(命令列是 dsh)把 Agent 拆成可組合的外掛:終端、編輯器、MCP、瀏覽器、記憶、Skill 目錄,幾乎都掛在 Cordis 圖上。官方儲存庫 deepseek-ai/deepseek-harness 寫得很清楚——Everything is a Plugin。它仍是開發者預覽,介面會破相容;真正決定好不好用的,不是再下一個模型,而是你裝了哪些外掛、Skill 從哪讀、權限開到哪一層。
社群裡很快堆出上千個 dsh-plugin。下面按「先能幹活、再擴能力、最後接渠道」收一份實用清單:官方核心能力、Skill 市集、搜尋/視覺/記憶/瀏覽器,以及怎麼避免一次裝滿上下文。文件錨點用官方站 DeepSeek Harness Docs 與外掛說明 plugins guide。
Harness 是什麼:外掛、Profile、Skills
把它想成「Agent 執行階段」,不是又一個聊天網站。
- 核心套件
@deepseek-ai/*:隨發行版走,bash、編輯器、MCP 資源、plugin_manager,以及官方skill工具都在這裡。 - 社群套件(npm 名稱或
github:owner/repo)用dsh plugin --profile web add …裝進目前 profile。bundle 裝完要重啟dsh web。 - Skills 是可選的說明檔(
SKILL.md),不是工作階段事件。檔案系統提供者依優先順序掃專案與使用者根目錄;給模型看的目錄通常只暴露name與description,正文按需載入。
本機掃描順序(dsh-skill-filesystem):專案 .dsh/skills → 專案 .agents/skills → 自訂目錄 → 使用者 DSH skills → 使用者 .agents/skills → 打包內建。同名時較靠近專案的那份勝出。專案根是最近含 .git 的上層目錄。
目錄形如 my-skill/SKILL.md。frontmatter 至少要有 name 與 description。名稱只允許小寫字母、數字和連字號。不支援遞迴掃 **/SKILL.md。
先跑起來:web profile 與安裝指令
需要 Node.js(社群外掛常見要求是 22+)。本機預覽:
npx @deepseek-ai/dsh web
Web UI 預設在 http://127.0.0.1:3080。文件與外掛作者都同意:繫結回送位址,不要把未驗證的 dsh web 聽在 0.0.0.0。走 SSH 時轉送連接埠;不要把外掛面板放到公網 IP。
標準 bundle 安裝:
dsh plugin --profile web add skillhub-plugin
# or a git source (pin a commit in production)
dsh plugin --profile web add "github:minivv/dsh-agent-skills"
# restart
# dsh web / dsh --profile web
dsh plugin add 把規格原樣交給 pnpm:認 npm、git,或 link: 本機路徑。monorepo 子套件要用設定裡的 repository 來源(github:owner/repo#ref&path:/packages/foo);plugin add 不會解析 &path:。
核對組合用 dsh web --dump-config | grep name。dsh plugin --profile web remove pkg 只刪相依套件,不會改寫你在 $DSH_HOME/profiles/web/cordis.patch.yml 裡手寫的列——那些要自己刪。
2026 起步組合(建議收藏)
不要對著外掛雷達一次點二十張卡片。先固定這一套,跑一週再加:
| 層 | 選一個 | 作用 |
|---|---|---|
| 執行階段 | 官方 dsh web | 核心工具 + 官方 skill 工具 + 外掛管理器 |
| Skill 發現 | dsh-agent-skills 或 dsh-skills-anywhere | 把 Claude / Codex / Cursor / OpenCode 的 Skill 目錄收進來 |
| 安裝 UI | skillhub-plugin 或官方 Discover | 在對話或設定裡搜技能/外掛,確認後再裝 |
| 網頁搜尋 | modsearch(或你已在跑的 MCP) | 模型沒有原生搜尋時補結構化檢索 |
| 視覺 | modlens 或 dsh-vision-toolkit 二選一 | 貼圖 OCR/版面;不要兩套一起開 |
| 記憶 | 官方 examples 裡只開一個 MCP overlay | Memorix / MCP Reference Memory / Engram |
同一類留兩個外掛,模型會在重複工具裡繞路,上下文也被摘要佔滿。市集索引只加你信任的 HTTPS。
Agent Skills:掃描順序與三款管理外掛
你很可能已經在 ~/.claude/skills、~/.codex/skills 或 ~/.cursor/skills 裡有一批 SKILL.md。DSH 本身較認 .dsh/skills 與 .agents/skills。社群外掛會在 ctx.skills 上註冊額外提供者。
dsh-agent-skills:設定頁接管本機目錄
dsh plugin --profile web add dsh-agent-skills
然後到設定 → Agent Skills,開啟接管並重啟。它會掃 ~/.agents/skills、~/.claude/skills、~/.codex/skills、~/.config/opencode/skills、~/.gemini/skills。可按目錄或單一技能開關,不必改寫原始檔案。狀態寫在 $DSH_HOME/agent-skills/state.json。相容說明見 README(0.1.x 與 0.2.x)。
dsh-skills-anywhere:零複製、跨助手、可掛 git 技能庫
非官方:noteflowai/dsh-skills-anywhere。它再註冊一個提供者;官方 skill 工具仍在:
- 覆蓋 60+ 使用者級/專案級技能目錄(Claude Code、Codex、Cursor、Gemini CLI、OpenCode 等)。
- 能讀 Claude Code 外掛市集裡巢狀的 Skills。
- 可淺層複製任意 git 技能庫進快取;在 Cursor 裡改檔,DSH 下次載入就看得到。
- Web UI 可依來源 Pin / Hide / Exclude。也可當 MCP:
npx dsh-skills-anywhere mcp。
dsh plugin --profile web add dsh-skills-anywhere
npx dsh-skills-anywhere list
npx dsh-skills-anywhere add anthropics/skills
npx dsh-skills-anywhere doctor
你在專案裡為 DSH 寫的 Skills 優先於市集上的同名複本。不要疊兩套「接管」發現外掛;選一個當主尋找器。
skillhub-plugin:在對話裡搜、看、裝
cocofhu/skillhub。npm 名稱是 skillhub-plugin(不要裝成無關的 skillhub 套件;也別用會跑 prepare 的裸 git 來源):
dsh plugin --profile web add skillhub-plugin
對話卡片可看技能、版本、安全標記,並 zip 安裝到可發現目錄;設定頁能更新 GitHub release。外掛廣場可搜 DSH 外掛、從卡片安裝,再請你重啟。需要 Node 22+。dsh web 請繫結 127.0.0.1。
技能市集與官方 Plugin Market
「市集」有兩種:
- Skill 市集:把
SKILL.md包落到~/.dsh/skills(官方工具本來就會讀的 user-dsh 根)。 - Plugin 市集:一份可安裝 DSH bundle 的 JSON 索引(npm 或釘死的 git commit)。
社群技能市集
- dsh-skill-market(QQ-M/dsh-skill-market):從設定頁搜 GitHub 技能庫。
dsh plugin --profile web add "github:QQ-M/dsh-skill-market",然後重啟。 - dsh-skills-marketplace(cxdyun/dsh-skills-marketplace):git URL + ref + 稀疏路徑,攤平到
~/.dsh/skills/…,分組開關;解除安裝只動它自己裝過的東西。
同一份 SKILL.md 可以給 DSH、Claude、Codex 用。寫進使用者根目錄前,先看星數、近期提交與安裝腳本。
官方 Custom plugin markets
指南:Plugin markets。DSH不自帶索引來源。在實驗外掛裡開啟 Custom plugin markets,再到 Discover 加上 https:// 索引 URL。確認安裝仍走一般相容性檢查。市集文案是第三方的;核心只驗證 JSON 形狀,不保證簡介是否屬實。
目錄站例如 dshmarketplace.dev 提供搜尋 API 與可選的 dshmarketplace-plugin(/store)。把它當目錄;安裝以確認框裡的 npm/git 規格為準,並鎖定版本。
能力外掛:搜尋、視覺、工作階段、瀏覽器、記憶
搜尋:modsearch
liustack/modsearch 補沒有原生網頁搜尋的模型:問網頁或 X,拿回結構化 JSON 證據。若你已有穩定的 Brave/Tavily MCP,就不必再疊一層。
視覺:modlens 或 dsh-vision-toolkit
給純文字模型用:
- modlens(liustack/modlens):貼上圖片 → OCR/版面/語意 JSON。
- dsh-vision-toolkit(Anionex/dsh-vision-toolkit):多圖問答、長截圖 OCR、UI 還原、pixel diff。
只開一套。工具 schema 重疊時,模型會點錯。
工作階段搜尋:dsh-session-search
文件範例:dsh plugin --profile web add "github:dsh-external/dsh-session-search#main"。給模型用的跨工作階段查詢是選擇加入,且要求 cwd 精確相符——先決定隱私界線。sqlite 索引可以存在,不必把查詢工具暴露給模型。
瀏覽器:官方 browser-use 再加一個 provider
掛上 dsh-browser-use,且剛好一個 provider:Playwright MCP、Chrome DevTools MCP,或 Stagehand。第二個 provider 會被拒絕。啟動的瀏覽器屬於該 Agent/Session;結束工作階段會丟掉這次啟動的狀態(外接已開的瀏覽器仍在)。
記憶:官方 MCP 範例,預設全關
examples/mcp-memory/ 附 Memorix、MCP Reference Memory、Engram overlay。它們是互通範例,不是背書。只 patch 一份:
dsh web --patch "$PWD/examples/mcp-memory/memorix.cordis.yml"
要跨次執行保留,就把 insert 合併進 profile 的 cordis.patch.yml——不要覆蓋既有修補檔。stdio 橋會剝掉像憑證的環境變數與 DSH_*;密鑰放 overlay 的 config.env,不要寫進 prompt。
渠道與桌面:IM、Telegram、dsh-desktop
- dsh-im:QR 或憑證接飛書、微信、釘釘、企業微信、QQ、Slack、Telegram、Discord、WhatsApp。對外連線面最大——先讀原始碼與 token 存放位置。
- 獨立的 telegram/qqbot 外掛同樣要審出口與 webhook 繫結位址。
- dsh-desktop:把桌面殼當外掛宿主;筆電本機沒問題。雲端主機優先 web + SSH 轉送。
渠道外掛負責把訊息接進來。它們不取代你的業務狀態機。工單、建置、帳單仍應落在你自己的儲存庫與資料庫。
怎麼選、怎麼卸、怎麼防裝錯
- 先讀
dsh.bundle與 README;確認 profile 名稱是web(或你自己的)。 - 鎖定版本:生產用
name@x.y.z或github:owner/repo#<40-char sha>。 - 看安裝腳本:git 需要
allowBuilds/prepare時,優先改預先建置的 npm 套件。 - 工具名稱衝突:不要同時跑兩套視覺外掛或兩套技能接管;用
--dump-config核對。 - 解除安裝:
remove、刪掉對應的 patch insert、再重啟。設定是空的話,查 client 半包與瀏覽器主控台。 - 市集索引:只用 HTTPS;http 索引可在路徑上被換成安裝來源。
官方 README 寫明 THERE WILL BE COMPATIBILITY-BREAKING CHANGES。升級 dsh 後,先看各外掛的 engines.dsh,再批次更新社群套件。把有用的 Skills 放進 Git(專案 .dsh/skills);不要把整個 profile 的 node_modules 當備份。
放在 Cloud Mac 上跑時注意什麼
Harness 適合 7×24 的 cron、MCP stdio 與長工作階段。固定區域、可 SSH 的 Cloud Mac 能在回送位址跑 dsh web,你把 3080 轉到筆電瀏覽器。把 Skills 與 cordis.patch.yml 提交進 Git;密鑰放鑰匙圈或 KMS,不要進儲存庫。
iOS/Xcode 工作仍用那台 Mac 上的 Xcode 與模擬器;DSH 只編排 Agent 與工具。瀏覽器 provider 只選一個,避免和無頭 CI 搶同一份 Chromium 設定檔。
FAQ
完整問答在頁面 JSON-LD。短答:Skills 不是外掛;接上發現外掛後可用 Claude 技能目錄;不要疊兩個技能市集;記憶 overlay 只開一個;Web UI 留在 127.0.0.1,再用 SSH 轉送。