omp packages

pi-dsh-optimizer0.4.0

The official dsh `minimal` first request for pi. DeepSeek was post-trained on a minimal harness, so the first request carries only the dsh minimal persona and its two tools (bash, str_replace_editor); afterwards pi's full prompt returns with its official

saolence Published 20 days ago MIT ~604 downloads/mo

Untested on omp

This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.

Did it work for you?

Result

One report per person. A new report replaces your old one.

Reports 0

No reports yet.

Readme

pi-dsh-optimizer

把 dsh 官方 minimal 的首轮请求搬给 pi —— 再顺手掐掉思维链里那句 "Let me…" 的循环。

DeepSeek 在 pi 里表现不好,不是 pi 不行,是 pi 喂给它的那段提示词,它压根没被这么训练过。

这个扩展把它被训练过的那一面还回去:官方 minimal 的原样开场,然后再把 pi 的东西全部交还。

pi 扩展 · 零配置 · 默认只认 DeepSeek · 52 个测试


先说那个 33 分

同一个模型,同一个基准,只因为外壳换了:

分数 外壳
87.9 DeepSeek 官方 Harness
54.68 Terminus 2(第三方复跑)

DeepSeek V4 Pro(0813)跑 Terminal-Bench 2.1。33 分的差距,最初闹成"DeepSeek 是不是作弊了",最后留下一个更有用的结论:不写清楚外壳的跑分,就是一个没有单位的数字。

然后是最关键的那一下——同一个 Harness 内部,换预设也有同样的落差:

预设 分数
minimal(只有 2 个工具) 99 / 96
standard 91
PTC(Code) 92

如果 V4 Pro 只是"认自家的房子",这三个数应该差不多。它们不是。变量是开场提示词和工具表——当外壳长得像它后训练时那副样子,模型表现最好。

接着是一个让这个扩展几乎成了必然的实验:

用 minimal 模式的提示词和那两个工具开一个会话。第一次工具调用之后,把完整的 25 个工具全部恢复,后面的运行照常。 分数几乎没动:98 / 99。

模型第一轮做了什么,远比后面名义上能用多少工具重要。

这就是全部的原理。这个扩展,就是把这个实验搬到 pi 上自动执行。


它做什么

会话的第一条请求,被改写成 dsh 官方 minimal 的样子。

第一条请求 之后的回合
系统提示词 You are a helpful software engineer assistant.——46 个字符,原样 pi 的完整提示词
工具 bash + str_replace_editor pi 的整个工具表
pi 的提示词分节 一节都没有 全部回来
思维风格 模型默认 你自己选(默认:we need to… 那段)

然后它就让开了。 会话一旦产出过真实的一轮,锚定永久解除:跨压缩、跨 --continue、跨 fork 都不会退回。不需要存状态,也就没有状态可以丢。

pi 的其它部分一个都没动。你的会话文件、pi 的工具注册表、界面——原样。被改写的只有那一条真正出网的请求。


第二个问题:"Let me…"的死循环

推理模型会打转。这是有专门论文研究的失败模式:"想太多"(overthinking)有自己的一整套文献,"让每一步思考尽量精简"也早就是思考模型的常规建议。

DeepSeek 的思维链有个标志性的版本——用叙述代替行动:

Let me… Let me check… Let me think about that… Let me…

同一个计划,反复复述,什么都不推进。

