把对话历史压成可复盘棋谱,每步只注入精简热清单
30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add MYCF711/dsh-GOkifu-compact该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/30) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 22 处,展示前 22 条)
- 发起网络请求lib/client.js:31
const res = await fetch(API, { - 执行外部命令来自配置/变量scripts/cli.mjs:30
execFileSync(process.execPath, [doctor, ...argv.slice(1)], { stdio: "inherit" }); - 执行外部命令来自配置/变量scripts/cli.mjs:37
execFileSync(process.execPath, [migrate, ...argv.slice(1)], { stdio: "inherit" }); - 执行外部命令固定命令scripts/link-path.mjs:322
execFileSync("cmd", ["/c", "mklink", "/J", dest, absTarget], { stdio: "ignore" }); - 执行外部命令固定命令scripts/check-maintenance.mjs:28
const r = spawnSync("git", args, { cwd: ROOT, encoding: "utf8", timeout: 30000 }) - 读取本地文件scripts/check-maintenance.mjs:37
pkg = JSON.parse(readFileSync(join(ROOT, "package.json"), "utf8")) - 读取本地文件scripts/check-maintenance.mjs:100
const changelog = existsSync(join(ROOT, "CHANGELOG.md")) ? readFileSync(join(ROOT, "CHANGELOG.md"), "utf8") : "" - 读取本地文件scripts/check-maintenance.mjs:100
const changelog = existsSync(join(ROOT, "CHANGELOG.md")) ? readFileSync(join(ROOT, "CHANGELOG.md"), "utf8") : "" - 读取本地文件scripts/check-maintenance.mjs:135
const releaseSrc = existsSync(join(ROOT, "scripts", "release.mjs")) - 读取本地文件scripts/check-maintenance.mjs:136
? readFileSync(join(ROOT, "scripts", "release.mjs"), "utf8") - 执行外部命令固定命令scripts/doctor.mjs:143
events = execFileSync("python", ["-c", PY, file], { maxBuffer: 512 * 1024 * 1024 }).toString("utf8").split("\n"); - 执行外部命令来自配置/变量scripts/release.mjs:40
return execSync(cmd, { cwd: ROOT, encoding: "utf8", stdio: ["ignore", "pipe", "pipe"], ...opts }).trim() - 读取本地文件scripts/release.mjs:62
if (!existsSync(join(ROOT, "package.json"))) { - 读取本地文件scripts/release.mjs:66
const pkg = JSON.parse(readFileSync(join(ROOT, "package.json"), "utf8")) - 读取本地文件scripts/release.mjs:72
if (!existsSync(changelogPath)) { - 读取本地文件scripts/release.mjs:78
if (!existsSync(changelogPath)) return "" - 读取本地文件scripts/release.mjs:79
const text = readFileSync(changelogPath, "utf8").replace(/ /g, "\n") - 读取密钥环境变量scripts/release.mjs:233
const token = process.env.GITHUB_TOKEN || process.env.GH_TOKEN || "" - 读取本地文件scripts/release.mjs:255
const hasReleaseWorkflow = existsSync(join(ROOT, ".github", "workflows", "release.yml")) - 执行外部命令固定命令scripts/release.mjs:261
const out = execFileSync( - 执行外部命令固定命令scripts/release.mjs:311
const out = execFileSync( - 执行外部命令来自配置/变量scripts/release.mjs:362
execSync(script, { cwd: ROOT, stdio: "inherit" })
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-compaction@deepseek-ai/dsh-compaction-basic@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 的棋谱式上下文压缩后端:增量 fold + 失败记忆 + 置换检测,每步只注入约 323 tokens 的热清单
README
由 DeepSeek 最新模型翻译生成dsh-GOkifu-compact
已发布:npm dsh-gokifu-compact@1.7.1 · GitHub Release v1.7.1
DSH 的棋谱式上下文压缩后端 —— 把「历史 → 一段摘要」换成「历史 → 可复盘的棋谱 DAG + 每步只有 323 tokens 的热清单」。
热清单 323 tokens (2000 边压力测试;旧版全量渲染 28,800)失败保留 8 / 8 (真实模型对照;官方 8 段模板 4.67 / 8)清单开销 0.2% of prompt (v1.3.1 起;事故会话的旧版是 21.3%)验证 118 项单测 · 真实包 8/8 · 真实进程 fold 3~6/6
GO = 围棋,kifu = 棋谱,compact = 压缩。一局棋下完,棋谱上不只有落子顺序,还有每一手的评语。
这个插件把智能体的每一步变成一手棋(节点),把当时的思考变成评语(目标 / 约束 / 失败原因),整个任务变成一局可以复盘的棋。棋谱是给模型用的,不是给人看的 —— 热清单里的每个字都为模型决策服务。
功能
- 增量 fold —— 只压「上一个 checkpoint 之后」的新内容;一段历史一生只被摘要一次。
- 失败记忆 —— 每条失败尝试的意图 / 动作 / 报错原文 / seq 由规则抽取并逐字保留,模型没有丢弃它的权限。
展开完整文档(README 剩余 1 节)
dsh-GOkifu-compact 已发布:npm dsh-gokifu-compact@1.7.1 · GitHub Release v1.7.1 DSH 的棋谱式上下文压缩后端 —— 把「历史 → 一段摘要」换成「历史 → 可复盘的棋谱 DAG + 每步只有 323 tokens 的热清单」。 热清单 323 tokens (2000 边压力测试;旧版全量渲染 28,800)失败保留 8 / 8 (真实模型对照;官方 8 段模板 4.67 / 8)清单开销 0.2% of prompt (v1.3.1 起;事故会话的旧版是 21.3%)验证 118 项单测 · 真实包 8/8 · 真实进程 fold 3~6/6 GO = 围棋,kifu = 棋谱,compact = 压缩。一局棋下完,棋谱上不只有落子顺序,还有每一手的评语。 这个插件把智能体的每一步变成一手棋(节点),把当时的思考变成评语(目标 / 约束 / 失败原因),整个任务变成一局可以复盘的棋。棋谱是给模型用的,不是给人看的 —— 热清单里的每个字都为模型决策服务。 功能 - 增量 fold —— 只压「上一个 checkpoint 之后」的新内容;一段历史一生只被摘要一次。 - 失败记忆 —— 每条失败尝试的意图 / 动作 / 报错原文 / seq 由规则抽取并逐字保留,模型没有丢弃它的权限。 - 手割(tewari) —— 同一条失败边相对每条成功路径分别给结论:同型 / 绕路 / 探新,不是一个笼统的「失败」。 - 热清单 —— 每步重建的小清单:语义标记(blocked:permission / dead retry-if:e1)+ 动态图例 + 报错原文;就地替换,surface 上永远只有一条。 - 置换检测 —— 状态哈希命中历史节点时不新建分支,只在图上加一条边,并提示「回到节点 N —— 这里试过的路都记着」。 - 三层树 —— index.md(全量索引)/ nodes/<id>.md(单节点细节)/ graph.json(数据源),模型按需往下查。 - 压缩永不失败 —— 摘要三层降级:配置的摘要模型 → 当前路由模型 → 规则摘要(零模型调用),fold 一定能落地。 - 可诊断 —— doctor 一条命令体检、measure-billing 按真实 usage 对账、rewash 回洗历史误报。 怎么工作 每一步:事件流 ──► 棋谱 DAG(节点 = 状态;边 = 尝试 + 验证信号) │ ▼ 热清单(根目标 / 约束 / 成功路径 / 失败边)──► 注入模型 │ 到阈值(默认窗口 45% 且增量 ≥ 40K) ▼ 增量 fold:只压上一个 checkpoint 之后 ──► 棋谱摘要(失败边逐字保留) 和官方 dsh-compaction-basic 的区别: | | 官方 compaction-basic | 本插件 | | 压缩范围 | 从 surface 第一个非 system 节点起(含上次 checkpoint) | 上一个 checkpoint 之后 | | 保留率 | 每轮重摘 → 按 ρ^k 衰减(实测安全规则 5 轮后剩 10%) | 一段内容只摘一次 | | 失败记录 | 融进散文摘要,模型可以丢 | 规则抽取 + 逐字注入,模型无权丢 | | 热上下文 | 无 | 323 tokens / 步,带语义标记与报错原文 | 热上下文长什么样 每步 agent/pre-step 注入(内容不变时复用;变了就就地替换上一条,surface 永远只有一条): <chess-ledger> ROOT USER (verbatim): 把 tests/case.test.js 跑绿:缓存键算错了。不要动 prod 配置。 CONSTRAINTS (verbatim): - 不要动 prod 配置。 CURRENT GOAL: 缓存键修好,case7 通过 WORKING: user → n2 (exit 0) LEARNED (3 failed attempts): TRACE: <sessions>/<sid>/index.md (per-node detail: nodes/<id>.md) markers: dead = a working path avoids it — retry only if retry-if breaks redundant = working edge <edge> reaches the SAME position — take it blocked:permission = needs a permission this environment lacks — retry when it changes - e2 "把缓存键改成 JSON.stringify 全部参数" → AssertionError: case7 expected 1 got 2 … [dead retry-if:e1] - e3 "装全局 sqlite 依赖后再跑" → npm ERR! EACCES: permission denied, mkdir … [blocked:permission] </chess-ledger> 预算不够时降级不丢边:先缩短意图与报错,再砍 seq,最后只列最近 N 条 + 汇总行。 标记档位可调:semantic(默认)| terse(只写三态)| off(不打标记)。 安装 两步,不用手改任何 YAML。 1) 装包(DSH 会把它作为普通依赖装进 profile;不会把它塞进 bundles,避免双挂载) dsh plugin --profile <profile> add dsh-gokifu-compact 2) 一条命令接管压缩后端(自动改 preset 的 compaction group,带备份、可回滚、幂等)bash npx dsh-gokifu-compact install --profile <profile> 3) 重启 DSH(插件在启动时加载),然后自检 npx dsh-gokifu-compact doctor 第 1 步会打印一条 declares no dsh.bundle — installed as a plain dependency —— 这是预期的:本插件挂在 agent preset 里,不做 profile 级 bundle(做了会在顶层再挂一份,与 preset 内那份双实例冲突)。 第 2 步做的是唯一一件必须改文件的事:把 agent preset 的 compaction group 里 @deepseek-ai/dsh-compaction-basic 那一行换成 dsh-gokifu-compact。为什么脚本必须改文件而不是自动在启动时生效——因为那一行在 preset 的 config.plugins 数组内部,profile 级 / bundle 级的 patch 打不到它(applyEntryPatches 只递归 group: true 且 config 为数组的条目)。 脚本替你改、替你备份、也能替你还原: bash npx dsh-gokifu-compact install --dry-run # 先看会改什么(不写盘) npx dsh-gokifu-compact revert # 还原(恢复 .bak-before-gokifu- 备份) 从源码(开发用,一条命令含链接 + 改 preset + 校验) bash git clone https://github.com/MYCF711/dsh-GOkifu-compact.git cd dsh-GOkifu-compact node test/install.mjs --dry-run # 预演 node test/install.mjs # 真装 node test/rollback.mjs # 回滚 ⚠ 压缩后端只能有一个:ctx.compaction 在同一 isolate realm 里只能注册一次,同时挂 dsh-compaction-basic 会在构造期抛 service "compaction" has been registered,并连累整个 preset generation。安装器做的就是「换掉那一行」;不要手工再复制一份。 配置 yaml - id: gokifu-compact name: 'dsh-gokifu-compact' config: auto: true # 自动压缩(继承基类的 between-step 压力触发) thresholdRatio: 0.45 # 压力闸:min(窗口×0.45, 窗口−输出预留−64K) growthFloorTokens: 40000 # 增长闸:距上次 fold 至少新增这么多 token retainRatio: 0.16 # 逐字保留的近期尾部 summaryMode: hybrid # hybrid | rules(零模型调用)| llm maxTokens: 8192 # 摘要输出上限(实测一次 fold 用到 2,902,留足余量防截断) summarizationProvider: '' # 留空 = 跟随当前路由(最稳) summarizationModel: '' # 想用免费模型,先确认 provider 的模型表里有那个 id hotLedger: true # 每步注入失败清单 hotLedgerMaxTokens: 500 hotLedgerMarkers: semantic # semantic | terse | off hotLedgerReplace: true # 就地替换旧清单(surface 永远一条) 全部配置项与含义见 docs/性能与成本.md 与 src/engine.mjs 的 Config。 常见问题 关掉原生压缩,自动压缩还在吗? 在 —— 本插件就是那个自动压缩后端:它继承官方的 BasicCompactionEngine(同一套 between-step 压力触发、context-overflow 兜底、事务语义), auto 默认 true,装的不是「替代品」而是「换引擎」。变的只是「压缩范围 = 上一个 checkpoint 之后」与「失败记忆逐字保留」。 压缩之后数字会降吗?会不会只增不减? 会降。一次 fold 用一个 checkpoint 替换掉整段被遮蔽的历史,tokenMeter 重新计算后数字直接下降;但不会归零 —— 还会保留逐字尾部(retainRatio,默认 16%)和摘要本身。典型形状是锯齿:涨到阈值(窗口 45%)→ 压到约 20% → 再涨。如果你看到「只涨不降」,先跑 npx dsh-gokifu-compact doctor 看压缩是不是在失败(compaction/end 的错误会直接列出来)。 装完没反应 / 压缩没触发? 插件在 DSH 启动时加载,必须重启。重启后跑 node test/doctor.mjs,它会告诉你四件事:装没装上、摘要模型能不能解析、最近的压缩成功/失败、棋谱与树健不健康。 会不会把失败记忆弄丢? 不会。失败边由规则抽取并逐字注入摘要 prompt,模型输出后还会机械追加约束段;模型没有「决定丢掉某条」的权限。真实模型对照里本插件保留 8/8,官方 8 段模板平均 4.67/8。 摘要模型要配吗? 不用,留空就跟随当前路由。配了但 provider 的模型表里没有那个 id 时,引擎会退回路由模型;再不行就退回规则摘要(零模型调用)—— 宁可摘要朴素,也不让压缩失败。 历史数据会不会把压缩弄坏? 不会。插件加载棋谱时会自动修复旧格式(worldHash 对象 → 字符串、状态索引重建);旧版本追加出来的几十条热清单会被一次性换成一行占位。全库 1,279 个坏字段实测归零。 为什么压缩还是会让 prompt 缓存失效? DSH 的 surface replace 语义决定:替换点之后的 KV 前缀会失效。 增量 fold 让替换点尽可能靠后,但无法消除(这是 seam 的语义,不是实现选择)。真实会话实测缓存命中率 94~97%。 能和多分支/子代理一起用吗? 子代理各自独立会话、各自一张棋谱;主会话的置换提示只在同一会话内生效。 参考源 只借鉴结构与规律,未复制代码: | 来源 | 用在哪 | | magpie-plugin-scaffold(MIT) | README 模板、发版七步、维护检查脚本(scripts/) | | billion-context(MIT + 署名附加条款) | 「增量 fold / 只压已消费内容」的架构不变量、缓存与保留率的判据 | | opencode-dcp(MIT) | 「每个机制一节」的说明结构、对 prompt 缓存影响如实交代的写法 | | DSH 官方 dsh-compaction / dsh-compaction-basic(随 DSH 分发) | 继承 compactRegion / surfaceOp: replace 事务语义,只覆盖策略层 | 设计依据与实测数据在 docs/市场对标.md 与 evidence/。 文档 - 快速开始 · 方案书 · 计划表 - 三层树设计 · DSH 技术测绘(1300 行,带 asar 行号) - 性能与成本 · 真实计费核对 - 最终报告 · P0 修复记录 更新记录:CHANGELOG.md(发版流程见 scripts/release.mjs 与 HANDOFF) 许可 MIT。见 LICENSE。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
MYCF711/dsh-GOkifu-compact
把对话历史压成可复盘棋谱,每步只注入精简热清单
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 14,822已汉化DeepSeek 客户端
73
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 718已汉化DSH
71.2
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,261已汉化DSH
70.7
破甲评测WoYun520/dsh-purge
在本机分离宿主拦截与模型拒绝,做受控红队评测
★ 199已汉化DSH
69.7