🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话日志守护 hbgdjb/dsh-session-shield

DeepSeek Harnessv0.1.0
hbgdjb35 天前有提交已提供中文文档扫描:未发现敏感能力

自动修复畸形工具调用,保证会话日志始终可加载

30.2/100
综合分
1
GitHub 星标
32
npm 周下载
—/5
用户评分

数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-session-shield
npm 源 · dsh-session-shield 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · chat
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 35 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-session-shield @ 0.1.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/3 12:26:56

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 自动修复畸形工具调用
  • 保证会话日志可加载
  • 零配置零依赖

Session Shield —— 让 DSH 会话日志永远不会因为一次畸形 tool call(空 id / 空 name / 非法 arguments)而打不开。装上即用,零配置、零依赖。

README

由 DeepSeek 最新模型翻译生成
Session Shield(dsh-session-shield) DeepSeek Harness 插件:让会话日志永远不会因为一次畸形 tool call(空 id / 空 name / 非法 arguments)而打不开。 坏调用自动修复,正常调用原样通过,最多当轮报错,历史永远可加载。装上即用,零配置、零依赖、无需客户端改动。 解决什么问题 一次真实事故的链条: 1. 模型输出了 id:"" / name:"" 的 tool call(正文里还混着 <tool_call> 与 <invoke 两套调用语法); 2. DSH 运行期校验不检查这两个字段 → 事件照常写进 session.v4.jsonl.zstd; 3. 解码期要求 tool call id 非空(tool call id requires a nonempty string)→ 这个会话从此加载不出来,侧边栏只剩 stored session ... is corrupt。 写入端宽松、读取端严格:坏事件一旦落盘就不可逆,只能手工修复日志。 本插件把这个口子堵在落盘之前。
展开完整文档(README 剩余 1 节)
Session Shield(dsh-session-shield)

DeepSeek Harness 插件:让会话日志永远不会因为一次畸形 tool call(空 id / 空 name / 非法 arguments)而打不开。
坏调用自动修复,正常调用原样通过,最多当轮报错,历史永远可加载。装上即用,零配置、零依赖、无需客户端改动。

解决什么问题

一次真实事故的链条:

1. 模型输出了 id:"" / name:"" 的 tool call(正文里还混着 <tool_call> 与 <invoke 两套调用语法);
2. DSH 运行期校验不检查这两个字段 → 事件照常写进 session.v4.jsonl.zstd;
3. 解码期要求 tool call id 非空(tool call id requires a nonempty string)→ 这个会话从此加载不出来,侧边栏只剩 stored session ... is corrupt。

写入端宽松、读取端严格:坏事件一旦落盘就不可逆,只能手工修复日志。
本插件把这个口子堵在落盘之前。

怎么做

挂在 DSH 官方的 llm/stream waterfall(dsh-llm:"the chunk stream, possibly wrapped by llm/stream listeners"),prepareCall 预绑定路径同样回到这里,所以一个钩子覆盖全部模型调用:

| 情况 | 处理 |
| block-end 里 tool-call 的 id 为空 / 本次流内被别的 index 复用 | 换成 call-guard-<token>-<index> |
| block-end 里 tool-call 的 name 为空 | 换成 guard_malformed_tool_call |
| tool-call-delta 的 id / name 为空 | 同样补齐(装配器在缺 block-end 时会用 delta 拼装) |
| arguments 不是字符串 | 转成 JSON 字符串,保证 message 块与随后的 tool/call 事件逐字一致 |
| 正常 tool call | 原样透传,一个字节不动 |

空 name 换成占位工具名后走 Harness 已有的 unknown tool "..." 错误结果:模型收到反馈可以自行重试,日志保持合法,会话照常可打开。

环境要求

- DeepSeek Harness 0.1.x(Web 端)
- 无额外依赖、无客户端代码、不写任何文件

安装

以下任一方式(插件管理器 install_bundle,或 设置 → 插件 的安装入口):

1. 安装包(推荐分发):直接给出本 .tgz 的绝对路径
2. 源码目录:解压源码 zip 后给出目录绝对路径
3. registry 包名 / git 地址:发布后用包名或仓库地址安装

安装成功后即在当前 profile 生效,重启 DSH 后插件层开始拦截。

配置

profile cordis.patch.yml 中本插件行的 config:

| 字段 | 说明 | 默认 |
| enabled | 设为 false 整体停用(或直接注释掉 insert 行) | true |

验证是否生效

- dsh --profile <profile> --dump-config 的输出里应有 # == dsh-session-shield 层与 - id: session-shield 行;
- 启动日志不应出现 skipping profile bundle "dsh-session-shield";
- 启动审计 warning: N entry did not activate 里不应列出 session-shield;
- 设置 → 插件页里该条目状态为 active。

注:Harness 启动成功时不会把插件的 ctx.logger 输出打印到 manager.log (cordis logger 默认只进内存 buffer),所以看不到 "armed" 日志是正常现象,不代表未加载。

License

MIT
预览分享卡片长什么样 ↓hbgdjb/dsh-session-shield
分享 · DeepSeek Harness Hub
hbgdjb/dsh-session-shield

自动修复畸形工具调用,保证会话日志始终可加载

回到顶部