Repository navigation
Releases: John4874314/dsh-steward
Release list
v1.3.1 — 修「插件已关闭」:包身份统一为 dsh-steward
⚠️ 装了 1.3.0 的话,插件会显示「已关闭」
包元信息错误:Plugin metadata for dsh-steward:
icon.svg: icon must remain inside its package directory
1.3.0 把 patch 与 client 的 id 统一改成了 dsh-steward,但漏了包自己的
package.json,它的 name 还是本地开发用的 @local/dsh-steward。
DSH 的 assertPackageOwned() 会从 icon.svg 的真实路径向上找一个 name 等于包名的
package.json。先找到的是 @local/dsh-steward,对不上,于是整块插件被判定元信息非法,
自动移出 bundle 列表并显示「已关闭」——功能全都不出现。
修复
package.json的name改为dsh-steward,与发布版完全一致。
本地和发布从此共用同一个包身份,这类「本地能跑、发布坏 / 发布修了、本地又坏」
的分叉不会再出现。exports补上"./package.json": "./package.json"(其它 DSH 插件都有;
缺了会让<包名>/package.json解析报ERR_PACKAGE_PATH_NOT_EXPORTED)。- 安装后如果仍显示「已关闭」,去 设置 → 插件 里重新启用一次(或重启 DSH)。
被元信息校验移出 bundle 列表的条目不会自己回来。
自检从 6 条扩到 10 条
新增:
exports必须导出./package.json/./icon/./client- 包名必须是裸名,不带
@scope/(这条直接对应上面的故障) icon满足 DSH 的类型 / 大小(≤256 KiB)/ 包内约束- 仓库 README 必须仍是 GitHub 落地页(防被插件内部的简版 README 覆盖),
且更新日志首条版本号、安装命令 tag 都要与package.json一致
已验证:把 name 改回 @local/ 会让 2 条断言立刻变红。
验证方式
- 用 DSH 里那段
assertPackageOwned逻辑写了探针,走真实 junction 路径全部通过 - 在隔离 profile 里真实启动一次:零元信息错误,服务正常监听
npm test:10/10 通过
安装
dsh plugin --profile <profile> add https://codeload.github.com/John4874314/dsh-steward/tar.gz/refs/tags/v1.3.1装完重启 DSH。之前装过旧版的,建议先
dsh plugin --profile <profile> remove dsh-steward 再装。
v1.3.0 — 修复发布阻断级加载失败
⚠️ 如果你装过 1.0.0 ~ 1.2.2,请升级到这一版
那些版本从 tarball / npm 安装根本加载不了:
dsh-steward (@local/dsh-steward): failed to import:
Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@local/dsh-steward'
dsh: warning: 1 entry did not activate
原因:cordis.patch.yml 的 name 写的是本地开发别名 @local/dsh-steward,
而真实包名是 dsh-steward。宿主按 name 解析模块,所以插件整块不激活。
本地开发时看不出来,因为本地恰好装成了 @local/ 作用域。
修复
cordis.patch.yml的name改为dsh-steward,client.js的 module id 同步。- 运行守则改为默认关闭。以前
guardrails.install: true且代码里用!== false判断,
undefined会被当成开启 —— 装个插件就往全局AGENTS.md写东西。现在只有显式打开才写。 - 补最小自检与 CI:
npm test6 条断言,第一条是「package.json / patch / client
三个名字必须一致」。已验证把它改回@local/会立刻变红。 - README 去掉 npm 徽章(包没发布,徽章是假的),补平台支持矩阵、
「这个插件会碰什么、不会碰什么」、以及已知粗糙之处。
验证方式
在隔离 profile 里真实安装复现了上述错误,换成修复版后启动零错误、服务正常监听。
安装
dsh plugin --profile <profile> add https://codeload.github.com/John4874314/dsh-steward/tar.gz/refs/tags/v1.3.0装完重启 DSH。如果你之前装过旧版,建议先 dsh plugin --profile <profile> remove dsh-steward 再装。
平台
Windows / macOS / Linux 都能装;解压、多浏览器选择、终端三项目前是 Windows 专用,
在别的系统上会隐藏而不是留一个点了没反应的按钮。
v1.2.2 — 交接日志清注入定稿
修复
- 剔除
Current runtime context...运行时快照块(仅当整块以它开头,避免误杀用户提问) - 剔除
Time sampled while preparing turn.../Browser time zone.../Elapsed since...三行时间补丁 - 没标题时用首条剥完注入后仍有内容的用户消息当标题
安装
dsh plugin --profile <profile> add https://codeload.github.com/John4874314/dsh-steward/tar.gz/refs/tags/v1.2.2v1.2.1 — 交接日志标题兜底
修复
会话没有设置标题时,交接日志的文档头以前会写一串 session-xxxx,认不出是哪个对话。
现在取第一条剥掉 system-reminder 后仍有内容的用户消息作为标题,截到 40 字。
# 交接日志 · 查看当前模型(test_2)
其余功能与 v1.2.0 相同。
安装
dsh plugin --profile <profile> add https://codeload.github.com/John4874314/dsh-steward/tar.gz/refs/tags/v1.2.1v1.2.0 — 每个对话的文件夹自动写交接日志
新功能
每个对话的文件夹里自动写一份 交接日志.md,用途是把任务交给下一个人(或几天后的自己)。
| 段落 | 内容 |
|---|---|
| 概览 | 会话 id、标题、工作目录、创建时间、导出时间、消息数、省略了多少 |
| 产出的文件 | 这次对话里 present 过的交付物,一行一个绝对路径 + 说明 |
| 对话记录 | 按时间顺序:用户说了什么、助手回了什么、调了哪些工具(成功/失败) |
- 触发:建目录时一次,之后每个
turn/end与session/end-seed各一次,同会话 4 秒节流。 - 写入:整份重新生成,写
.tmp再rename原子覆盖,不会留下半截文档。 - 清洗:剔除 DSH 每轮注入的
<system-reminder>(实测占一份 1.2 万事件对话的 48%)。 - 截断:单条消息默认上限 4000 字(保留头尾并标注省略字数),对话条数默认保留最近 400 条。
- 新增命令
/chat-session-log --session=<id>,给历史对话补导。 - 设置页「对话管理」新增开关(默认开启,仅在文件夹开关打开时显示)。
修复
- 工具调用与结果按
message.toolCallId配对 —— 之前读错了字段,日志里整片工具行都显示「未返回」。 - 写入前补一次
mkdir:目录被手动删掉后不再因ENOENT静默失败。 - 工具参数里的多行命令压成一行,避免 markdown 列表被撑散。
- 老会话的既有目录在插件升级后会补写第一份日志。
安装
dsh plugin --profile <profile> add https://codeload.github.com/John4874314/dsh-steward/tar.gz/refs/tags/v1.2.0装完重启 DSH(客户端 bundle 图只在进程启动时构建)。
dsh-steward 1.1.0
dsh-steward 1.1.0
右键菜单从「一个通用列表」变成「按文件类型分组 + 网址专用」。
新增
文件右键菜单按类型分组
| 类型 | 专属动作 |
|---|---|
| 代码(js/ts/py/go/rs/java/c/cpp/cs/php/sh/ps1/sql/html/css/json/yaml…) | 复制代码、复制为 Markdown 代码块(带语言标注) |
| 文档(md/txt/pdf/docx/xlsx/pptx/csv…) | 复制文件内容 |
| 压缩包(zip/7z/rar/tar/gz/tgz…) | 解压到此处(同名目录已存在则拒绝,不覆盖) |
| 图片 / 音视频 / 可执行 / 其它 | 文件信息(大小 + 修改时间) |
可执行文件(exe/msi/dll/so/jar…)不提供任何运行入口 —— 路径来自对话内容,
一个「运行」按钮等于给了静默执行任意程序的通道。
网址右键菜单
- 在默认浏览器打开
- 用其它浏览器打开(枚举本机
StartMenuInternet注册的浏览器) - 复制网址
- 复制为 Markdown 链接
只接管 http/https;javascript:、data:、file: 一律放行给原生菜单。
带账号密码的链接
之前会被静默忽略(右键毫无反应,像是坏了)。现在:
- 菜单照常弹出,顶部 URL 打码成
https://user:***@host/ - 多一行橙色警示
- 点「在浏览器打开」时弹确认框,说明凭据会发给目标站点
- 复制类动作仍可用,复制的是完整原始 URL
安全靠「打开前确认」保证,不靠「什么都不给」。
右键范围扩大
从「交付物卡片 + 变更审查行」扩展到右侧文件树(相对路径按树根解析成绝对路径)。
修复
listBrowsers里用了动态import('node:child_process'),在 Cordis 加载环境中失败,
导致apply()抛错、整个插件 import failed、DSH 起不来。改为顶部静态导入execFile。
安装
dsh plugin --profile desktop add https://codeload.github.com/John4874314/dsh-steward/tar.gz/refs/tags/v1.1.0或(需要本机能连 github.com):
dsh plugin --profile desktop add github:John4874314/dsh-steward装完重启 DSH —— 客户端 bundle 图在进程启动时构建,刷新页面不会重扫。
升级
把上面命令里的版本换成 v1.1.0 重新 add 即可;配置和回收站数据不受影响。
完整说明见 README.md。
dsh-steward 1.0.0
dsh-steward 1.0.0
DeepSeek Harness 的对话管家:批量删除对话、每个对话一个文件夹、回收站、备份管理、运行守则、体检。
安装
dsh plugin --profile desktop add https://codeload.github.com/John4874314/dsh-steward/tar.gz/refs/tags/v1.0.0或者(需要本机能连 github.com):
dsh plugin --profile desktop add github:John4874314/dsh-steward装完重启 DSH —— 客户端 bundle 图在进程启动时构建,刷新页面不会重扫。
功能
- 对话 —— 多选批量删除;删除进回收站,可恢复
- 文件夹 —— 每个对话一个文件夹,落在该会话自己的工作区目录下
- 回收站 —— 恢复 / 彻底删除 / 清空
- 备份 —— 一键打开备份文件夹或直接删除,不长期占盘
- 运行守则 —— 查看并维护 AGENTS.md 里的三原则
- 体检 —— 检查孤儿文件夹、重复目录、注册表一致性
兼容性
- DSH
0.2.1-rc.3实测通过 - 与
dsh-better-sidebar共存:检测到该插件时自动把面板挂到右侧栏;未安装时用自带设置页
完整说明见 README.md。