前言¶
在 DeepSeek Harness(DSH)里跑智能体,常见两类摩擦:会话一结束,上一轮确认过的事实就归零;网络侧则经常出现「这个主机不可达」,而同一出口 IP 上换个别名或协议又能通。社区插件按「一切皆插件」挂载到 profile,目录由独立站点维护,与 DeepSeek / 幻方无官方从属关系。下面介绍维护者 Ma354 的 dsh-limit-break(分类:记忆):用本地 JSON 事实库做跨会话记忆,并用四级抓取阶梯应对按 TLS 主机名区分的封锁。
这是什么¶
dsh-limit-break 面向 DeepSeek Harness,提供四个无 npm 依赖的小工具,设计为无 import 时副作用、失败时返回错误对象而非抛异常,避免拖垮宿主。包版本 1.5.0,许可证 MIT,运行时要求 Node >= 22.6;resilient_fetch 的阶梯第 2–4 级依赖系统 curl 在 PATH 上。
| 工具 | 作用 |
|---|---|
memory_recall |
对 JSON 事实库做排序检索;省略 query 可列出全部 |
memory_save |
写入或覆盖一条事实 |
resilient_fetch |
按四级阶梯抓取,并报告是哪一级成功 |
memory_stats |
查看存储位置、条数、体积 |
目录页:skillhub.cn/plugins/Ma354/dsh-limit-break。源码与说明:github.com/Ma354/dsh-limit-break。
跨会话记忆¶
事实库路径为 $DSH_HOME/memory/facts.json,纯 JSON,任意能读文件的程序都可共用。写入采用临时文件再 rename,结构如下:
{ "schema_version": 1,
"facts": [ { "id": "", "topic": "", "statement": "", "value": "", "unit": "",
"details": "", "source": "", "timestamp": "", "tags": [] } ] }
memory_save 接受字段:{ id, statement, value?, unit?, details?, tags?, source? }。README 记载:两个全新智能体、零上下文、同一组五个问题时,有库 5/5 答对,无库则五次均回答「没有这些信息」且未胡编。
memory_recall 不做向量嵌入,仅在 id / topic / tags / statement / details 上做停用词过滤、粗词干与 IDF 加权的关键词重叠排序;1.5.0 在仓库自带 20 题基准上 hit@1 从 0.75 提到 0.95,MRR 从 0.867 提到 0.975(同 20 条事实)。与事实无共同词义的改述仍可能检索不到。可用 tools/recall-bench.mjs 对当前库复现指标。
resilient_fetch:四级阶梯¶
动机来自实测:同一网络、同一边缘 IP,相隔约 75 秒,api.wikimedia.org 可 200,而 en.wikipedia.org 连接被重置,封锁与 TLS 主机名相关而非单纯地址。阶梯顺序为:
- 普通
fetch - IPv6(
curl) - IPv4(
curl) - 同服务「兄弟」主机名且证书仍可校验(示例:
*/wiki/Title→api.wikimedia.org对应 API)
不会关闭证书校验,不会经可冒充源站的代理;README 明确这不属于可接受的变通。无 curl 时阶梯退化为第 1 级,并在报告中说明。单次响应最多读 2 MiB,返回正文最多 20 000 字符,更大内容会截断。
隐私方面:记忆工具只读写本机文件;resilient_fetch 仅发起你请求的 URL,数据不出本机。
安装与启用¶
CLI 安装(命令来自 README 原文):
dsh plugin --profile <profile> add dsh-limit-break
安装后重启该 profile。桌面端可在 Settings → Plugins 安装,由应用内插件管理器接管 desktop profile。
包声明 dsh.bundle 并自带 cordis.patch.yml,dsh plugin add 会自动挂载。若手工编辑,在 profiles/<profile>/cordis.patch.yml 增加:
- insert:
- id: limit-break
name: dsh-limit-break
仅 insert 而未把包列入 profile 依赖时,条目会被静默忽略。
停用与卸载:
- 热停用:在
cordis.patch.yml对应项设disabled: true,Cordis 约一秒内重组。 - 冷移除:
dsh plugin remove dsh-limit-break后重启。 - 上述操作不会删除
$DSH_HOME/memory/下的事实库。
典型用法(概念)¶
- 会话开始或需要上下文时,调用
memory_recall,传入自然语言query拉取相关事实;需要全量清单时省略query。 - 确认或学到稳定信息时,用
memory_save以id为主键写入或覆盖。 - 外网 URL 在默认 fetch 失败时,用
resilient_fetch并查看返回里「哪一级成功」。 - 排查存储时用
memory_stats确认路径与规模。
具体参数以挂载后工具 schema 为准;事实字段与存储路径以 README 为准。
适用场景与注意¶
适合:需要在多轮、多会话间保留可编辑、可审计的本地事实;在主机名级网络异常下仍要拉取公开 HTTP(S) 内容,且接受关键词检索而非语义向量。
务必知晓:
- 插件以当前 dsh 进程权限运行,安装前请自行审阅 源码 与 MIT 许可证。
- 工具列表在会话创建时固化;插件挂载前已开的会话看不到新工具,需新开会话(插件侧无法修复)。
- 单写者:并发写
facts.json可能丢更新,设计意图为一机一 agent。 - 抓取阶梯不解决 IP 级封锁、TLS 中间人或终止连接的代理。
结尾¶
dsh-limit-break 把「会话归零」和「主机不可达」两类常见限制做成四个可测量、可本地验证的工具:磁盘事实库 + 有基准的 memory_recall,以及不牺牲证书校验的 resilient_fetch。进一步了解可访问目录页 skillhub.cn/plugins/Ma354/dsh-limit-break 与 GitHub 仓库 github.com/Ma354/dsh-limit-break。