前言¶
DeepSeek Harness(dsh)是 DeepSeek 開源的智能體運行時,官方倉庫把它概括成一句話:一切皆插件。模型適配、工具、會話、沙箱和網頁界面,都可以在配置層增刪,不必改核心源碼。項目目前仍是開發者預覽,接口會繼續變。社區裏已經出現獨立的插件目錄站點,把 GitHub 上帶 dsh-plugin 話題的倉庫集中展示;需要說明的是,這類目錄與 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。
在 DSH 裏讓模型去生成圖片、視頻、音頻,常見痛點不是「會不會調接口」,而是產物散落各處:提示詞在對話裏,文件在臨時目錄,參考圖和下一次生成對不上號。多步 AIGC 往往還要拼接、裁切、抽幀,模型既要記得路徑,又要記得哪張圖是哪次生成的輸入。
dsh-plugin-aigc-canvas 把這件事收成一張會話級畫布。模型先通過提供方無關的 HTTP 工具去調任意 AIGC 接口,再把落盤文件擺到畫布上、按參考關係連邊;需要剪輯時走內置的 ffmpeg 後處理。本文按社區目錄詳情頁、GitHub 倉庫源碼(src/tools.ts / src/config.ts / src/media-edit.ts)、package.json、npm 包頁,以及官方 deepseek-ai/deepseek-harness 交叉覈實。目錄頁與 README 仍按早期「五類生成工具 + uuid 尋址」來寫,當前主分支已經改成 HTTP 橋 + 畫布擺放 / 連邊 + ffmpeg;下文以源碼爲準。
這是什麼¶
dsh-plugin-aigc-canvas 是一款「模型與提供方」類插件,由 HuanLinOTO 維護,npm 包名 @huanlin/dsh-plugin-aigc-canvas,倉庫插件 id 爲 dsh-aigc-canvas。社區目錄收錄於 2026-08-06,主語言 TypeScript,最近一次推送在 2026-08-15。GitHub 截至 2026-08-18 顯示 11 星;目錄頁當時仍寫 6 星,以倉庫頁面爲準。
它解決的問題可以壓成一句:讓智能體用統一工具去調你配置好的 AIGC HTTP 接口,把生成的圖片 / 視頻 / 音頻當作畫布元素保存,並在參考與輸出之間連線。默認帶一個 stub://aigc-backend 提供方,不發真實網絡請求,只合成測試用媒體,適合先跑通流程。
package.json 聲明許可證爲 MIT,npm 頁同樣標註 MIT;倉庫根目錄沒有 LICENSE 文件,GitHub 的 license 字段爲空。安裝前應自己打開源碼覈對。
核心功能¶
當前主分支向模型暴露 8 個工具,都綁在發起調用的代理會話上,模型不用傳 sessionId。倉庫簡介寫過「13 個工具含 reroll」,源碼裏沒有 aigc_reroll,也沒有目錄簡介裏的 aigc_text_to_image 等專用生成工具。
1、提供方發現與說明
aigc_get_provider_info:列出已配置提供方的 id、名稱、endpoint、調用說明、是否 stub、是否默認。工具描述要求生成前先調它。apiKey 不會出現在返回裏。aigc_provider_set_instructions:把探測到的接口寫法記回該提供方,供後續會話直接用。源碼要求儘量短,目標不超過約 200 字符,避免每次列出提供方時佔滿上下文。
2、提供方無關的 HTTP 橋:aigc_http_request
按提供方 id 發一次 HTTP 請求。endpoint 和 apiKey 由 host 自動附加,模型不能覆蓋鑑權頭或鑑權參數。鑑權方式可配 bearer(默認 Authorization: Bearer)、header 或 query。
請求 path 相對提供方 endpoint,例如 /v1/images/generations;同協議、同主機、同端口的絕對 URL 也可用來拉取提供方返回的下載地址。二進制響應(圖 / 視頻 / 音頻)寫入會話畫布目錄並返回 file_path;JSON / 文本內聯返回,過長則落盤。若響應是 OpenAI 圖像接口那種 { data: [{ b64_json }] },工具會抽出圖片再給 file_path。請求體裏可以用 {"$base64": "<file_path>"} 或 {"$data_uri": "<file_path>"} 嵌入畫布上已有文件,方便多參考生成。
3、無限畫布:擺放、連邊、快照
元素對模型的主鍵是磁盤上的 filePath(絕對路徑,落在會話畫布目錄內),不是目錄簡介裏寫的 uuid。內部仍用 uuid 管邊,對外投影成路徑。
aigc_canvas_place:把已在畫布目錄裏的文件擺到畫布上。可記 prompt 和生成參數(雙擊查看)。references傳入已有元素的 filePath 時,會自動從參考連到新元素。日常不要傳x/y:有參考時新節點落在參考右側並垂直居中,否則堆在現有元素下方。aigc_canvas_link/aigc_canvas_unlink:按 filePath 創建或刪除邊,冪等。aigc_canvas_list_elements:只讀快照,返回全部元素和邊,長工具序列後用來找回路徑。
畫布狀態持久化在:
<cwd>/.dsh-aigc-canvas/<sessionId>/canvas.json
媒體文件在同目錄,文件名帶 uuid 擴展名。刷新瀏覽器或重啓 DSH 後,會從 canvas.json 重新加載。
若安裝了 dsh-better-sidebar(peer 依賴 ^0.4.0),會註冊側欄 tab aigc-canvas:main,用 WebSocket 訂閱畫布變更。沒裝側欄時,host 側工具和元素表仍可用,只是沒有可視化界面。
4、ffmpeg 後處理:aigc_media_edit
輸入必須已在會話畫布目錄內,輸出也寫回該目錄,再交給 aigc_canvas_place。源碼支持的操作:
concat:拼接 2 段及以上視頻clip:按開始 / 結束或開始 / 時長裁切extract_audio:從視頻抽音軌(mp3)extract_frame:按時間戳抽一幀(png)speed:變速resize:縮放reverse:畫面與音頻倒放add_audio:給視頻替換 / 加上音軌images_to_video:多張圖合成幻燈片視頻(默認 2 fps)
ffmpeg 用顯式參數數組啓動,不走 shell;啓動前會校驗路徑落在畫布目錄內。機器上需要能在 PATH 裏找到 ffmpeg(Windows 上源碼還試過一個本地默認路徑,不可移植)。
安裝與啓用¶
社區目錄詳情頁給出的安裝命令是:
dsh plugin add github:HuanLinOTO/dsh-plugin-aigc-canvas
如需可復現安裝,按目錄頁說明固定 commit 哈希:
dsh plugin add github:HuanLinOTO/dsh-plugin-aigc-canvas#<commit>
把 <commit> 換成倉庫裏實際的提交哈希。倉庫 README 和 dshfind 插件頁推薦從 npm 裝到 web profile(--profile 換成你正在用的 profile 名):
dsh plugin --profile web add @huanlin/dsh-plugin-aigc-canvas
npm 截至 2026-08-14 最新版本是 0.1.4;GitHub 主分支 package.json 仍寫 0.1.1。兩種安裝源可能不是同一份代碼,選一種後以該源的源碼爲準。engines 要求 Node.js >=20。client 清單標明平臺爲 web,需要 dsh web 這一側。
插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前請檢查源代碼倉庫和許可證。
配置¶
提供方列表可在 DSH GUI 設置頁改,cordis.patch.yml 裏的值只是首次啓動種子。源碼默認配置可以概括成:
| 字段 | 含義 | 源碼默認 |
|---|---|---|
providers |
一個或多個 AIGC 提供方,第一個爲默認 | 內置 id: stub,endpoint: stub://aigc-backend |
providers[].id |
工具參數 provider_id 用的穩定標識 |
小寫字母開頭,只含小寫、數字、連字符 |
providers[].endpoint |
API 根地址 | stub://aigc-backend 表示內置 stub |
providers[].apiKey |
提供方密鑰,只存在內存裏 | stub 可留空 |
providers[].instructions |
給模型看的調用說明 | 初始爲空,由 aigc_provider_set_instructions 寫入 |
providers[].auth |
密鑰怎麼附到請求上 | 默認 bearer |
requestTimeoutMs |
單次後端 / ffmpeg 超時 | 300000(5 分鐘) |
mediaSizeLimit |
單個媒體寫入上限 | 104857600(100 MiB) |
README 裏的 baseURL / apiKeyEnv 對應更早的單後端設計,與當前 providers 數組不一致,不要按舊錶去配。
典型用法¶
沒有官方逐步截圖教程。按源碼裏的工具說明,一次真實生成大致是這個順序。
1、在設置頁加一個提供方:填 endpoint、apiKey、鑑權方式。先用默認 stub 也可以,只會產生合成 PNG / MP4 / MP3,用來確認畫布和連邊是否工作。
2、讓模型先調 aigc_get_provider_info。如果 instructions 爲空,再用 aigc_http_request 探測接口(例如 GET OpenAPI、或按提供方文檔 POST 生成路徑),確認請求體和響應形狀後,用 aigc_provider_set_instructions 寫成短說明。
3、生成:aigc_http_request 指定 provider_id、path 和 json_body。成功後拿返回的 file_path 調 aigc_canvas_place,寫一句 40 字以內的 description(畫布卡片標籤)。若這次生成參考了已有元素,把那些 filePath 放進 references。
4、多步任務用 aigc_canvas_list_elements 找回路徑,需要裁切、抽幀、拼接時再調 aigc_media_edit,把新文件重新 place 到畫布上。
下面是工具層會用到的請求形態示意(具體 path 和字段以你的提供方爲準,不要照抄):
{
"provider_id": "stub",
"method": "POST",
"path": "/v1/images/generations",
"json_body": {
"prompt": "a sleeping orange cat",
"size": "1024x1024"
}
}
多參考時,把畫布上的文件嵌進 JSON:
{
"model": "t2v",
"prompt": "dance",
"image": { "$base64": "/abs/path/.dsh-aigc-canvas/<sessionId>/<file>.png" }
}
file_path 必須是該會話畫布目錄內的絕對路徑,不能指向任意磁盤位置。
適用場景與注意事項¶
適合已經在用 dsh web、希望智能體自己完成「調 AIGC 接口 → 落盤 → 在畫布上對參考和產物連線 → 必要時 ffmpeg 剪一下」的開發者。提供方可以是火山、即夢、MiniMax 或任何 HTTP API:插件不綁定某一家,只負責鑑權附加、響應落盤和畫布狀態。
使用前需要接受這些邊界:
- 插件以當前 dsh 進程權限運行。
aigc_http_request會把 apiKey 帶到你配置的 endpoint;aigc_media_edit會在本機拉起 ffmpeg。安裝前檢查源碼和許可證。 - 默認 stub 不會調用真實模型。要出真實圖 / 視頻,必須自己配提供方。密鑰不要寫進對話,只放設置項。
- 工具不能跨會話讀寫元素。媒體路由也只提供會話畫布目錄內的文件。
- 路由有 Host 頭信任圍欄(與 DSH
/api同類)。0.0.0.0部署時依賴dsh web啓動器派生的局域網 IP 列表。 - README 仍列出「元素不能刪除 / 編輯,只能刪
canvas.json後重啓會話」等早期限制;畫布佈局、連線繪製是否已改,以你裝到的那一版 client 爲準,不要把 README 的 v0.1 限制表當成當前行爲。 aigc_media_edit依賴本機 ffmpeg。找不到二進制會直接報錯。- 社區目錄不是官方應用商店。插件由個人維護,版本號、工具列表、README 可能互相落後,裝完後以實際註冊到
ctx.tools的工具名爲準。
小結¶
dsh-plugin-aigc-canvas 把「任意 AIGC HTTP 接口」和「會話級節點畫布」接到 DeepSeek Harness 裏:模型先問提供方、再發請求、再把文件擺上畫布並連邊,剪輯走 ffmpeg。目錄頁安裝命令是 dsh plugin add github:HuanLinOTO/dsh-plugin-aigc-canvas;也可以按 README 從 npm 裝 @huanlin/dsh-plugin-aigc-canvas。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-plugin-aigc-canvas/
GitHub:https://github.com/HuanLinOTO/dsh-plugin-aigc-canvas