所以解除锚定的那一步,同时把 pi 的官方身份句换成一段严格风格的 we need to… 规则:每一步都是一个具体动作,第一人称复数,一句话一步,用情态动词(I'll · I can · I should · I will)推进到下一步。只写决策,不写评论,不复述。

实际感受:思考更短、重启更少、第一次动手之前的废话更少。

换掉它,或者删掉它 —— /dsh-optimizer

菜单项 作用
text 用你自己的一段替换掉身份句
mode replace(默认)· remove(只删身份句,不加任何东西)· keep(完全保留 pi 的原文)
preview 提交前先看解除后到底长什么样
reset / path 恢复默认 / 打开配置文件

安装

pi install npm:pi-dsh-optimizer

重启 pi,完事。不用声明模型,不用配 provider——DeepSeek 开箱即中,其他模型完全不受影响,而每个会话的第一条请求都会被锚定。


功能

  • 首轮锚定 —— 官方 minimal 那行 persona 和那两个工具,原样出现在真正到达模型的那条请求上。
  • 自动解除,且粘性 —— 会话第一轮真实产出后,pi 的完整提示词和工具表全部回来,并且不再退回。
  • 思维风格可换 —— 默认 we need to…,三种模式,支持预览。
  • 自带官方 str_replace_editor —— 和 dsh minimal 用的是同一套两工具表面,锚定不是虚的。
  • DSML 桥 —— 模型把工具调用当文本吐出来时,该调用照样执行。零配置。
  • 可自查 —— PI_DSH_OPTIMIZER_DUMP=1 把真正出网的请求落到磁盘,锚定有没有生效自己验。
  • 不破坏 —— 不改写、不回滚、不留痕迹。锚定是"某一条请求的属性",不是"你这个会话的状态"。
  • 默认只认 DeepSeek —— 由 models 白名单决定。DeepSeek 大小写无关地命中(*deepseek*,provider 也算);其他模型完全不受影响。写 "models": [] 则对所有模型生效。

命令与配置

东西 作用
/dsh-optimizer 菜单:思维风格、模式、预览、重置、路径
pi_dsh_status 工具——打印 phase= · model= · active= · models= · surface= · tools=
PI_DSH_OPTIMIZER_DUMP=1 导出出网请求用于自查
~/.pi/agent/pi-dsh-optimizer.json { "mode": "replace", "text": "…", "models": ["*deepseek*"] }

配置里故意没有 enabled 开关:models 白名单就是开关,大小写无关。不在白名单里的模型完全不受影响——pi 的提示词原样发出、工具表一个不动;写 "models": [](或 ["*"])则对所有模型生效。在它上面再加一个开关,只会多一个和事实不同步的地方。


常见问题

只对 DeepSeek 有用吗? 不是。它搬过来的那个预设,就是 DeepSeek 后训练时的分布,所以 DeepSeek 收益最大。其他模型只是开场那一条请求更轻。

pi 的 rules、skills、项目上下文会丢吗? 只丢第一条请求——这正是重点。从第二个回合开始全部回来。

会变慢吗? 它做的工作比 pi 的常规路径更少:46 个字符的提示词 + 两个工具声明,而不是几十 KB 提示词 + 几十个声明。

那条被锚定的请求,真的是官方的吗? 是。persona 字符串和两个工具声明都抄自官方 minimal 预设。打开 dump,自己 diff。

我用的是 standard / PTC 预设呢? 这个扩展只搬 minimal 的开场。有数据支持的就是这一个。

对提示词缓存有帮助吗? 它给了 DeepSeek 前缀缓存喜欢的形状:开场极小、解除后的前缀稳定。但它本身不是一个缓存功能。

会不会和别的扩展打架? 它不 patch pi 的提示词,所以不会。但有一个坑:它注册的工具名是官方的 str_replace_editor——如果另一个扩展注册同一个名字,pi 只留一个,另一个会被静默丢掉。


兼容性

pi @earendil-works/pi-coding-agent
模型 任意——DeepSeek V4 Pro / V4 Flash / V4.1 收益最大
相关场景 DeepSeek Harness(DSH)、DSH minimal 预设、pi + DeepSeek

老实说几句

  • 那个 33 分和 99 / 91 / 92 都是社区报告,不是 DeepSeek 官方声明。来源在下面,建议自己去读,别只信这份 README。
  • 首轮锚定实验是在 DSH 内部做的。这个扩展把它搬到 pi,你的数字会不一样。
  • we need to… 是提示词风格干预:它改变推理读起来的样子、通常会变短,但不保证一定更短。
  • DSML 桥代码不大,而且没有专门的测试覆盖。遇到它解析不了的泄漏调用,它会原样放过、不碰你的流。

来源与致谢


更新日志

版本 变化
0.4.0 模型白名单——默认只认 DeepSeek,大小写无关;其他模型完全不受影响。首轮表面按 Web app 的 Minimal 预设重新对齐:bash 描述、编辑器的 null 占位说明、oneOf [X, null] 参数 schema
0.3.0 首轮锚定 + 自动粘性解除、思维风格三种模式与预览、DSML 桥、官方 str_replace_editor、出网请求 dump
0.2.x 最早的公开版本:minimal persona 与两工具表面

许可协议

MIT。