dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness 的上下文管家:替你记住“现在在干嘛”,自动整理送进模型的上下文——该留的留、该删的删、拿不准的不动,让 AI 编程长会话不跑偏,每个 token 都花在刀刃上。
⚠️ 本插件是实验性的、未发布的,且依赖打过补丁的 harness。 它不是生产可用软件。它会改写会话历史,依赖一个尚未进入上游的 harness 补丁, 触发行为仍在真实会话上验证。安装前请先读完本节。
| # | 依赖 | 缺失后果 |
|---|---|---|
| 1 | 一份本地的 DeepSeek Harness 源码 checkout | 致命。 没有已发布的 npm 包,也没有 tarball——必须对着你自己的 harness 树从源码构建(DSH_CHECKOUT=… npm run build)。别人机器上的绝对路径在你这里不成立。 |
| 2 | 带本地 ignorable 通道 补丁的宿主(会话包里的 SESSION_LOG_INTENT / LogIntent) | 静默降级。 事实不再写成真正的会话事件,而是退回 KV 镜像表(fact_mirror),于是事实轨在回放与导出中不可见。这个补丁不在上游——原版 DSH 宿主没有它。 |
| 3 | surfaceOp 端点名与会话格式与基线一致的宿主(格式 v3、{startSeq,endSeq}) | 构建期致命。 src/platform/history.ts 里有一道编译期锚,宿主漂移时会故意变红。不要去消红——改它旁边那个常量。 |
| 4 | Node 20+、dev_inject_plugin 与一次 DSH 重启 | 重新编译出的 lib/ 只有在宿主重启后才生效。 |
| 5 | 你自己的辅助模型路由(可选、默认关闭) | 判别、/init、星标断面与边界压缩会调用辅助模型:真实 API 花费,且提示词内容会送到你配置的服务商。不开启就不会有任何调用。 |
npm run gate 全绿),不是"规模化验证过"。真机回放里边界压缩只成功触发过 1 次;触发链仍在调,判别器 task 粒度在 2026-09-11 又改了一版(v5)。本 README 里的数字会变。docs/ledger-history.md);本 README 的任何数字都是某个时点的快照,不是承诺。~/.dsh/sessions。docs/14-upstream-upgrade.md 走。AI 编程会话越长越贵,也越容易跑偏。dsh-price-less 是非官方的 DeepSeek Harness 上下文管家:它替你记住“现在在干嘛”,把送进模型的上下文整理得更瘦,拿不准的绝不动刀——让每个 token 都花在刀刃上。
/task 一句话告诉插件现在在干嘛;开新任务、收尾旧任务,始终由你拍板/init 一问一答生成项目背景卡,模型始终带着“这是个什么项目”干活一句话:你只管说“现在在干嘛”,插件负责把上下文整理瘦;拿不准的,一律不动刀。
四层防御按“什么时候动手”从早到晚排开:
flowchart LR
A["① 写时整形<br/>工具结果入账前"] --> B["② 交换对剪切<br/>task 进行中"]
B --> C["③ 压缩<br/>task 闭合 / 窗口到 35%"]
C --> D["④ 恢复<br/>会话重启"]
| 层 | 什么时候动手 | 动什么 | 绝不动什么 |
|---|---|---|---|
| ① 写时整形 | 工具结果入账前 | 只整形“过程日志”(≥120 行且 ≥16 KiB) | 失败信息、列表、数据查询一律原文 |
| ② 交换对剪切 | task 进行中 | 被后续写入覆盖的旧读、声明表读件、已结束的追问/验证 run | 结论会落成一条通知,原始结论不丢 |
| ③ 压缩 | task 闭合,或主模型窗口用到 35% | 把旧内容折成“档案(总分)+ 热尾(最近逐字事实)” | 错误不进热尾;档案只存总分;热尾条目仅在内容不能自证位置时才带“路径@版本:行号”定位标注 |
| ④ 恢复 | 会话重启 / resume | 重放卷宗与档案,用纯函数重算状态 | 不调模型、不改历史、只降级不臆造 |
三条底线贯穿全部四层:
想看每次动作花了什么,读
logs/context-economy.log;想复盘历史账本,见docs/ledger-history.md。
| 区域 | 状态 |
|---|---|
| R1 平台底座(事件、存储、技能目录、模型调用、历史改写、工具) | 已完成 |
| R2 识别与优化核心(P8–P14d:大任务边界、项目档案、自动识别、提示词优化器、星标按钮) | 已完成 |
| R3 剪切(写时整形、T0/T0-R、run 冲刷) | 已完成 |
| R4 压缩(边界装配、热尾、压力路径、保险丝、恢复编排) | 已完成 |
| 新构建生效 | 需要重启 DSH 加载重新构建的 lib/ |
| npm / tarball 发布 | 尚未发布 |
重要:自动识别默认关闭,需要显式设置
discriminator.auto = true才会启用。工具剪切(shear.enabled)与两条压缩路径默认开启。所有事实只记账;任何失败都不改动内容。
/task、/task close、/task——把连续的工作切成一段段边界清晰的大任务/init 提案 → 你确认 → 写入项目档案 v1(project_frame)/optimize-prompt 与星标按钮共用同一断面;产物 = 关键事实逐字保留 + 大胆重写,先预览后生效header.cwd)隔离context-economy/* 事件全部 log-only、ignorable;通道缺失时自动降级为 KV 事实镜像图源 =
docs/architecture.zh-CN.svg(英文版architecture.svg)。实线 = 已实现;虚线 = 待验证方向。图上每个盒子就近标注了对应的修正编号。
从上往下是一条数据流,从下往上是“谁听谁”的约束:
| 层 | 人话 | 正典词 | 规矩 |
|---|---|---|---|
| 顶部 | 你和 harness | 宿主 | 事件流从会话进入插件 |
domains/ | 决定做什么 | 编排面 | 命令、自动识别、剪切/压缩/恢复的流程串接 |
core/ | 决定怎么算 | 纯核 | 零 harness import,只做计算,可单测 |
platform/ | 决定怎么连 | 适配层 | 唯一 harness 触点(H1–H15),换宿主只改这一层 |
| 底部 | 留下了什么 | 数据 / 事实 | 持久 KV + 会话事实 + 诊断日志,全部可回放 |
src/
├─ platform/ # 适配层:插件与 harness 打交道的唯一出口
├─ core/ # 纯逻辑:只做计算,不依赖 harness
├─ domains/ # 编排层:命令、自动识别、流程串接
├─ config.ts # 配置项与默认值
├─ settings.ts # 设置界面接线
└─ index.ts # 插件入口
client/ # 设置卡片与星标按钮界面
docs/ # 设计文档与施工工单
下面每一条都已落进代码与账本,图上按机制就近标注:
| 修正 | 内容 | 账本 |
|---|---|---|
| F1 | 工具端口必须 ctx.inject(['tools']) 后经回调传入,否则剪切整体空转 | §60 |
| F2 | 边界压缩前加 60s 判词屏障,避免新任务背着旧任务上下文开跑 | §60 |
| F3 | 工作区隔离:档案/前缀键唯一键源 = 会话 header.cwd | §70 |
| F4 / F5a | 诊断日志去重;档案渲染结论先行 + 类型标签 | §60 |
| F8a / F8b | 估计器对齐 DSH token-meter,两桶密度(CJK 1.5 / 其余 2.9 字符/token) | §61 |
| F9a–F9g | 区间取自权威表面、产物 schema v2、热尾事实载体、双预算 10K/10K、路径相对化 | §62–§68 |
| F10 | 契约 v3:总分零指针、热尾指向档案、档案只存总分、错误不进热尾 | §69 |
| F11 | 列表类命令(Get-ChildItem / ls / dir …)一律不剪 | §70 |
| F12 | 影子模式零字节:只记事实,绝不往正文写注记 | §70 |
| F13 | 判别器 v4:task = 对同一工作对象 / 类似目标的持续改进;子task 不分流 | §70 |
| F14 | 热尾按需定位标注:内容不能自证位置才加“路径@版本:行号”,并记可定位性 / 额外搜索账本 | §79 |
| P14c / P14d | 判别链瘦身;★ 断面产品契约(关键事实保真 + 大胆重写、禁标签、同 prompt 二次点击只展开) | §33 / §35–§37 |
| P17c | 装配 HT 软门 + 丢弃归因 | §44 |
| P20c | 压力阀门 = pressureRatio(0.35) × 主模型窗口;缺窗口 → 125K → 安全网 100K | §48 |
| W2 | T-entry 准入收紧为“过程日志白名单”,失败 / 列表 / 数据查询原文保留 | §73 |
| N 系列 / T-loop | 协商剪除与工具思考后截断整体退役(真机 0 命中 / 缓存断裂) | §71 / §72 |
dsh CLI 或 dev_inject_plugin(用于加载插件)宿主版本:peerDependencies 范围同时接受补丁版 0.1.3-alpha.* 与预发布 0.1.5-*
(>=0.1.3-alpha.1 <2 || >=0.1.5-alpha.0 <2)。两条已实测的注意项(2026-09-10 于
harness 源码上验证):
SESSION_LOG_INTENT / LogIntent)是本仓 harness 的本地补丁,
尚未进入上游。在 vanilla 宿主上事实轨降级为 KV 镜像,账本口径不变
(docs/12 §3)。0.1.5 把 replace surfaceOp 端点改名({start,end} → {startSeq,endSeq})并把会话
格式升到 v3。src/platform/history.ts 为这一漂移备了编译期锚:对准这类宿主时该锚会
故意变红。不要去消掉它——改它旁边那一个 REPLACE_OP_KEYS 常量即可
(docs/implement/REPAIR-2026-09-10.md §8)。当前只有源码构建 / 开发者安装方式,还没有发布 npm 包或 tarball。
# 1. 安装依赖
npm install --legacy-peer-deps --ignore-scripts --no-audit --no-fund --no-package-lock
# 2. 从源码构建(需要本地 DSH checkout)
DSH_CHECKOUT=/path/to/deepseek-harness npm run build
# 3. 注入到 DSH 实例
dev_inject_plugin /path/to/dsh-price-less
计划中的发布形态(当前不可用):
dsh plugin add dsh-price-lessdsh plugin add ./dsh-price-less-0.0.1.tgz/init 我要做一个上下文管理插件
/init confirm
/task 设计命令面
/task
/task close
/optimize-prompt
/init 只是提案,/init confirm 才写入项目档案;随时 /init cancel 取消。/task 开新任务;之后的消息由自动识别(若开启)判断是延续还是新任务;/task close 标记收尾,边界压缩据此触发。/optimize-prompt 或星标按钮先弹预览:确认后才回填,你编辑过的版本即终稿。配置分组:shear(工具剪切)、compression(压缩)、discriminator(自动识别 / 辅助模型)。可在 GUI 设置卡片里改,也可以直接写 ~/.dsh/settings.yaml:
context-economy:
shear:
enabled: true
compression:
boundary: true
pressure: true
pressureRatio: 0.35 # 压力阀门 = 比例 × 主模型上下文窗口
domainTokens: 125000 # 主模型未声明窗口时的假定窗口
retainTokens: 10000 # 热尾预算
thresholdTokens: 100000 # 末位绝对安全网
archiveCapTokens: 10000 # 档案区硬帽(只计总分)
discriminator:
auto: false # 自动识别默认关闭
# provider: deepseek-official
# model: deepseek-v4-flash-vision-exp
# reasoningEffort: high
| 配置 | 类型 | 默认值 | 说明 |
|---|---|---|---|
shear.enabled | boolean | true | 工具剪切总开关 |
compression.boundary | boolean | true | task 边界压缩 |
compression.pressure | boolean | true | 压力路径压缩 |
compression.pressureRatio | number | 0.35 | 压力阀门 = 比例 × 主模型上下文窗口 |
compression.domainTokens | number | 125000 | 主模型未声明窗口时的假定窗口 |
compression.retainTokens | number | 10000 | 热尾预算 |
compression.thresholdTokens | number | 100000 | 末位绝对安全网 |
compression.archiveCapTokens | number | 10000 | 档案区硬帽(只计总分) |
discriminator.auto | boolean | false | 自动识别总开关 |
discriminator.provider / model | string | 未设置 | 辅助模型路由;两项都设置时覆盖,留空则跟随会话模型 |
discriminator.reasoningEffort | string | 未设置 | 辅助调用推理档;未设置 = 跟随模型默认 |
schema 未给
provider/model声明默认值,插件也不再内置任何默认模型(2026-09-10:原硬编码档按命名已到期,且"插件猜模型名"本身是漂移源)。留空时,辅助调用(自动识别、/init、星标断面、边界压缩)优先跟随当前会话模型(最近一次请求的 provider/model);会话首条消息尚无请求记录 → 跳过判别并发可观测事实CE_JUDGE_NO_ROUTE(/init、星标则命令面/前端明确回报"模型未配置"),从第二条消息起自动跟随。两项都填写时以配置为准。开启discriminator.auto或使用/init、星标按钮、边界压缩可能会调用辅助模型,产生 API 费用,并可能把相关提示词内容发送给所配置的服务商。
| 命令 | 作用 |
|---|---|
/task <描述> | 显式开启一个新大任务 |
/task close | 收尾当前大任务 |
/task | 查看当前大任务状态 |
/init <项目目标> | 发起项目档案初始化提案 |
/init confirm | 确认并写入项目档案 v1(project_frame) |
/init cancel | 取消当前提案 |
/init | 查看当前项目档案 |
/optimize-prompt | 命令形态的提示词优化器入口(星标按钮是主界面) |
当前已发射的自定义事件均为只记账(log-only),并携带 ignorable: true。
| 事件 | 含义 |
|---|---|
context-economy/task-boundary | 大任务边界事实(开了 / 关了哪个任务) |
context-economy/judge-recorded / judge-error / judge-verdict | 自动识别记录与结论 |
context-economy/optimize-run | 星标断面全账 |
context-economy/shear-applied / shear-decision / shear-error / shear-run-plan | 剪切落刀、裁决、失败、星标剪切清单 |
context-economy/assemble-run | 边界装配账 |
context-economy/compress-run | 压缩调用账 |
context-economy/pressure-fired / hard-truncate | 压力触发 / 防溢出保险丝 |
context-economy/restore-step / restore-degraded / restore-done | 会话启动恢复编排 |
设计正典维护在 docs/ 下:
docs/implement/archive/里的 R1–R4 工单与其余退役文档为本地只读(.gitignore排除,全文保留在 git 历史);其中两份研究记录已入库:W2c 形态解析评估 与 N 系列总纲。
| 阶段 | 范围 | 状态 |
|---|---|---|
| R1 | 平台底座:事件、存储、技能目录、模型调用、历史改写、工具 | 已完成 |
| R2 | 识别与优化:大任务边界、项目档案、自动识别、提示词优化器、星标按钮 | 已完成 |
| R3 | 剪切:工具结果瘦身、被超越旧读、run 冲刷 | 已完成 |
| R4 | 压缩:边界装配、压力路径、保险丝、恢复编排 | 已完成 |
| B 系列 | 分支-合并上下文(checkout/merge)——空间换效率 | 待验证 —— TODO §3 |
| R 系列 | 思考回放剪除 | 待验证 —— TODO §3 |
下面是简版;完整前置警示见 先读这个:依赖要求与实验状态。
package.json 仍标记为 private,暂无官方 npm/tarball 发布。lib/。discriminator.auto 默认为 false,避免产生非预期的辅助模型费用。/init、星标按钮或边界压缩,都可能把内容发送给所配置的服务商。docs/implement/archive/ 默认被 .gitignore 排除(全文保留在 git 历史);仅 W2c-output-shape.md 与 00-master-N-series.md 两份研究记录入库。dev_inject_plugin。欢迎提交 Issue 与 PR。提交前请确保:
npm run gate
全绿。
修改文档时,请同步更新 README.md 和 README.zh-CN.md。
docs/ 中的上下文经济设计本项目与 DeepSeek 无隶属关系。