前言¶
在 DeepSeek Harness(DSH)裏用 Agent 寫代碼,一次會話裏新建、改動的文件往往分散在會話日誌裏。日誌適合回溯過程,卻不適合當作「上次動了哪些路徑」的清單。下一次會話要麼重新掃目錄(慢且容易漏),要麼靠記憶指路(更不可靠)。
下面介紹社區插件 dsh-session-artifacts(維護者 accoutmissing)。它在 DSH Web UI 右欄增加「產物」標籤頁:從會話日誌彙總 write / edit 工具調用裏的路徑,列成可搜索的列表,單擊複製、雙擊在側欄預覽。它不移動、不生成文件,只把已有記錄變成可操作的一列。
這是什麼¶
dsh-session-artifacts 是 DSH 的客戶端類 bundle 插件(package.json 中 dsh.bundle.patch 指向 cordis.patch.yml,由插件管理器作爲 profile 補丁安裝)。當前包版本 0.4.2,許可 MIT,引擎要求 DSH >=0.2.0-rc.1 等區間(見倉庫 package.json)。
分類上屬於客戶端:在瀏覽器側注入右欄 UI,在宿主側註冊本地路由、解壓並索引 ~/.dsh/sessions 下的會話日誌。
核心功能¶
產物清單¶
插件從 DSH 會話日誌(~/.dsh/sessions/<工作區桶名>/<sessionId>/session.v4.jsonl.zstd)解析 tool/call 中 write、edit 的 arguments(JSON 需二次 parse)裏的 file_path,彙總爲列表。當前會話永遠排在最前並默認展開,帶「本會話」標識;文件名與父目錄分行顯示。
索引結果緩存在 ~/.dsh/session-artifacts-cache.json,按文件的 size + mtime 增量更新;首次全量掃描在後臺進行,界面會先顯示「首次掃描中…」。README 記載本機實測約 159 個會話、1208 個產物文件(2026-11-03),冷啓動全量索引約 3 s、暖啓動約 0.2 s。
交互¶
| 操作 | 結果 |
|---|---|
| 單擊文件行 | 複製該文件完整路徑 |
| 雙擊文件行 | 在右側欄打開預覽;右欄已分屏時開在另一欄 |
| 行獲得焦點時按 Enter | 等同於雙擊 |
| 行內複製控件 | 只複製路徑,不觸發整行其它行爲 |
| 置頂(懸停出現) | 可選「本會話置頂」或「全局置頂」 |
| 置頂區關閉 | 取消全局置頂 |
兩級置頂:全局置頂在所有會話上方單獨成區;會話置頂只把該條排到當前會話產物列表最前。置頂數據寫在 ~/.dsh/session-artifacts-pins.json,換頁面、換會話仍保留。路徑比較前會歸一化(分隔符統一爲 /、去尾斜槓、轉小寫),Windows 與 Unix 風格路徑可視爲同一條。
搜索框同時匹配會話標題、工作目錄、產物路徑。配色與動效跟隨當前皮膚 token(含 fallback),插件不自帶固定配色方案。
宿主 API¶
| 路由 | 方法 | 說明 |
|---|---|---|
/plugins/session-artifacts/state |
GET | 全量索引、置頂表、client 版本戳 |
/plugins/session-artifacts/pins |
GET / POST | 讀 / 切換置頂 |
兩路由僅接受 loopback;寫置頂還要求自定義頭 x-dsh-session-artifacts,body 不超過 8 KB。插件 dependencies 爲空,README 寫明不發起任何外部網絡請求。
安裝與啓用¶
在 DSH 側欄「插件」頁安裝,來源填寫:
github:accoutmissing/dsh-session-artifacts
或在非 desktop profile 下用 CLI(desktop profile 由桌面端託管,CLI 會拒絕 --profile desktop,此時用界面安裝):
dsh plugin --profile <profile> add github:accoutmissing/dsh-session-artifacts
本地改代碼時,可在會話裏讓 Agent 執行:
plugin_manager({ action: 'install_bundle',
target: 'D:\\路徑\\到\\dsh-session-artifacts' })
返回 application: "applied" 纔算生效;失敗時查看 warnings。安裝後需刷新頁面(Ctrl+R)纔會加載 client bundle,右欄標籤條會出現新標籤。修改插件代碼後可通過 plugin_manager 先 enabled:false 再 enabled:true(entry id 爲 include:dsh-session-artifacts,不是包名)熱更新,無需重啓。
典型用法¶
1、安裝並刷新頁面,打開右欄「產物」標籤。
2、在搜索框輸入工作目錄片段或文件名,定位某次會話改過的路徑。
3、單擊一行復制完整路徑,粘貼到下一輪會話或外部工具。
4、需要快速看內容時雙擊該行(或聚焦後 Enter),在側欄預覽;側欄已分屏時預覽會開在另一欄。
5、常查的路徑用置頂固定:懸停行內置頂控件,選「本會話置頂」或「全局置頂」。
適用場景與注意¶
適合:長期在 DSH 裏做多輪 Agent 開發、需要接續「上次 write/edit 了哪些文件」、又不想動磁盤目錄結構的用戶。
數據源限制:產物只認日誌裏 write / edit 的 file_path。ops_bash 裏重定向、構建或下載生成的路徑不會進入清單——README 說明爲避免從 shell 字符串猜測路徑。workspaceChanges 僅服務 live session 且需要 seq,歷史會話只能依賴日誌索引。
環境:README 寫明主要在 Windows + DSH 桌面版實測(Electron 自帶 Node 24,提供 zlib.zstdDecompressSync);其它平臺日誌路徑相同但未實測。索引窗口上限 400 個會話;反查時跳過 node_modules、.git、dist 等目錄。預覽僅支持側欄已支持的格式,其餘會提示不支持而非強行打開。
安全:插件以當前 DSH 進程權限讀取本地會話日誌與緩存;安裝前建議在 GitHub 查看源碼與 MIT 許可證。社區目錄 SkillHub 插件頁 與 DeepSeek / 幻方無官方從屬關係,屬社區生態中的獨立條目。
結尾¶
dsh-session-artifacts 把會話日誌裏的寫改路徑收成右欄清單,配合複製、預覽與兩級置頂,減少「下一輪從哪接着幹」的盤查成本。進一步瞭解可訪問目錄頁與倉庫:
- 目錄頁:https://www.skillhub.cn/plugins/accoutmissing/dsh-session-artifacts
- GitHub:https://github.com/accoutmissing/dsh-session-artifacts