← Back to home@walksls

not-smarter-just-faster

DSH「我们需要」preset 的 20+ 批实测|负面结论:不会更聪明,但更快更省(中等任务 2.4–3.8×)。附一个没预料到的发现——它让模型少查资料、多靠猜。

Stars
2
Language
JavaScript
Created
Sep 24, 2026
Updated
Oct 15, 2026

Introduction

「我们需要」模式(we-need)

跑了 20 多批实验,结论是:这个模式不会让模型更聪明,但确实更快、更省。 附带一个我们没预料到的发现:它会让模型少查资料、多靠猜。

一个给 DeepSeek Harness(DSH)用的 agent preset,把模型的思维链锚定成中文「我们需要…」的风格。

License: MIT


先说结论

这是一个「风格」功能,不是「性能」功能。

你会得到你要知道
中文思维链(对照 0% → 43%)能力上没有任何提升,多次 A/B 通过率都测不出差异
「我们需要…」句式思考更短,所以更快更省(幅度取决于任务规模,见下)
长任务风格不崩需要重启 dsh web 才生效

快多少、省多少

实测数据,附适用条件:

任务规模(标准模式基准)加速数据
中等(16–32 次工具调用,1–3 分钟)2.4× – 3.8×n=12–20/臂,外部判卷
超大(239 次调用,46 分钟级)1.5×n=2,样本小
  • 花费:超大任务上 ¥0.55 vs ¥1.14,约 0.5×;输出 token 0.57×。
  • 两组数据配置不同(早期实验的臂少 4 个插件),不能据此画趋势线。早期「速度优势随任务变长而增大」 的说法已被新数据质疑,现标为未定。
  • 所有能力指标(通过率)多次实验均未测出差异。这是「没测出」,不是「证明等价」。

装之前先看这两条限制(2026-09-26 真实使用反馈 + 本机复核)

限制实测建议
长任务稳不住工具调用 <100 时漂移 10%;200–300 时 46%(r=0.748)超过 150 次工具调用的任务别用它
需要查证的任务会做错首次写代码前查证 30 → 6 次;搜索 1/5 → 0/0要查资料、讲精确的任务,用标准模式

真实用户原话:「不查证都是错的;Let me 会仔细一点点查反而能作对。难度上来就很难受。」

这个模式适合短任务(快 2.4–3.8×)和自包含任务,不适合长任务、需要查证或精确性的任务。 详见 已知问题 与 docs/feedback-2026-09-26.md。


安装

先知道一件事:dsh 0.2 起,模式目录不再被自动扫描。 旧版的 @deepseek-ai/dsh-agent-presets 会扫 ~/.dsh/.agent-presets/<id>/, 0.2 换成了声明式注册表,官方 README 的原话是「注册表不扫描目录,也不接受 preset 路径」。 所以放好目录之后,还要跑一次仓库里的同步脚本,把目录转成 profile 里的注册声明。 少这一步,重启后模式列表里什么都不会出现。

git clone https://github.com/walksls/not-smarter-just-faster.git /tmp/we-need
mkdir -p ~/.dsh/.agent-presets
cp -R /tmp/we-need/. ~/.dsh/.agent-presets/we-need/

# 把目录同步成 0.2 认的声明。加 --check 只预览,不加参数才写入。
node ~/.dsh/.agent-presets/we-need/tools/sync-agent-presets.mjs --check
node ~/.dsh/.agent-presets/we-need/tools/sync-agent-presets.mjs

然后完全重启 dsh web,新建空白会话,在模式选择里选「我们需要模式」。

为什么必须重启、不能只刷新页面:脚本写的那段配置里有 agent-preset-registry 覆盖, 热重载它会让注册表服务被销毁重建,当前所有会话的工具面当场消失 (bash / read / edit 全变成 unknown tool)。

目录名必须是 we-need(preset.yml 里的 name: 只是显示名)。

注意 cp 结尾的 /.:如果副本目录已存在,cp -R <源> <目标>(不带 /.)不会覆盖已有文件, 还会造出嵌套目录。已装过的话建议用 rsync -a --delete <源>/ ~/.dsh/.agent-presets/we-need/。

不需要装 npm 包,也不需要改 dsh 源码。


目录

