deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:BakaCirno233/dsh-session-delete
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
DeepSeek Harness (DSH) 插件:在 设置 → 会话管理 中列出所有会话,并永久删除不需要的会话。
~/.dsh/sessions/<项目>/<session-id>/)workspaceRegistry.detachSession)info、异常 warn);工作区账目摘除失败会作为 warnings 回传界面,而不是被静默吞掉活动会话限制:本次启动中打开过的会话(包括正在查看的当前会话)会被拒绝删除——活动 Agent 会重写日志,删除不彻底。重启应用后这些会话变成冷会话,即可正常删除。历史会话(此前运行留下的)随时可直接删除。
origin: "subagent" 的会话。勾选 「显示子代理会话 (N)」 即可列出它们(N 是当前被隐藏的数量)。subagent 标记,但它们不是子代理。本插件按 Side: 标题前缀识别,永远不显示——删掉它会让侧边栏那个对话标签页变成孤儿。子代理 / subagent、主会话 / main)、工作区路径、以及 agent preset(qq-chat、cordis 等)。输入 子代理(或其前缀 agent)会自动放开隐藏,一次列出全部子代理会话。cwd,按会话数量降序;无 cwd 的归入「未知工作区」)。删除中 12/357),单条失败只计入失败数、不中断整批,结束后汇总成功与部分失败。warn,绝不盲目 rm -r——那可能带走整个工作区分组。sessionPersistence.locate() 抛错时返回失败,而不是当成「没有产物」。AbortController),host 无响应不会把界面永久锁死。| 宿主 | 状态 |
|---|---|
DSH Desktop 2.0.10 / 内核 0.1.5-rc.2 |
✅ 已验证(sessionPersistence.list() 返回 snapshot,本插件按 snapshot.header 读取) |
DSH Desktop 2.0.9 / 内核 0.1.5-rc.1 |
⚠️ 未验证。若该版本的 list() 返回的是裸 header 而非 snapshot,列表会取不到 id |
这条分界线来自 2.0.10 的服务语义变化:
sessionPersistence改为按SessionHandle(create/open)寻址,list()返回{ header, sizeBytes, revision }快照。若你的 DSH 更老,请先确认list()的返回结构再装。
在目标 profile 的 package.json(例如 ~/.dsh/profiles/desktop/package.json)中加入依赖与 bundle:
{
"dependencies": {
"dsh-session-delete": "github:<你的用户名>/dsh-session-delete"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"…其他插件…",
"dsh-session-delete"
]
}
}
}
然后在 profile 目录执行 pnpm install,重启 DSH 应用。
使用:设置(齿轮)→ 会话管理。
"dependencies": {
"dsh-session-delete": "file:D:/workspace/repos/dsh-session-delete"
}
pnpm install 后改 lib/ 里的代码,重启应用即可生效。
注意:
file:依赖在 profile 的node_modules下是副本而不是符号链接。改完仓库代码后需要重新pnpm install(或手动把lib/*.js复制过去),否则运行的仍是旧代码。
lib/index.js — Host 半部:在本地 webServer 注册两个路由POST /api/session-delete/list → { sessions: [{ sessionId, live, running, sizeBytes?, agentPreset?, cwd? }] }POST /api/session-delete/delete → { ok, code?, message?, warnings? }node:fs/promises(rm),无需子进程lib/client.js — 浏览器半部:settings.section 的「会话管理」页,通过 fetch 调用宿主路由cordis.patch.yml — 把宿主插件行插入组合(宿主半部)package.json 的 dsh.client 声明让 Web 端自动发现 lib/client.js兼容
sessionPersistence.list() 的返回结构:从 header 数组变为 snapshot 对象数组({ header, sizeBytes, revision })。直读 snapshot 的 id 会拿到 undefined。现在改走 snapshot.header 取出 id/cwd/agentPreset,sizeBytes 则直接取 snapshot 自带的(后端已经 stat 好了,删掉了独立的 sizeOf 函数)。修复
sessionPersistence.locate() 失败不再被当作「没有产物」而静默返回成功detachSession)失败不再被吞掉,改为回传 warnings 并写日志新增
sizeBytes / agentPreset / cwdinfo / 异常 warn)改进
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。