DSH Rice on a Stick:用 MCP 操作 DeepSeek Harness 真實會話

前言

DeepSeek Harness(dsh)本身已經提供 Web 界面裏的會話中心、模型與 preset、工作區管理。若你希望在 Claude Code、Cursor、Cline 或自研 Agent 裏「遠程」創建、投遞任務、輪詢結果,常見做法是再包一層 shell 或腳本,會話狀態往往與 UI 裏看到的不一致。

下面介紹的是 Leawind 維護的工作流類 dsh 插件 DSH Rice on a Stick(包名 dsh-rice-on-a-stick):在本地 dsh 進程內啓動 MCP 服務,把 session 控制器、模型目錄、工作區與實時活動暴露給任意 MCP 客戶端;同一套能力也會在本實例內註冊爲原生 rice_ 工具,便於 dsh 自身會話自舉編排。

這是什麼

插件通過 Streamable HTTP(默認 http://127.0.0.1:8090/mcp)對接 MCP 客戶端,請求經 sessionController 進入與 UI 相同的 dsh 宿主,而不是簡單的 shell 包裝。

架構關係可概括爲:

Claude Code / Cursor / Cline / your agent
                │  Streamable HTTP · 127.0.0.1:8090/mcp
                ▼
       dsh-rice-on-a-stick
                │  sessionController · agents · tools · workspaces
                ▼
   dsh host — the same sessions the UI shows
  • 維護者:Leawind
  • 許可證:MIT
  • 依賴 dsh 版本:>= 0.2.1-rc.2(engines.dsh)
  • 插件當前版本(package.json):0.1.0-rc.1
  • Node:>= 18

完整工具與資源定義見倉庫 src/mcp/tools/、src/mcp/resources.ts;Agent 側建議先調用 dsh_get_started,其中包含 dsh 速成、配方與錯誤恢復說明。

核心功能

真實會話與異步編排

工具走宿主 session 控制器,支持創建、prompt、排隊、fork、歸檔、切換模型等。長任務採用 session_submit / session_poll / session_result 模式:客戶端超時只結束等待,不會中斷 dsh 側 turn;若要停止執行,需通過 session_cancel。

新建會話必須顯式傳入 provider、model、preset(來自 model_list),插件不會自動填默認;用已有 sessionId 恢復時會沿用該會話的 model 與 preset。

審批(Approvals)

提供 approval_list / approval_answer / approval_policy。配置項 approvalControl 決定由誰應答本插件創建或恢復的會話上的審批:

值 含義
exclusive(默認) 僅 MCP 調用方應答,UI 不再展示該請求
fallback UI 優先,UI 無法應答時交給調用方
off 僅展示,不應答

自舉與部署形態

同一 MCP 工具面在本 dsh 實例內註冊爲原生 rice_ 工具。配置 http: false 時可做「僅自舉、不對外 HTTP」的部署。

默認「Tools-first」

默認綁定 127.0.0.1,可選 Bearer 認證、Host/Origin 允許列表、空閒 transport 會話回收;resourceFirst 默認爲 false,只理解 tools 的客戶端無需改動。資源優先模式需顯式開啓。

環境與前置條件

  • 需要 web/desktop 類 profile 才能使用設置面板與完整 session 能力;minimal/headless profile 仍可跑 MCP 服務。
  • 僅支持 stdio 的 MCP 客戶端需自行準備 Streamable HTTP 橋接。
  • 包 未發佈到 npm,需從構建後的本地目錄以 link 方式安裝(見下一節)。

安裝與啓用

官方 README 給出的流程如下:克隆倉庫、安裝依賴、構建,再用 link 安裝到 web profile。

git clone https://github.com/Leawind/dsh-rice-on-a-stick.git
cd dsh-rice-on-a-stick
npm install
npm run build
dsh plugin --profile web add link:"$(pwd)"

完成後 重啓 dsh web,在 Settings → MCP Service 中查看服務狀態。卸載:

dsh plugin --profile web remove dsh-rice-on-a-stick

連接 MCP 客戶端

默認端點:http://127.0.0.1:8090/mcp。未配置 token 時認證關閉;開啓後從 Settings → MCP Service 取得 token,以 Bearer 方式發送:

{
  "mcpServers": {
    "dsh": {
      "type": "http",
      "url": "http://127.0.0.1:8090/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}

典型調用順序示例(工具名與參數字段與 README 一致):

{ "name": "model_list", "arguments": {} }
{ "name": "session_create", "arguments": { "cwd": "/path/to/project", "provider": "…", "model": "…", "preset": "standard" } }
{ "name": "session_submit", "arguments": { "sessionId": "…", "task": "…" } }
{ "name": "session_poll", "arguments": { "sessionIds": ["…"], "waitMs": 20000 } }
{ "name": "session_result", "arguments": { "sessionId": "…", "requestId": "…" } }

配置要點

字段與默認值以 src/core/config.ts 爲唯一來源;設置面板覆蓋全部配置項。結構類字段(監聽地址與端口、對外 MCP 開關、resource-first、審批應答方與等待上限、transport 空閒 TTL、Host 允許列表等)在失焦或關閉設置對話框時寫入並自動重載插件;無 Apply 按鈕,非法值就地報錯且不寫入。

常用默認:

  • resourceFirst: false(tools 優先)
  • approvalControl: exclusive
  • sessionTtlMs: 604800000(一週)

在 profile 的 cordis.patch.yml 中可覆蓋 transport 等:

- id: dsh-rice-on-a-stick
  config:
    http: true
    port: 8090
    host: 127.0.0.1 # localhost only by default; add auth before exposing
    # authToken: 'your-secret-token'

適用場景與注意事項

適合誰:已在用 dsh 做本地/agent 工作流,希望用 MCP 統一驅動「與 UI 同源」的會話;或希望在同一 dsh 實例內用 rice_ 工具做自編排。

安全(務必閱讀):插件暴露的是 本地代碼執行 能力。默認僅監聽 127.0.0.1,但未配置 authToken 時,本機任意能訪問該端口的進程都可驅動 dsh。建議設置 authToken;在未做反向代理、TLS 與認證前,不要綁定 0.0.0.0 或暴露到局域網/公網。會話 cwd 無目錄白名單,調用方可指定任意路徑。原生 rice_ 工具繞過 HTTP/認證,本實例內所有會話均可調用;若不需要,可關閉對應註冊開關。

安裝前:插件以 當前 dsh 進程權限 運行,安裝前應自行審閱源碼與 MIT 許可證。項目源於 chushixixin/dsh-harness-mcp-server 的分支演進,現爲獨立倉庫。

DeepSeek Harness 生態強調「一切皆插件」;社區目錄站點與 DeepSeek / 幻方無官方從屬關係,本文僅作第三方插件說明。

結尾

經過上面的步驟,你可以在 MCP 客戶端裏創建、投遞與輪詢 dsh 真實會話,並與 UI 側狀態對齊;複雜編排可從 dsh_get_started 與倉庫 docs/architecture.zh.md 入手。

  • 社區目錄頁:https://www.skillhub.cn/plugins/Leawind/dsh-carrot-on-a-stick
  • 源碼與 README:https://github.com/Leawind/dsh-rice-on-a-stick
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