ryanxie113/dsh-solpi--packages-solpi-dsh ↗★ 0

solpi-dsh

为长任务提供四种上下文效率机制:融合与压缩 适合长上下文场景提速,但需确认Action Fusion等触发条件与模型工具链匹配。

套件
solpi-dsh
相容性
待驗證
版本
0.1.0
最近更新
2026年9月14日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ryanxie113/dsh-solpi#ace9c80ca1d5551658e09e4dcbd8b7d965a57d68&path:packages/solpi-dsh

solpi-dsh — DeepSeek Harness 效率四机制

solpi-dsh cover: Action Fusion · ObservationPack · Evidence-Preserving Reducer · Online Context Compact

为 DeepSeek Harness 的长任务会话提供四个效率机制:Action Fusion(编辑+跟进命令融合)、 ObservationPack(大输出豁免压缩)、Evidence-Preserving Reducer(保证据诊断约简)、 Online Context Compact(在线上下文经济压缩)。

设计规格与全部决策记录见仓库根 docs/plans/dsh-solpi-spec.md。

功能矩阵

机制入口模块触发条件输出
Action Fusionsrc/action-fusion.tsedit/write 工具带 thenRun 参数单次工具调用内完成「改文件→跑命令」,结果以 [then_run:succeeded/failed/skipped] 标记附加
ObservationPacksrc/observation-pack.ts工具结果含大段代码块且会话处于 plan 模式豁免该轮 spill-policy 压缩,完整保留观察
EPRsrc/evidence-preserving-reducer.ts命中诊断命令族(npm/pnpm/yarn/vitest/jest/go/bazel/node --test / npx tsx --test)且输出 ≥ minBytes约 1KB 保引用 receipt 替换原输出;原全文落盘 $DSH_HOME/sol-pi/epr/
OCCsrc/online-context-compact.tstoken 经济门槛(keepRecent/ratio/估算 Horizon)区间压缩,边界与计量记入状态文件

公共基建:src/anchors.ts(dsh 安装根双布局发现)、src/telemetry.ts(常驻遥测)。

安装根发现(anchors)

树外加载无法裸解析 @deepseek-ai/*,所有内部依赖经锚定 require 解决。发现顺序:

  1. SOLPI_DSH_ROOT 环境变量(显式逃生门)
  2. 从插件自身位置逐级向上探测 monorepo 布局(packages/compaction/compaction-basic/src/region.ts 探针)
  3. 同样向上探测已安装布局(node_modules/@deepseek-ai/dsh-home-paths)

失败即 fail-fast 报错并提示设置环境变量——绝不静默错路由。

安装(bundle 形态)

本包按 dsh 官方 bundle 约定发布(dsh.bundle 声明 + cordis.patch.yml 层),三种 安装通道任选:

# 本地检出 link(开发推荐)
dsh plugin --profile  add ./packages/solpi-dsh

# GitHub 直装(首次需在 profile 的 pnpm-workspace.yaml 里 allowBuilds)
dsh plugin --profile  add github:ryanxie113/dsh-solpi#

# npm / tarball(最顺滑,无需构建权限)
dsh plugin --profile  add solpi-dsh
dsh plugin --profile  add ./solpi-dsh-0.1.0.tgz

安装后 boot 即自动挂载四机制并接管 stock tool-fs / compaction-basic 行(详见包内 cordis.patch.yml)。LLM provider/model 等环境配置仍由用户 patch/profile 提供—— 参考仓库根 cordis.llm-qwen-overlay.yml 的 llm 段。

region 依赖说明:OCC 的区间选择复用 compaction-basic 的 region 实现。monorepo 源码检出形态直接可达;纯 npm 形态需上游公开该导出面后才可用(见 docs/upstream-proposals.md 提案 3),此前会 fail-fast 明报。

手动挂载示例(overlay 形态,源码直跑)

- insert:
    - id: solpi-dsh-occ
      name: '/abs/path/to/packages/solpi-dsh/src/online-context-compact.ts'
      config:
        keepRecentTokens: 5000
        cacheWriteReadRatio: 1.4
        summaryTokenEstimate: 700
    - id: solpi-dsh-epr
      name: '/abs/path/to/packages/solpi-dsh/src/evidence-preserving-reducer.ts'
      # 可选覆盖: minBytes/maxChars/reducerProvider/reducerModel/maxOutputTokens/timeoutMs

EPR 运行时依赖 summarizer 服务;OCC 深度复用 compaction-basic 的 region 压缩实现 (动态导入其 src/region.ts)。完整可跑样例见仓库根 overlay 文件与 solpi-test.sh。

存储

全部落在 $DSH_HOME/sol-pi/ 下,权限 0600:

$DSH_HOME/sol-pi/
├── online-context-compact/.json   # OCC 状态
├── epr//…                           # EPR 原文归档 + journal.jsonl
└── telemetry/events.jsonl                  # 本插件遥测(见下)

遥测(events.jsonl)

每事件一行 JSON,schema solpi-dsh-telemetry/1,字段 {t, schema, kind, …}。 写入为 fire-and-forget、fail-open(失败只计数+一次告警,绝不影响会话); 单文件 2MB 轮转、保留 .1–.3 三代(环形丢弃最老代)。

kind时机关键字段
occ-gate每次压力检查reason/writeTokens/archiveTokens/horizon/breakeven/compact
occ-result压缩落地后epoch/attempts/summaryBlocks/totalAfter —— summaryBlocks 为 null 即"摘要缺席"直接可见
af-then-run融合 then_run 终态status = succeeded/failed/skipped(+reason)
epr-appliedreceipt 成功替换原文sourceBytes/receiptBytes/evidenceCount
epr-skip命中诊断族但体积过小reason=below-min-bytes/bytes/minBytes

排障:事件丢失先看进程 stdout 是否有唯一一条 [solpi-dsh/telemetry] event dropped, 再查 $DSH_HOME 可写性。轮转历史在 events.jsonl.1–.3。

测试

cd packages/solpi-dsh
for t in fused-units epr-units occ-units op-exemption telemetry-units epr-spill-regression; do
  node --experimental-strip-types tests/$t.ts
done

当前 46 断言全绿。

设计取舍

  1. 诊断命令族保守匹配:前缀 token 匹配意味着 echo npm test 这类回显形态 也会命中——与整个插件「宁多看一眼、不漏真故障」的取向一致,不做特判。
  2. 遥测内建而非可选:stdout 日志随进程重启蒸发,长任务的取证需要常驻数据面; 所有事件 fail-open,关闭它没有收益。
  3. 组合分层不重复造轮子:spill-policy 先收敛大输出、EPR 再收敛诊断洪峰, OCC 的经济门工作在两者之后——压的是会话骨架而不是原始洪峰。

已知边界

  • OCC 计量 cacheWriteReadRatio 是配置假设,未实测坐实(上游提案见 docs/upstream-proposals.md)。
  • 多并发 session 状态隔离仅做过双 session 粗验。
  • AF 的 replaceAll/edit-only 自然触发路径未验证。