跨会话保存事实,并按四级阶梯稳健抓取网页
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Ma354/dsh-limit-break该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 17 处,展示前 15 条)
- 读取本地文件lib/index.js:43
const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')) - 写入本地文件lib/index.js:114
mkdirSync(dir, { recursive: true }) - 读取本地文件lib/index.js:120
if (statSync(logFile).size > MAX_LOG_BYTES) { - 读取本地文件lib/index.js:121
let kept = readFileSync(logFile, 'utf8').split('\n').slice(-500).join('\n') - 写入本地文件lib/index.js:123
writeFileSync(logFile, kept.endsWith('\n') ? kept : `${kept}\n`) - 写入本地文件lib/index.js:129
appendFileSync(logFile, `${line}\n`) - 写入本地文件lib/index.js:143
await rename(file, `${file}.corrupt-${Date.now()}`) - 读取本地文件lib/index.js:152
const raw = await readFile(file, 'utf8') - 写入本地文件lib/index.js:174
await mkdir(dir, { recursive: true }) - 写入本地文件lib/index.js:180
await writeFile(tmp, body, 'utf8') - 读取本地文件lib/index.js:210
const info = await stat(lock).catch((problem) => problem) - 删除本地文件lib/index.js:218
await rm(lock, { force: true }).catch(() => {}) - 删除本地文件lib/index.js:232
await rm(lock, { force: true }).catch(() => {}) - 发起网络请求lib/index.js:411
const response = await fetch(url, { - 读取本地文件lib/index.js:741
const info = await stat(store.file)
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
为 DeepSeek Harness 提供跨会话持久记忆和应对恶劣网络的抓取阶梯
README
由 DeepSeek 最新模型翻译生成dsh-limit-break
DeepSeek Harness 的四个小工具,来自一次自我基准测试:智能体通常被告知做不到的两件事,现在成本低到可以直接做。
| 工具 | 作用 |
| memory_recall | 在 JSON 事实库上做排序搜索,事实库的生命周期长于会话。省略 query 就列出全部。 |
| memory_save | 写入或覆盖一条事实:{ id, statement, value?, unit?, details?, tags?, source? }。 |
| resilient_fetch | 按四级阶梯抓取,并报告是哪一级应答的。 |
| memory_stats | 事实库在哪、有多少条事实、多大。 |
零 npm 依赖。导入时不产生副作用。全部软失败:事实库损坏或网络不通时返回错误对象,绝不抛异常把宿主拖垮。
召回质量。 memory_recall 是测出来的,不是拍脑袋:tools/recall-bench.mjs 拿 20 道人工标注的问题跑线上事实库,打印 hit@1 / hit@3 / MRR。
展开完整文档(README 剩余 1 节)
dsh-limit-break
DeepSeek Harness 的四个小工具,来自一次自我基准测试:智能体通常被告知做不到的两件事,现在成本低到可以直接做。
| 工具 | 作用 |
| memory_recall | 在 JSON 事实库上做排序搜索,事实库的生命周期长于会话。省略 query 就列出全部。 |
| memory_save | 写入或覆盖一条事实:{ id, statement, value?, unit?, details?, tags?, source? }。 |
| resilient_fetch | 按四级阶梯抓取,并报告是哪一级应答的。 |
| memory_stats | 事实库在哪、有多少条事实、多大。 |
零 npm 依赖。导入时不产生副作用。全部软失败:事实库损坏或网络不通时返回错误对象,绝不抛异常把宿主拖垮。
召回质量。 memory_recall 是测出来的,不是拍脑袋:tools/recall-bench.mjs 拿 20 道人工标注的问题跑线上事实库,打印 hit@1 / hit@3 / MRR。1.5.0 版的排序会跳过英文停用词、做词干化、按整词匹配(带前缀兜底,所以 ray 能找到 raytracer)、把带点的 id 拆成段、按逆文档频率给每个查询 token 加权,并对整短语命中加分:同样 20 道题、同样 20 条事实,hit@1 0.75 → 0.95,MRR 0.867 → 0.975。唯一剩下的未命中是一道确实有歧义的题,同时匹配到两条基准事实。
运行时要求:curl。 抓取阶梯的第 1 级是原生 fetch,什么都不需要;第 2–4 级(IPv6 → IPv4 → 同服务兄弟主机名)会调用 curl,所以它必须在 PATH 上。Windows 10+、macOS 和主流 Linux 都自带。没有它,阶梯退化为第 1 级,并在报告里如实说明,而不是假装爬过。
为什么是这四个
记忆。 会话从零开始。磁盘上放一个事实库,开头读一次,就足以赢过零起点。用两个全新智能体、零上下文、同样五道题实测:有事实库 5/5,没有 0/5——对照组也没有胡编,五次都回答「我没有这个信息」。
网络。 「这台主机不可达」这种条件反射,错的时候比对的次数多。在同一网络、同一出口 IP 上间隔 75 秒实测:api.wikimedia.org → 0.43 s 返回 200,en.wikipedia.org → 1.21 s 连接被重置,api.wikimedia.org 再来一次 → 0.39 s 返回 200。封锁是按 TLS 主机名做的,不是按地址。所以阶梯依次尝试:原生 fetch → IPv6 → IPv4 → 同一服务的兄弟主机名,其证书仍能通过校验(/wiki/Title → api.wikimedia.org/core/v1/wikipedia/<lang>/page/)。
它不会关闭证书校验,也不会走会冒充源站的代理。那些是中间人攻击,不是绕行方案。
安装
dsh plugin --profile <profile> add dsh-limit-break
然后重启那个配置档。在桌面应用里,改从 Settings → Plugins 安装——桌面配置档归应用的插件管理器管。
包声明了 dsh.bundle,并附带 cordis.patch.yml,所以 dsh plugin add 会直接挂载,不用手动改。如果你想手动挂载,就往 profiles/<profile>/cordis.patch.yml 里加:
- insert:
- id: limit-break
name: dsh-limit-break
手动挂载的条目仍然需要把包写进配置档的依赖列表——如果配置档没声明这个包,只写一个 insert 会被静默忽略。
存储
$DSH_HOME/memory/facts.json,schema:
{ "schema_version": 1,
"facts": [ { "id": "", "topic": "", "statement": "", "value": "", "unit": "",
"details": "", "source": "", "timestamp": "", "tags": [] } ] }
故意用纯 JSON:任何能读文件的东西都能用它,装不装这个插件都行。写入方式是先写临时文件再重命名。
禁用 / 移除
热操作:在 cordis.patch.yml 的条目上设 disabled: true——Cordis 大约一秒内重新组合。
* 冷操作:dsh plugin remove dsh-limit-break,然后重启。
* 两种方式都不会删掉存储。它位于 $DSH_HOME/memory/,留着是安全的。
已知限制
都是实测出来的,不是猜的——每一条都是会话真实踩过的。
* 工具只对挂载之后打开的会话可见。 插件挂载前创建的会话会保留自己的工具快照;新工具要等新会话才出现。插件这边修不了(工具列表是按会话生成的)。
* 每个存储只能有一个写入者。 写入是先写临时文件再重命名,崩溃安全,但两个进程同时写 facts.json 仍会丢一次更新——没有锁。设计用法是一台机器一个智能体。
* 抓取阶梯只到主机名层面。 它挡不住 IP 级封锁、TLS 拦截,也挡不住会终止连接的代理;它不会跳过证书校验。
* memory_recall 只按关键词重叠排序(id/topic/tags/statement/details),不用嵌入:过滤停用词、粗略词干化,再按 idf 加权匹配,所以它擅长回答「我说的是哪条事实」,不擅长处理同义改写。tools/recall-bench.mjs 给出了当前数字(20 个问题上 hit@1 为 0.95);如果查询和某条事实没有任何共同词,仍然会漏掉。
* resilient_fetch 每个响应最多读 2 MiB,最多返回 20 000 个字符;更大的载荷会被截断,不会流式传输。
隐私
数据不出本机。resilient_fetch 只发你要求的请求;记忆工具只读写一个本地文件。
许可证
MIT。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Ma354/dsh-limit-break
跨会话保存事实,并按四级阶梯稳健抓取网页
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,489已汉化DSH
73.1
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,918已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,453已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
Download DS Bot for Windows 10/11 64-bit / 下载 Windows…
★ 5,293已汉化DSH
71.2
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,797已汉化DSH
71.1
这是你的仓库?认领条目