편집자 노트

DamonKoy/dsh-projection-guard

DSH plugin: guards the persisted session-projection cache with per-row JSON degradation + startup title self-heal.

이것은 DeepSeek Harness(DSH) 플러그인입니다. 이 사이트는 GitHub README, 설치 정보, 유지보수 상태, 공개 보안 시그널을 모아 보여줍니다.

dsh-projection-guard

English

DeepSeek Harness (DSH) 插件:守卫会话投影缓存,让会话标题(及其它所有投影)不再因第三方插件的违规投影单元而在重启后丢失。

修复的问题

DSH 会把每个会话的投影检查点(会话标题、统计、权限等)持久化到 session_projcache.json。写盘路径对整个会话检查点做一次 JSON 序列化:只要一个投影单元的状态不是纯 JSON(MapSet、类实例、循环引用或非有限数——例如某些第三方插件),整个写盘就会失败。该失败是 fail-soft(只记日志),所以缓存会悄悄停止更新;重启后所有冷会话的 title 投影缺失,界面就回退显示工作区文件夹名而不是会话标题。

插件做了什么

  1. 逐行降级(运行时包装)。 包装 sessionProjectionCache.put(),只丢弃无法无损 JSON 化的行,其余健康行照常持久化。单个坏单元不再拖垮整个缓存——标题、sessionListMetadata、统计等继续正常写盘。

  2. 启动自愈。 启动时扫描"缓存里缺标题"的持久化会话,冷读其日志并回填 title 投影,已过期缓存自动恢复。

  3. 可观测性。 只读路由 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

配置

默认值说明
repairOnStarttrue启动时从持久化日志回填缺失的缓存标题。
logDroppedtrue逐行丢弃非 JSON 行时告警(含键名与会话 id)。

示例(profile cordis.patch.yml 覆盖):

- id: projection-guard
  config:
    repairOnStart: true
    logDropped: true

开发

npm test          # 守卫核心单元测试

License

MIT

REPOSITORY SIGNALS

보안 및 설치 증거

이 점수는 공개 저장소 메타데이터와 이 사이트에 등록된 설치 증거에만 기반하며, 코드 보안 감사와 다릅니다.

출처 추적 가능

공개 플러그인 카탈로그에서 왔으며, 공개 GitHub 저장소로 연결됩니다.

라이선스

저장소가 MIT 라이선스를 선언했습니다.

유지보수 활동

최근 180일 내 코드 업데이트가 있습니다.

설치 증거

재현 가능한 정확한 설치 메타데이터가 아직 등록되지 않았습니다. 저장소 설명에 따라 직접 확인하세요.

설치 라이프사이클 스크립트

검사한 패키지 메타데이터에 설치 라이프사이클 스크립트가 선언되지 않았습니다.