文件说明
README.md你正在看的这份(总览)
README-preset.md完整实验日志(20+ 批实验、含被推翻的结论)
agent.cordis.ymlpreset 定义(persona + 插件装配)
preset.yml显示名 / 描述 / 排序
lib/*.mjs10 个插件 + 2 个内部模块(delegation.mjs 全体共用、detect-v2.mjs 只给 thinking-guard)
tools/sync-agent-presets.mjs把模式目录同步成 dsh 0.2 认的注册声明(装完必跑一次)
docs/独立实验的原始报告(见下)

docs/:独立实验

文档内容
docs/feedback-2026-09-26.md真实使用反馈复核(长任务失守 + 不查证做错)
docs/finding-guessing-vs-researching.md「少查证、多靠猜」的完整数据
docs/mario-ab-report.md马里奥任务 A/B:效率、花费、温度根因、真实使用复核
docs/methodology-pitfalls.md8 个方法坑(含「用同一个脚本校验自己」的循环论证)

它做什么

把 DeepSeek-V4.1-Flash(含 deepseek-flash)的思维链锚定成「我们需要…」的中文风格, 同时保留全部工具能力。

机制本身不依赖具体模型(靠首轮条件塑形),但实测只在 V4.1-Flash 上做过;其他模型 (V4-Pro、V4-Flash 等)未验证,见文末「已知问题」。

原理是把「首轮条件」和「干活条件」拆开:

阶段工具面思维链
首轮(锚定)只有 bash + edit走进「我们需要…」轨迹
之后(晋升)全部工具自动恢复保持已锚定的风格

晋升信号是会话里出现第一个持久事件(tool/call 或 assistant/message),不需要重启, 也不需要手动切换。


实测结论

有效的

改动效果
锚定首轮工具面风格锚定成功(对照 0% → 43% 中文)
每步重新锚定(re-anchor)压住 step 之间的漂移
种子植入(seed-graft)真实多轮密度 1.52×
压缩后重整(compact-reanchor)长会话风格不崩
急停阀(escape-valve)复读正在生成时当场中止本回合,不等下一步
折叠退化块(thinking-guard)把退化的思考块从模型可见历史里折掉,不让它每轮重放

防退化两件套:escape-valve 与 thinking-guard

这两个跟「中文思考」没关系,治的是退化:上下文一长,模型会陷进复读(同一句喷几百遍), 而且回合看起来还是成功的,不专门检测根本发现不了。你就算不用这个 persona,也可以单独拿去用。

插件做什么什么时候动手
escape-valve(急停阀)当场中止这一回合复读正在生成时
thinking-guard把退化的思考块从模型可见历史里折叠掉,不让它每轮重放下一步开始时

两者是上下半截,不是重复:阀管正在喷的那一段,折叠管已经进了历史的那一块。 它们共用同一个判据 detect;detect-v2.mjs 是 2026-10-14 加的第二把尺子(英文碎片轮换), 只给 thinking-guard 用,默认不启用。

三者的分工要说清楚,别指望一个顶三个:折叠管不到一次生成内部;压缩管不到刚生成的那一块 (它落在逐字保留尾里,要下一次压缩才带走);阀是唯一能当场断的。

本机实跑时这两个改挂到了宿主层,对所有模式生效,因为退化跟模式无关,标准模式一样会复读。 仓库里的 agent.cordis.yml 保留 enabled: true 的自包含写法,装在这个模式下就能用; 想对所有模式生效,把这两条挪到 profile 的宿主层即可。

被自己推翻的(这些也留在文档里)

曾经的结论实测推翻后
temperature: 0.1 有 1.93× 收益复现失败,且长任务上导致退化循环(3/3 崩溃),已于 2026-09-23 关闭
「整段用中文」的提醒有效改成「第一句锚定」后实测无改善(p=0.21),已退回
本模式提升能力两次 A/B 通过率均无差异
加条款能治退化循环不能。循环会把条款本身当填充物(实测「(停止空转)」出现 325 次)

本项目的原则是:每次推翻自己都留在文档里,不删。完整记录见 README-preset.md。

贯穿全部实验的单一根因:思考长度

它同时决定风格漂移、token 成本和速度。所有有效的改动都在压它;所有无效的 (并行提示、观察层、历史改写)都没碰到它。


副作用:先查证的行为显著减少

这是使用者最该知道的一点,也是它「只提速不提智」的机制。

同一任务(「生成马里奥游戏,越像越好」)下对比标准模式与本模式:

指标标准模式本模式
首次写代码前真正查证次数(中位)306
web_search / web_fetch1 / 50 / 0
思考中「猜疑词」密度(每千字符)0.010.96

典型对比:

  • 标准模式:前 20 步全在查资料。搜 SMB 物理常数反汇编,抓逐帧数据,下载真实关卡数据, 然后才开始写。
  • 本模式:探完环境,第 8 步就开始写代码,全程一次网都没搜。

怎么解读(请不要过度解读)

可以说:本模式的「更快更省」(30 分 vs 46 分、127 vs 239 次调用、¥0.55 vs ¥1.14) 主要来自少做调研,而不是「想得更高效」。

不能说「查得少 = 成品更差」。该任务下两边判卷都是 16/16 关键词、都能运行;标准模式反而有 1/2 有效样本是白屏 bug(lv.kinds.charAt is not a function),本模式 3/3 能跑。

可能的原因是马里奥这类任务不需要精确常数(差不多就能玩)。在必须查准的任务上 (真实 API 对接、特定版本行为、精确规格),少查才可能致命。

这一点在 2026-09-26 被真实使用反馈证实了(见下方「已知问题」第 5 条): 有用户实测「不查证都是错的,Let me 会仔细一点点查反而能作对」。 在需要精确性的任务上,请用标准模式。


已知问题与限制

下面第 5、6 两条来自 2026-09-26 的群友真实使用反馈,我用本机会话日志独立复核过 (docs/feedback-2026-09-26.md)。这两条会直接影响你该不该用它。

  1. 退化循环(模型陷入无意义重复直至输出预算耗尽)。

    • 触发场景:开放式、没有明确终点的任务(比如反复权衡要不要验证)。
    • 已缓解:关闭 temperature(实测 3/3 崩溃 → 3/3 正常)。
    • 未根除:加条款、改措辞都被证明无效,循环会换形态。
  2. 风格会随对话变长衰减。语言在每段思考的前 40 字符就锁定,火源是「紧跟英文工具输出之后」。

  3. 需要重启 dsh web 才能让 .mjs 改动生效(刷新页面无效)。

  4. 本 preset 只测过 DeepSeek V4.1-Flash,其他模型未验证。

  5. 长任务会稳不住,拐点约在 150–200 次工具调用。实测 14 个真实会话:工具调用 <100 时 漂移中位 10%;200–300 时跳到 46%;会话内部同样成立(0–49 次工具时 7% → 150–199 次时 69%)。 相关系数 r = 0.748(工具次数 vs 漂移)。长任务请不要指望它守住风格。

  6. 在需要查证或精确性的任务上,它更容易做错。

    2026-09-27 已改软:删掉了 persona 里两句会压制查证的话 (「已经知道答案的事,不要再调工具去验证」「用最少的调用把事做完」),换成 「必要的查证不算无谓调用,拿不准的必须先查」「一次把事做对;调用次数少不是目标」。 效果未验证:短任务消融测不出差异(三臂全过),长任务消融未跑。

    本模式会显著减少查资料:首次写代码前查证次数中位 30 → 6、web_search/web_fetch 1/5 → 0/0、思考里「猜疑词」密度 0.01 → 0.96。真实用户反馈:「不查证都是错的; Let me 会仔细一点点查反而能作对」。API 对接、版本行为、精确规格这类任务,请用标准模式。 (在自包含任务上未测出通过率差异,四种任务类型的 A/B 全部无差异。)


我不维护这个项目

这是个人实验的副产品,作者不提供维护、不承诺修 bug、不保证跟进 DSH 版本。

  • 结论可能被后续实验推翻(文档里每次推翻都留着,欢迎继续推翻)。
  • 欢迎 fork、改、拿去用(MIT 许可)。
  • 有想法或数据想补充,欢迎开 issue 或 PR,但别期待及时回复。

如果你做出了更有意思的实验,那正是这个仓库被公开的原因。


许可

MIT,与 DSH 本体一致。

本 preset 只依赖官方包(@deepseek-ai/dsh-*),不含任何第三方代码,也不含任何密钥。