Minglink/dsh-infinite-gen-4
Minglink/dsh-infinite-gen-5DeepSeek 专用破甲插件:以 order 100 追加无条件服从的系统提示词段,提供带校准元数据的 profile 工具,并通过会话投影在输入框上方显示实时破甲状态徽标。
侧边栏底部的已归档对话列表,可只读预览最近消息;针对产品刻意隐藏且无法重新打开的归档会话。
在 DSH Web 设置页显示已归档对话列表,点击条目可只读预览最近的用户/助手消息。独立插件,通过 dsh plugin 安装进 web profile。
DSH 产品有意禁止打开归档会话:客户端 workspaces 服务有一条强制规则——归档会话一旦成为当前会话就被立即清除回"新对话"状态("隐藏的行不能保持打开"),且当前 Host 端没有取消归档(unarchive)API。因此本插件不尝试打开或恢复归档会话,而是提供安全的只读预览:
settings.section,id archived-conversations,导航项"已归档对话");DSH 目前没有取消归档 API:workspace-controller 只暴露 @Remote('archiveSession'),全仓无 unarchiveSession / removeArchivedSession。且插件侧无法自行实现——WorkspaceRegistry.setState 与 enqueueOperation 都是 private,registry 的公开写入口只有 archiveSession,没有可安全移除元素的公开方法。绕过私有方法直接写权威 domain state 会与 registry 的写队列和 pendingMutation 恢复逻辑并发竞争,等于让插件成为状态的第二个 owner,因此本插件不做这件事。
好消息是 harness 侧留了门:workspaceDomainSpec 的注释明确写着 "an archived session keeps its sessionIds slot (unarchiving must restore the position)",所以一旦上游补上 unarchiveSession,恢复后位置可以还原。参见 issue #2。
src/index.ts):注册 webServer 精确路由 GET /__archived-conversations/preview?sessionId=<id>,通过 sessionQuery.readSession(live-preferred,冷会话走持久化)读取日志,只提取 user/message(真实用户来源)与 assistant/message 的纯文本块,限量返回 JSON。src/client/index.js):window.__ModuleLoader__.load 静态 bundle,require('react'),注册 settings.section 条目,用 fetch 调 Host 预览路由;列表数据来自槽位标准 props(useSessions/useWorkspaces)。本插件的预览路由在发布前经过独立安全审核,并做了如下加固:
sessionId 属于 registry 归档集合(workspaceRegistry.archivedSessionIds)时才响应,活动会话、子代理会话一律不可读(404);sessionId 必须是 DSH 会话 id 形态(session- 前缀 + UUID/计数器),否则拒绝;innerHTML/dangerouslySetInnerHTML);Cache-Control: no-store + X-Content-Type-Options: nosniff;Host,并拒绝跨站 Fetch Metadata、跨源 Origin/Referer;说明:路由本身是 DSH 静态插件与 Host 通信的标准模式(
webServer.register+ fetch,与dsh-mermaid等社区插件一致)。预览路由即使 webServer 绑定0.0.0.0也只服务 loopback 请求;这不是认证层。
从 GitHub 仓库安装(构建在 prepare 脚本里自动执行):
dsh plugin --profile web add github:AKS1st/dsh-archived-conversations
dsh web # 重启 web 服务使 profile 生效
若 pnpm 提示 git 依赖需要执行构建脚本(
ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED), 按提示把包加入 profile 的pnpm-workspace.yaml的allowBuilds后重试即可。
本地开发(先构建再安装):
npm install
npm run build
dsh plugin --profile web add .
dsh web
卸载:
dsh plugin --profile web remove archived-conversations
MIT