错误防复发教训 wbushihenshuai-design/dsh-error-improvement
DeepSeek Harness独立 DSH 插件:面向 DeepSeek Harness。
30.5/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add wbushihenshuai-design/dsh-error-improvement该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 44 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/11/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-error-improvement(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/14 18:56:33
🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0🔴 扫描:高危尚无人工评估
静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。
安装时即执行脚本可执行外部命令读写/删除本地文件
查看扫描证据(共 39 处,展示前 39 条)
- 读取本地文件scripts/prepare.mjs:10
const libExists = existsSync(join(here, "lib", "index.js")); - 执行外部命令固定命令scripts/prepare.mjs:15
execFileSync("npm", ["run", "build"], { - 写入本地文件lib/capture.js:122
mkdirSync(dirname(file), { recursive: true }); - 写入本地文件lib/capture.js:123
appendFileSync(file, `${candidates.map((candidate) => JSON.stringify(candidate)).join("\n")}\n`, "utf8"); - 读取本地文件lib/distill.js:107
size = statSync(file).size; - 读取本地文件lib/distill.js:115
const raw = readFileSync(file, "utf8").slice(offset); - 读取本地文件lib/distill.js:147
const raw = readFileSync(file, "utf8"); - 写入本地文件lib/distill.js:148
writeFileSync(file, raw.slice(Math.min(nextWatermark, raw.length)), "utf8"); - 写入本地文件lib/drafts.js:15
mkdirSync(draftsRoot(), { recursive: true }); - 写入本地文件lib/drafts.js:25
writeFileSync(draftPath(entry.id), meta + body, "utf8"); - 读取本地文件lib/drafts.js:31
text = readFileSync(draftPath(id), "utf8"); - 读取本地文件lib/drafts.js:52
names = readdirSync(draftsRoot()); - 删除本地文件lib/drafts.js:69
rmSync(draftPath(id), { force: true }); - 读取本地文件lib/graduate.js:56
if (existsSync(path)) { - 写入本地文件lib/graduate.js:63
mkdirSync(directory, { recursive: true }); - 写入本地文件lib/graduate.js:64
writeFileSync(path, renderSkill(entry), "utf8"); - 读取本地文件lib/memory.js:185
return parseMemoryFile(readFileSync(path, "utf8"), kind); - 写入本地文件lib/memory.js:192
mkdirSync(dirname(path), { recursive: true }); - 写入本地文件lib/memory.js:194
writeFileSync(tmp, renderMemoryFile(kind, entries), "utf8"); - 写入本地文件lib/memory.js:195
renameSync(tmp, path); - 读取本地文件lib/migrate.js:26
if (existsSync(file)) - 读取本地文件lib/migrate.js:41
if (!existsSync(path)) { - 读取本地文件lib/migrate.js:46
const parsed = parseYaml(readFileSync(path, "utf8")); - 读取本地文件lib/store.js:45
if (!existsSync(this.path)) - 读取本地文件lib/store.js:47
const raw = JSON.parse(readFileSync(this.path, "utf8")); - 写入本地文件lib/store.js:86
mkdirSync(dirname(this.path), { recursive: true }); - 写入本地文件lib/store.js:88
writeFileSync(tmp, JSON.stringify(this.state, null, 2), "utf8"); - 写入本地文件lib/store.js:89
renameSync(tmp, this.path); - 写入本地文件scripts/copy-client.mjs:4
await mkdir(new URL("lib/", root), { recursive: true }); - 执行外部命令来自配置/变量scripts/pack-smoke.mjs:22
return execFileSync(process.execPath, [npmCli, ...args], { - 写入本地文件scripts/pack-smoke.mjs:46
await mkdir(consumer); - 写入本地文件scripts/pack-smoke.mjs:47
await writeFile( - 执行外部命令来自配置/变量scripts/pack-smoke.mjs:61
execFileSync( - 读取本地文件scripts/pack-smoke.mjs:72
readFileSync( - 删除本地文件递归scripts/pack-smoke.mjs:118
await rm(temporary, { recursive: true, force: true }); - 读取本地文件scripts/preflight.mjs:13
const entries = await readdir(libDir); - 读取本地文件scripts/preflight.mjs:24
.map((f) => readFile(join(libDir, f), "utf8")) - 读取本地文件scripts/preflight.mjs:47
await readFile(new URL("package.json", root), "utf8"), - 读取本地文件scripts/preflight.mjs:62
const patch = await readFile(new URL("cordis.patch.yml", root), "utf8");
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-compaction@deepseek-ai/dsh-compaction-basic@deepseek-ai/dsh-llm@deepseek-ai/dsh-settings给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 提供防回归经验
- 需用户确认
独立 DSH 插件:为 DeepSeek Harness 提供用户确认的防回归经验
README
由 DeepSeek 最新模型翻译生成DSH 错误改进
一个独立的 DeepSeek Harness 插件,将用户确认的错误转化为有界的前置检查,帮助 Agent 避免重复犯同样的错。
它有意独立于 EverOS、记忆服务、数据库、浏览器和网络 API。唯一的持久化状态是 DSH 常规设置命名空间 error-improvement。
已在 DSH 0.1.2-rc.1 上测试(Node 22.19+ 或 24+)。
安全契约
- 只有勾选了 confirmed 的教训才会被注入。
- 插件从不自动从模型输出创建教训。
- 从不执行工具或更改权限。
- 从不修改桌面模式、浏览器访问、网络暴露、沙箱预设或审批策略。
- 注入文本使用插件来源(form: instructions),而非直接用户来源。
- 存储的教训文本经过围栏包裹、控制字符清理、角色标签编码(所有 均被转义)、条数限制和字符限制。
- 教训原子渲染:只有整个文本块在字符预算内才包含,否则整条省略(无中间截断)。
- 任何运行时渲染失败都安全降级:原始下游 Agent 决策原样返回。
工作原理
1. Host 通过 DSH 设置提供者注册 error-improvement 设置节。
2. 在 设置 → 错误改进 中,用户记录一个错误、一条预防规则、可选的范围/关键词,并显式确认。
展开完整文档(README 剩余 1 节)
DSH 错误改进
一个独立的 DeepSeek Harness 插件,将用户确认的错误转化为有界的前置检查,帮助 Agent 避免重复犯同样的错。
它有意独立于 EverOS、记忆服务、数据库、浏览器和网络 API。唯一的持久化状态是 DSH 常规设置命名空间 error-improvement。
已在 DSH 0.1.2-rc.1 上测试(Node 22.19+ 或 24+)。
安全契约
- 只有勾选了 confirmed 的教训才会被注入。
- 插件从不自动从模型输出创建教训。
- 从不执行工具或更改权限。
- 从不修改桌面模式、浏览器访问、网络暴露、沙箱预设或审批策略。
- 注入文本使用插件来源(form: instructions),而非直接用户来源。
- 存储的教训文本经过围栏包裹、控制字符清理、角色标签编码(所有 均被转义)、条数限制和字符限制。
- 教训原子渲染:只有整个文本块在字符预算内才包含,否则整条省略(无中间截断)。
- 任何运行时渲染失败都安全降级:原始下游 Agent 决策原样返回。
工作原理
1. Host 通过 DSH 设置提供者注册 error-improvement 设置节。
2. 在 设置 → 错误改进 中,用户记录一个错误、一条预防规则、可选的范围/关键词,并显式确认。
3. 在每轮的每个模型步骤中,Host 包装 agent/pre-step 瀑布流,检查完整的下游消息批次。不同于只在第一步注入一次,这种方式确保预防规则在每次 LLM 调用前都可见——包括同一轮内模型的后续工具调用。
4. assist 模式只注入其显式范围/关键词与当前用户消息匹配的教训。拉丁/数字关键词要求完整词元匹配(无子串误匹配);中文使用二元组匹配。范围/关键词为空时回退到保守的多词匹配。
5. strict 模式注入所有已启用、已确认、完整的教训,直到达到配置上限。
strict 是更强的提示策略,不是硬性执行。它从不扩展模型或工具能力。
重复错误升级为规则(0.2.0)
1. Host 监听 tools/post-execute,对相同工具 + 相同错误签名的失败计数(错误签名 = 归一化错误头部;计数持久化在 $DSH_HOME/error-improvement/state.json,重启不丢)。
2. 同一错误达到 enforcement.threshold(默认 3)次后升级为规则:能匹配到已确认教训就关联该教训,否则从错误样本自动合成一条自动规则。
3. 之后在 tools/pre-execute 前置拦截匹配的调用(同工具 + 参数重叠度足够):
- warn(默认):每个冷却窗口(warnCooldownMs,默认 1 小时)拦截一次,把预防原因展示给模型,立即重试即放行——提醒而不阻断工作;
- deny:始终拦截,用于绝不应再发生的调用。
4. 所有钩子失败开放(插件异常绝不阻断工具流水线),也绝不会把下游已有的 deny/ask 决策放宽成 allow。规则上限 maxRules(默认 20),超出时只驱逐最旧的自动规则,关联教训的规则不驱逐。
成功配方沉淀(0.2.0)
- 解决非平凡问题后,agent 可调用 improve_record_recipe 工具把已验证可行的方案写入配方库(标题 / 问题 / 方案 / 范围 / 关键词),持久化到同一 state.json。
- 配方与教训共用同一套相关性引擎(含中文二元组),以 块和教训一起注入,遇到同类问题时直接复用已验证方案,不再重新造轮子。
- 记录时 asSkill: true 会把配方毕业为独立技能文件 $DSH_HOME/skills//SKILL.md,从"经验"升级为"能力"。
- 也可在设置的 recipes[] 节中手工维护配方(同样需 confirmed 才会注入)。
设置
| 字段 | 默认值 | 含义 |
| enabled | true | 启用教训注入。 |
| mode | assist | assist 匹配相关规则;strict 注入所有符合条件的规则。 |
| maxLessons | 5 | 每轮最多注入的规则数,限制在 1–50。 |
| maxChars | 6000 | 最大完整教训块,限制在 500–50000 字符(教训与配方共享预算)。 |
| maxRecipes | 3 | 每轮最多注入的配方数,限制在 1–20。 |
| lessons[] | [] | 用户管理的教训记录。 |
| recipes[] | [] | 用户管理的成功配方记录。 |
| enforcement.enabled | true | 启用重复错误计数与前置拦截。 |
| enforcement.threshold | 3 | 同一错误出现多少次后升级为规则,限制在 2–10。 |
| enforcement.defaultMode | warn | 新规则的默认模式:warn 单次提醒 / deny 硬拦截。 |
| enforcement.warnCooldownMs | 3600000 | 同一规则两次 warn 拦截的最小间隔(毫秒)。 |
| enforcement.maxRules | 20 | 规则数量上限;超出时驱逐最旧的自动规则。 |
上下文压缩
| 字段 | 默认值 | 含义 |
| compaction.enabled | true | 启用每步前的常规压缩和上下文溢出恢复。 |
| compaction.thresholdRatio | 0.8 | 活动对话路由达到其声明上下文窗口的该比例时,开始常规压缩。 |
| compaction.retainRatio | 0.16 | 压缩后原样保留的最近对话比例;必须严格小于 thresholdRatio。 |
| compaction.summarizationProvider / summarizationModel | 留空 | 主摘要路由。两个字段同时留空时使用当前对话路由;填写时必须是完整的一对。 |
| compaction.fallbackSummarizationProvider / fallbackSummarizationModel | 留空 | 主摘要调用失败(例如余额耗尽、鉴权或供应商错误)时尝试一次的显式备用路由;填写时必须是完整的一对。 |
| compaction.maxTokens | 8192 | 摘要输出的最大 token 数。 |
如果配置了主摘要路由而其调用失败,插件会先尝试一次显式备用路由;没有填写备用路由时,若当前对话路由与主路由不同,则改用当前对话路由。它不会随机选择任意模型:所有回退路由都必须已由 DSH 知道,保证恢复过程可预测、可复现。底层仍使用 DSH 的持久事务:compaction/start → 摘要 → checkpoint 替换 → compaction/end;只有替换成功提交后,因上下文溢出失败的原请求才会自动重试。
⚠️ 压缩阈值与摘要模型上下文窗口。
如果摘要模型与对话模型使用相同的声明上下文窗口,默认阈值 0.8(80%)会导致鸡生蛋问题:对话用到 80% 时触发压缩,但摘要调用又要把完整对话发给同一个模型,超出其限制。将 compaction.thresholdRatio 改为 0.5 或更低,让压缩在对话填满窗口前就启动,为摘要请求留足余量。或者配置一个上下文窗口更大的摘要模型。
教训记录结构:
{
"id": "stable-unique-id",
"title": "验证活动配置文件", "mistake": "编辑了与桌面使用的不同的配置文件", "prevention": "编辑任何配置文件前先确认当前活动的配置文件", "scope": "DSH 桌面配置文件更改", "keywords": "desktop profile package.json", "confirmed": true, "enabled": true }
安装到 DSH 桌面版
不要修改 DSH 桌面版安全设置(模式、openBrowser、networkExposure、沙箱预设)。通过常规 DSH 配置文件插件机制安装,然后重启一次 DSH 桌面版。
从 GitHub 安装(推荐)
在你的 DSH 桌面版配置文件 package.json(路径 C:\Users\\.dsh\profiles\desktop\package.json)中添加:
{
"dependencies": {
"dsh-error-improvement": "https://github.com/wbushihenshuai-design/dsh-error-improvement"
}
}
同时在同一文件的 dsh.profile.bundles 数组中添加 "dsh-error-improvement"。
然后在配置文件目录中运行:
pnpm install
重启 DSH 桌面版。设置节出现在 设置 → 错误改进。
从本地检出安装(开发)
{
"dependencies": {
"dsh-error-improvement": "link:D:/work/DS/dsh-error-improvement"
}
}
合并时保留所有现有 bundles 和 dependencies。插件的 cordis.patch.yml 挂载恰好一个 Host 行;其 dsh.client 元数据加载设置 UI。
安装到活动桌面配置文件之前
- 在此仓库中运行 npm run ci。
- 备份配置文件的 package.json、lockfile 和 cordis.patch.yml。
- 此仓库不包含自动安装器,因为静默重写活动配置文件是不安全的。
构建与验证
需要 Node.js 22.19+ 或 24+。
npm install
npm run ci
npm run pack:check
CI 命令执行格式化/lint 检查、TypeScript 检查、24 个 Host/客户端/匹配/集成测试、生产构建、安全预检扫描(所有发布的 JS 文件),以及一个干净消费者打包冒烟测试——将 tarball 安装到全新的 node_modules 并导入真实产物。
开发布局
- src/index.ts — Host 注册和 pre-step 中间件。
- src/lessons.ts — 模式、匹配、清理、原子渲染、消息来源。
- src/client.js — 即时加载的设置 UI 和冲突感知保存控制器。
- test/ — Host、匹配、安全、客户端控制器和集成测试。
- scripts/preflight.mjs — 扫描所有发布的 JS 以查找禁止的耦合。
- scripts/pack-smoke.mjs — 干净消费者 tarball 安装 + 导入验证。
隐私
无遥测、无网络请求。教训保留在用户的 DSH 设置文档中,仅在选中时作为本地 Agent 上下文的一部分发送。
许可证
MIT © 2026 wbushihenshuai-design预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
wbushihenshuai-design/dsh-error-improvement
独立 DSH 插件:面向 DeepSeek Harness。
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这是你的仓库?认领条目