dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
dsh 宿主只有"归档会话"(workspace.archiveSession:把会话从所有分组界面隐藏),
没有查看、恢复或删除归档会话的入口。本插件补齐这一环:
domain/changed,
apiproxy 自动向所有已连接的 Web 客户端推送 host/archived-sessions-changed,
左侧列表实时更新,无需手动刷新页面;list_archived_sessions / unarchive_session /
delete_archived_session,在会话里也能直接找回或清理旧对话。宿主 WorkspaceRegistry 只公开 archiveSession,没有 unarchive。本插件的
恢复走 registry 实例的串行写队列(enqueueOperation + setState,宿主里是
TS private、运行时可访问):
recoverPendingMutation 产出的三字段一致,
通过 apiproxy 的 workspaceDomainState zod 校验;宿主全链路没有会话删除 API(持久化后端只有 create/append/read)。删除按 "失败偏向重新可见"的顺序组装:
sessions.get(id) 有值时不动文件);entity.detachSession,公开方法、domain 写链、
幂等,自动推 host/workspace-changed 帧);persistence.locate() 定位日志文件,删除其父目录(sessions/<project>/ session-<uuid>);目录名不含会话 id 时拒绝删文件(防后端布局变化误删)。日志删除后 persistence.list() 立即不再列出该会话(客户端基线随之消失,
删除请求发起端会立即重读该基线,无需刷新页面或重启);projection cache 行
与日志身份绑定,过期行自动作废,无需清理。
删除不要求会话仍在归档集合(幂等):中途失败后重试不会卡在半完成状态。
插件从安装并启用本版本后开始记录新的归档动作。升级前已经处于归档状态的 对话没有可靠的实际归档时间,会显示为「归档时间未知」,不会进入 7 天或 30 天批量清理范围;取消归档后再次归档会重新开始计时。7 天清理包含所有 已归档满 7 天的对话,因此也包含已满 30 天的对话。
归档时间默认保存在 ~/.dsh/archive-vault/archive-times.json;设置了
DSH_HOME 时则保存在 $DSH_HOME/archive-vault/archive-times.json。状态文件
使用版本化 JSON 并以临时文件原子替换。文件损坏、版本不受支持或读取失败时,
列表和批量清理都会明确报错并停止,不会根据会话创建时间猜测归档时间。
推荐用 dsh 官方 CLI 安装(自动完成 pnpm 安装与 dsh.profile.bundles 对账,无需手改任何配置):
dsh plugin --profile web add dsh-archive-vault # npm 源
dsh plugin --profile web add github:Britneycode/dsh-archive-vault # 或 GitHub 源
dsh plugin --profile web remove dsh-archive-vault # 卸载
安装后重启 dsh web,设置页会出现「归档对话」面板。注意 --profile 要跟在 plugin 子命令之后(放在前面会被参数解析器拒绝)。
也可以直接用包管理器安装,此时需手动把 dsh-archive-vault 加进 profile package.json 的 dsh.profile.bundles 列表再重启:
pnpm add dsh-archive-vault
DSH_CHECKOUT=/d/App/dsh/deepseek-harness npm run typecheck
DSH_CHECKOUT=/d/App/dsh/deepseek-harness npm run build
npm test CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。