dsh-projection-guard
by DamonKoy
守护持久化的会话投影缓存:按行 JSON 降级,让单个作恶的投影单元(如第三方插件存了个 Map)再也无法拖住会话标题或整个缓存;启动自愈回填缺失标题
Guards the persisted session-projection cache: per-row JSON degradation so one misbehaving projection unit (e.g. a third-party plugin storing a Map) can never stall session titles or the whole cache again, plus a startup self-heal that backfills missing titles.
安装
dsh plugin --profile web add github:DamonKoy/dsh-projection-guardGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
DeepSeek Harness (DSH) 插件:守卫会话投影缓存,让会话标题(及其它所有投影)不再因第三方插件的违规投影单元而在重启后丢失。
修复的问题
DSH 会把每个会话的投影检查点(会话标题、统计、权限等)持久化到 session_projcache.json。写盘路径对整个会话检查点做一次 JSON 序列化:只要一个投影单元的状态不是纯 JSON(Map、Set、类实例、循环引用或非有限数——例如某些第三方插件),整个写盘就会失败。该失败是 fail-soft(只记日志),所以缓存会悄悄停止更新;重启后所有冷会话的 title 投影缺失,界面就回退显示工作区文件夹名而不是会话标题。
插件做了什么
逐行降级(运行时包装)。 包装
sessionProjectionCache.put(),只丢弃无法无损 JSON 化的行,其余健康行照常持久化。单个坏单元不再拖垮整个缓存——标题、sessionListMetadata、统计等继续正常写盘。启动自愈。 启动时扫描"缓存里缺标题"的持久化会话,冷读其日志并回填
title投影,已过期缓存自动恢复。可观测性。 只读路由
GET /projection-guard/status报告包装调用数、丢弃行数、自愈标题数(挂载 client 半部时也会在设置页显示小卡片)。
不改任何官方/第三方文件——守卫是纯运行时包装,dsh 升级后依然有效,适用于任何部署。
安装
dsh plugin --profile web add github:DamonKoy/dsh-projection-guard
重启 dsh web 即可。
或将仓库加为 profile 依赖并挂载 bundle:
{
"dependencies": {
"dsh-projection-guard": "github:DamonKoy/dsh-projection-guard"
},
"dsh": {
"profile": {
"bundles": ["dsh-projection-guard"]
}
}
}
然后在 profile 目录 pnpm install 并重启 dsh web。
配置
| 键 | 默认值 | 说明 |
|---|---|---|
repairOnStart |
true |
启动时从持久化日志回填缺失的缓存标题。 |
logDropped |
true |
逐行丢弃非 JSON 行时告警(含键名与会话 id)。 |
示例(profile cordis.patch.yml 覆盖):
- id: projection-guard
config:
repairOnStart: true
logDropped: true
开发
npm test # 守卫核心单元测试
License
MIT
原始 README: https://github.com/DamonKoy/dsh-projection-guard/blob/main/README.zh.md ↗
同类插件
查看全部 →
archify
Agent 技能:生成美观、可校验的架构图、工作流图、时序图、数据流图与生命周期图——自包含 HTML、带动画与清晰导出

dsh-turn-rewind
对话回退:基于持久 Change Ledger 回滚会话与工作区状态。

dsh-plugin-cc
把 DeepSeek Harness 接入 Claude Code:评审、批评、委派与会话导入

dsh-interconnect
跨实例互联:经 interconnect 服务在多个 DSH 实例间转发消息与事件。

dsh-chat-import
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。

dsh-crew
DSH 插件:从 Claude Code / Codex 向 DSH agent 派活——原生 subagent 进度、宿主内 worker 会话(分级预设),以及为纯文本宿主补上视觉与图像生成的多模态桥