dsh-artifact:爲 DeepSeek Harness 提供 Claude-Code 風格的 HTML 工件

前言

讓智能體寫一份報告,結果通常落在兩個地方:要麼在聊天窗口裏滾兩屏就找不到了,要麼在工作區裏多出一個 .html 文件,之後再沒人打開。前者不留存,後者污染倉庫。

dsh-artifact 針對的就是這個問題。下面介紹這個插件做什麼、怎麼裝、怎麼用。

這是什麼

dsh-artifact 是 DeepSeek Harness(DSH)的一款插件,由 Jannchie 維護,採用 MIT 許可證。DSH 的理念是「一切皆插件」,這款插件補上的是「工件」這一環:它爲 DSH 提供 Claude-Code 風格的 artifacts——一個寫入自包含 HTML 的 artifact 工具、一個內置的創作 skill、一個側邊欄導航按鈕,以及一個應用內的沙盒 HTML 工件瀏覽器。

裝好之後,智能體產出的文檔會作爲工件存放在工作區之外,按最新優先排列,跨項目保留,並在應用內直接渲染閱讀。

核心功能

artifact 工具

插件向智能體暴露一個 artifact 工具,共四個命令:

命令 參數 作用
list 無 列出全部工件,最新優先
read path 讀取單個工件的完整 HTML
write path、content 創建或替換一個工件
delete path 刪除一個工件

path 相對於存儲目錄,.html 後綴可以省略。也就是說,write path:"q3-report" 會在存儲目錄下生成 q3-report.html。

內置創作 skill

插件註冊了一個 writing-artifacts skill。有了它,智能體生成的 HTML 是真正的文檔:單一閱讀欄、語義化標題、可獨立滾動的表格、跟隨主題的配色,而不是包着三段文字的應用外殼。

應用內工件瀏覽器

web 界面裏會多出一個 Artifacts 標籤頁和對應的側邊欄導航按鈕。工件以沙盒 iframe 渲染,點擊進入閱讀,用 ‹ 返回對話。

工件存放在工作區之外

工件存儲在 $DSH_HOME/artifacts,默認是 ~/.dsh/artifacts,與 harness 已有的會話和存儲放在同一層。這是刻意的設計:工件跟着人走,不跟着項目走,倉庫也不該堆滿生成的 HTML。

預覽跟隨主題

預覽會注入應用的即時顏色 token,工件因此跟隨你的主題——包括被其他插件覆蓋過的主題。

安裝與啓用

先執行安裝命令:

dsh plugin --profile web add dsh-artifact

這條命令會把插件加入 web profile。隨後必須重啓 dsh web:插件是在進程啓動時組裝的,不重啓不會生效。

典型用法

重啓之後,向智能體提一個值得保留內容的請求,例如:

Summarize this week’s benchmark results as a report.

智能體會調用 artifact 工具把內容寫成工件,文檔隨即出現在 Artifacts 標籤頁。點擊進去閱讀,用 ‹ 返回對話。

配置

插件的各項行爲可以在 profile 的 cordis.patch.yml 裏覆蓋:

- id: artifact
  config:
    # 工件目錄。省略或爲 null 時使用 $DSH_HOME/artifacts。
    root: /absolute/path/to/artifacts
    # 單次寫入接受的最大字符數。
    maxArtifactChars: 400000
    # 是否注入關於何時寫工件的系統提示段落。
    promptSection: true
    # 是否註冊內置的 writing-artifacts skill。
    skill: true
    # 傳給預覽工件的顏色,疊加在即時主題之上。
    # 不帶 -- 前綴的鍵按別名 token 讀取。
    palette:
      state-business-primary: '#e0552b'

逐項說明:root 省略或爲 null 時使用 $DSH_HOME/artifacts;maxArtifactChars 是單次寫入接受的最大字符數,示例值爲 400000;promptSection 控制是否注入關於何時寫工件的系統提示段落;skill 控制是否註冊內置的 writing-artifacts skill;palette 是傳給預覽工件的顏色,鍵不帶 -- 前綴時按別名 token 讀取。

沙盒限制與寫入邊界

渲染側,工件在僅帶 allow-scripts 的 iframe 中運行——無網絡、無同源。外部樣式表、CDN 腳本、webfont、fetch、localStorage 和 cookies 均不可用,因此工件必須內聯全部所需內容。內置 skill 會按這個約束生成 HTML;只有在你手寫工件時纔會真正注意到這條限制。

寫入側,write 被限制在工件存儲目錄內,越界路徑會被拒絕,而不是被保存到瀏覽器無法列出的位置。

另外,如果你想給 DSH 寫自己的插件,倉庫裏的 NOTES.md 提供了實現說明:slot 契約、two-envelope wire 協議,以及四個值得了解的陷阱。

適用場景與注意

適合的場景:

  • 智能體經常產出值得保留的報告、速查表、總結,希望它們以可讀文檔的形式存在;
  • 不想讓生成的 HTML 混進倉庫;
  • 希望工件跨項目保留、按時間倒序翻找。

使用前注意:

  1. 插件以當前 dsh 進程的權限運行。安裝任何第三方插件前,建議先閱讀其源碼與許可證(本項目爲 MIT)。
  2. 安裝後必須重啓 dsh web 纔會生效。
  3. 工件不能依賴任何外部資源,手寫工件時需要把樣式和腳本全部內聯。

小結

經過上面的步驟,智能體的產出就從「聊天裏滾走的一段話」變成了隨時能打開、跨項目還在的文檔。想看源碼或瞭解更多細節,可以訪問:

  • 社區目錄頁:https://www.skillhub.cn/plugins/Jannchie/dsh-artifact (獨立社區站點,與 DeepSeek / 幻方無官方從屬關係)
  • GitHub 倉庫:https://github.com/Jannchie/dsh-artifact
羽毛球分组比赛记分
小程序二维码

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

小夜