前言¶
在 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