前言¶
在 DSH 裏跑模型、技能和 Agent 預設已經比較順手,但業務系統往往還在另一套進程裏:它只想提交提示詞和文件,等 AI 的最終結論和產出文件回來,而不是自己維護一套完整的 Harness 會話棧。手工在 dsh 裏開工作區、粘貼任務、再把結果抄回業務庫,步驟多且難以做併發、重試和狀態恢復。
下面介紹維護者 fevolq 發佈的工作流類插件 terms-bridge(npm 包名 @fevolq/terms-bridge)。它在 dsh 側承擔「項目接入」:識別項目、排隊調度、在項目工作區創建會話執行,並把最終助手回覆與結果文件引用回傳給業務項目。
這是什麼¶
terms-bridge 是 DeepSeek Harness(dsh)的項目接入插件,用來連接業務項目與 dsh。業務項目提交提示詞和文件,插件在對應工作區內創建會話執行任務,並將 AI 的最終回覆和結果文件引用回傳給項目。
插件通過 dsh 的擴展機制接入,可獨立安裝和更新;配置與任務數據保存在各自的 dsh 實例中。目錄頁:fevolq/terms-bridge(SkillHub)。源碼與說明:GitHub fevolq/terms-bridge。當前 npm 版本爲 0.1.0,許可證 MIT。
核心功能¶
README 與使用說明中列出的能力如下(執行能力仍取決於所在 dsh 的模型、工具和技能):
| 能力 | 說明 |
|---|---|
| 多項目接入 | 每個項目獨立工作區及任務會話,可單獨配置模型、Agent 預設、權限和回調 |
| 原生設置集成 | 在 dsh「設置 → 項目接入」管理項目,從已配置模型和預設中選擇 |
| 配置熱更新 | 保存後生效;已有任務沿用接收時的配置;調整併發不中斷正在執行的任務 |
| 文件傳輸 | 上傳輸入文件、在提示詞中 @file_… 引用、下載最終結果文件 |
| 任務調度 | 不限併發或按項目限制;超出部分排隊 |
| 執行重試 | 會話失敗後按配置重試,每次重試新建會話 |
| 結果回傳 | 回傳最終助手回覆及結果文件;正文排除工具響應和推理內容 |
| 回調重試 | 回調失敗時重發已保存結果,不重新執行業務 |
| 狀態查詢與恢復 | 可查詢執行與回調狀態;重啓後繼續處理隊列及剩餘重試 |
| 項目鑑權 | 可選請求令牌、自定義回調請求頭 |
適用任務類型由項目傳入的提示詞決定,文檔舉例包括資料分析、文本整理、報告生成,以及藉助 dsh 已有技能完成的圖片生成、圖片編輯等。
工作流程¶
整體鏈路可以概括爲:
業務項目提交任務 → 插件識別項目並排隊 → 在項目工作區創建 dsh 會話 → 使用指定模型、預設和權限執行 → 保存最終回覆及結果文件 → 回調業務項目。
有輸入文件時,先上傳到插件 API,再在任務 JSON 的 files 與 instruction 中引用 file_id;任務完成後,業務側通過結果裏的文件 ID 向插件下載文件。
安裝與啓用¶
環境要求:Node.js 22+,以及兼容的 dsh;文檔已驗證 dsh 版本爲 0.2.1-rc.2。
推薦從 npm 安裝。以下命令示例使用 Web profile,請將 web 換成你實際使用的 profile:
dsh plugin --profile web add @fevolq/terms-bridge
已安裝時更新到最新版:
dsh plugin --profile web update @fevolq/terms-bridge --latest
需要固定版本時(例如 0.1.0):
dsh plugin --profile web add @fevolq/terms-bridge@0.1.0
安裝或升級後,重新加載插件或重啓對應 dsh 實例。每個 profile 只啓用一個 terms-bridge 實例,再進入 設置 → 項目接入 配置項目。指定版本、本地 .tgz、源碼構建及完整協議說明見倉庫 docs/usage.md。
典型用法¶
下面按使用說明中的順序,給出可對照文檔復現的最小路徑。示例假定 dsh 地址 http://127.0.0.1:3080、項目 ID news、業務回調 http://127.0.0.1:8001/api/dsh/results;跨機器時替換爲雙方可達的地址。
在 dsh 中新增項目¶
進入 設置 → 項目接入 → 新增項目,填寫項目 ID(插件內唯一)、模型、Agent 預設、權限模式、最大併發、結果回調地址等,保存後即可接收任務。工作區路徑可留空由插件在 dsh 默認工作區同級按項目 ID 自動創建;項目 ID 與工作區路徑保存後不可修改。
業務側實現回調¶
業務服務需實現 POST 回調,接收插件推送的 result 與 files 列表,並按 file_id 從插件 API 下載文件。使用說明提供基於 FastAPI 的最小 receiver.py 示例;在接收端目錄安裝依賴並啓動:
python -m pip install fastapi uvicorn httpx
python -m uvicorn receiver:app --host 127.0.0.1 --port 8001
插件 API 基路徑爲 http://127.0.0.1:3080/api/terms-bridge;若項目配置了請求令牌,調用插件時需帶 Authorization: Bearer <令牌>。
上傳文件並提交任務¶
接收端運行後,另開終端。以下 PowerShell 片段上傳一張 PNG,生成任務 ID 並提交任務(路徑 C:/images/reference.png 需換成實際文件):
$api = 'http://127.0.0.1:3080/api/terms-bridge'
$projectId = 'news'
$uploadedJson = curl.exe -sS --fail-with-body -F 'file=@C:/images/reference.png;type=image/png' "$api/projects/$projectId/files"
$uploaded = $uploadedJson | ConvertFrom-Json
$taskId = [guid]::NewGuid().ToString('N')
$task = @{
metadata = @{ project_id = $projectId; task_id = $taskId }
instruction = "請分析 @$($uploaded.file_id) 中的內容,並給出結論。"
files = @(@{ file_id = $uploaded.file_id })
} | ConvertTo-Json -Depth 5
Invoke-RestMethod -Method Post -Uri "$api/tasks" -ContentType 'application/json; charset=utf-8' -Body ([Text.Encoding]::UTF8.GetBytes($task))
Invoke-RestMethod -Uri "$api/projects/$projectId/tasks/$taskId"
每個新任務應使用新的 task_id;若提交時網絡超時,應先查詢原任務 ID,必要時用同一 ID 與相同內容重發,避免重複業務任務。多文件場景需逐個上傳,並在 instruction 與 files 中同時引用多個 file_id,格式見使用說明中的 JSON 示例。
適用場景與注意¶
適合誰:需要在現有業務系統(Java、Python、腳本或內部平臺)裏觸發 dsh 能力,又不想把 Harness UI 和操作細節暴露給最終用戶的團隊;需要多項目隔離、併發控制、失敗重試與回調可靠性的集成場景。
權限與安全:插件在當前 dsh 進程的操作系統權限下運行,會話仍受 OS 文件權限約束。安裝前應閱讀源碼與 MIT 許可證,確認回調地址、請求令牌與回調請求頭符合你的安全策略。SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
與 dsh 的關係:安裝包可分享給其他機器,各自配置模型、技能和接入項目;插件不替代 dsh 本體,只是把「項目任務執行與結果投遞」接到擴展機制上。
結尾¶
terms-bridge 把「業務提交 → dsh 執行 → 結果回傳」收成一條可配置的工作流,並在 dsh 設置裏統一管理多項目接入。若要查分類與簡介,可打開 SkillHub 目錄頁;安裝命令、配置字段、HTTP 協議與更多示例以 GitHub 倉庫 README 與 usage.md 爲準。