deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
DeepSeek Harness 插件:查看并恢复已归档的会话。
原生 DSH 侧边栏只有「归档会话」、没有「取消归档」——会话一旦归档就从所有分组界面消失,且没有任何查看或恢复入口(这是 dsh-client-ui-workspace README 明确记录的已知限制)。本插件补齐这个能力:把归档的会话单独展示在一个「归档会话」入口里,可随时打开查看或恢复回原位。
⚠️ 核心行为:点「打开」会自动取消归档并打开会话(显示完整历史对话);打开后会话不再处于归档状态,如需再次归档需手动右键「归档会话」。
session_archive 工具:list / unarchive / unarchive-all(供 agent 调用)。/unarchive 命令:list / restore <序号|id|关键词> / restore-all。GET /session-unarchive/api/archived、POST /session-unarchive/api/unarchive(供客户端 UI 调用)。本插件是 host + client 双半插件,零运行时依赖。
git clone https://github.com/simbamo/dsh-session-unarchive.git ~/.dsh/plugins/dsh-session-unarchiveln -sfn ../../../plugins/dsh-session-unarchive ~/.dsh/profiles/web/node_modules/dsh-session-unarchive~/.dsh/profiles/web/package.json 的 dependencies 里加:
"dsh-session-unarchive": "link:/Users/<你>/....../dsh-session-unarchive"~/.dsh/profiles/web/cordis.patch.yml 里插入 loader 条目:- insert:
- id: dsh-session-unarchive
name: dsh-session-unarchive
装完必须重启 DSH web 才生效(agent 无法从会话内自重启 DSH web,需手动
kill $(lsof -nP -t -iTCP:3080 -sTCP:LISTEN)后重跑dsh web)。
重启后,侧边栏底部(设置按钮旁)会出现「归档 (N)」入口:
⚠️ 重点:「打开」会自动取消归档(因为 DSH 核心设计上不允许「归档会话」作为当前会话被打开——一旦设为当前会被立刻清空回空白对话)。所以打开后,该会话不再处于「已归档」状态,会回到原位置;如需再次归档,请在侧边栏该会话上右键 →「归档会话」手动操作。
/unarchive list
/unarchive restore 3
/unarchive restore <id或标题关键词>
/unarchive restore-all
让 agent 直接调 session_archive 工具(list / unarchive / unarchive-all)。
~/.dsh/storages/workspace.json 的 global.archivedSessionIds(由核心 workspaceRegistry 服务维护)。archiveSession()(写入归档集合)、没有 unarchiveSession()。本插件在 apply() 阶段给 ctx.workspaceRegistry 实例补上 unarchiveSession(sessionId),复用其自身的 enqueueOperation 串行化 + setState 持久化,与原生完全对称。sidebar.footer.action 槽注册(DSH 原生侧边栏没有树内分组扩展槽,只能用 footer 入口方案),数据来自 useWorkspaces(归档集合)与 useSessions(标题)。unarchiveSession,成功后 ctx.workspaces.refresh() 刷新侧边栏。ctx.workspaces.refresh() → 再 ctx.sessions.open()。之所以必须这样,是因为 DSH 核心(dsh-client-runtime 的 WorkspaceRuntime.project)有一段「投影清扫」逻辑:任何归档会话一旦成为当前会话,会被立刻 clear() 回空白对话——所以归档会话无法被直接打开,只能「先取消归档再打开」。lib/
index.js # host 端:unarchive 补丁 + 工具 + 命令 + HTTP API
client.js # 客户端 bundle:sidebar.footer.action 的「归档会话」面板
package.json
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。