dsh-anchored-standard Wire级Think-Execute分离完全指南如何在Adapter层用tool_choice:none实现工具可见不可调用【免费下载链接】dsh-anchored-standardTwo-phase DeepSeek Harness preset: Minimal-aligned bootstrap, then full Standard tools (Project2 98/99)项目地址: https://gitcode.com/gh_mirrors/ds/dsh-anchored-standarddsh-anchored-standard 是一个 DeepSeek Harness 社区实验预设项目其Wire Think-Execute Standard模式在Adapter 层实现了 Wire 级 Think-Execute 分离请求中工具定义保持可见但通过tool_choice: none禁止调用让模型看得见工具却调不了工具先完整思考再执行。本文用通俗方式讲清它的原理、三个关键步骤和安装配置方法。什么是可见不可调用的 Think 条件在 AI 编程助手里**思考Think和执行Execute**常常混在一起模型一边看工具列表一边决定调用容易没想清楚就动手。dsh-anchored-standard 的 Wire 级分离把一轮对话拆成两个阶段阶段工具状态网络请求wire模型行为 THINK第 0 步工具定义完整可见tool_choice: none禁止调用基于完整工具目录做规划⚡ EXECUTE第 1 步起常驻精简目录可调用正常路由按刚才的计划执行对比同家族的 shared/think-phase.mjs 思路——它把思考步骤的工具目录清空——Wire 级模式更进一步工具不隐藏、只上锁。模型能看到自己稍后能用的一切工具来规划而工具只需一个参数即可恢复可用。这正是 wire-think-standard/agent.cordis.yml 开头注释描述的实验目标。为什么官方 Adapter 做不到DeepSeek Harness 官方 DeepSeek Adapter 的GenerateOptions词表里根本没有tool_choice字段官方文档把该映射标记为 MVP 裁剪。也就是说官方路由无法在请求里携带禁止调用工具的指令官方 Adapter 的 wire 请求体在私有生成器内部构建没有可包装的缝隙也无法用同一个 provider id 重复注册会抛出DUPLICATE_ADAPTER。所以社区方案选择了一条合法缝隙注册一条兄弟路由sibling route用自己的 provider id 承载tool_choice能力。两个关键文件谁负责上锁谁负责切换1️⃣ shared/toolchoice-adapter.mjs —— 带锁的兄弟路由它零依赖地内置了一套协议忠实的 DeepSeek chat-completions 序列/SSE/翻译管线并注册在专属 provider id默认deepseek-wire-think下。核心只有一行逻辑见 serializeThinkRequest只要请求里带有工具定义就在 wire 上附加tool_choice默认值none不带工具则不附加。其余细节都与官方行对齐连接信息按行配置 llm-deepseek设置段 环境变量DEEPSEEK_BASE_URL/DEEPSEEK_API_KEY解析同一个 API Key 即可同时服务两条路由。2️⃣ shared/wire-think.mjs —— 每步路由的相位引擎它不改请求内容只换路。在 agent/request 监听器 中THINK 步把请求路由唯一切换到兄弟路由冻结的请求体原封不动日志可重建性不变EXECUTE 步把路由切回捕获的原始 provider绝不让你带锁进入工具步子代理默认直接进入执行阶段它们的 brief 本来就是计划。两个文件在模式目录中都有物化副本wire-think-standard/toolchoice-adapter.mjs、wire-think-standard/wire-think.mjs由npm run sync从shared/生成勿直接改副本。三步机制THINK → STEER → EXECUTE一轮用户消息在 Wire 模式下的完整生命周期THINKstep 0请求携带完整工具目录走兄弟路由wire 上tool_choice: none——模型只能输出纯文本计划同时按 Think 步作用域剥离自动注入上下文skill-catalog、agent-instructions。STEER转向纯文本回复会让回合即将关闭agent/turn-stopping检查点每回合恰好转向一次注入一条引导通知思考回合已完成所有工具已激活请执行你上一条消息里的计划。转向记录是持久事件重启后不会重复转向。EXECUTEstep 1切回官方 provider模型看到提升后的常驻目录——shell str_replace_editor 发现工具dev_tool_search/skill_search/skill_load 已显式解锁的工具。agent.cordis.yml中的关键行见 wire-think-standard/agent.cordis.yml- id: toolchoice-adapter # 必须保持第一个本地行路由要先于引擎存在 name: ./toolchoice-adapter.mjs - id: wire-think name: ./wire-think.mjs config: mode: every-turn # 或 first-turn只限制在首个用户回合一键安装 Wire Think-Execute 预设每个模式目录都是自包含的单独复制即可安装git clone https://gitcode.com/gh_mirrors/ds/dsh-anchored-standard dsh_home${DSH_HOME:-$HOME/.dsh} mkdir -p $dsh_home/.agent-presets cp -R wire-think-standard $dsh_home/.agent-presets/wire-think-standard完全重启 DeepSeek Harness新建空白会话选择Wire Think-Execute Standard (experimental)即可。注意该模式需要和官方路由一样可见DEEPSEEK_API_KEY见 preset.yml 的 description 说明。降级阶梯与成本采纳前必知的两件事️永不卡死的降级设计详见 wire-think.mjs 头注释兄弟路由未注册行缺失或第二个预设重复挂载同一 id 触发DUPLICATE_ADAPTER→ Think 步自动降级为零工具条件过滤器失败 → 回退到完整目录并一次性告警转向失败 → Think 回复直接作为本回合答案。⚠️成本须知Think/Execute 交替每回合切换请求前缀中的 tools 块两次DeepSeek前缀缓存复用会在每次切换的改动 token 处失效provider id 本身对后端缓存不可见每回合多出一次模型调用。若觉得不划算把mode设为first-turn切换和缓存开销只发生在会话首个用户回合。测试方面test/toolchoice-adapter.test.mjs 精确断言了有工具时 wire 恰好携带tool_choice: none、无工具时不携带可用npm test本地复现零依赖测试套件。常见问题FAQQtool_choice: none和直接把工具目录清空有什么区别A清空目录时模型无法感知自己拥有什么none让模型带着完整工具视野做规划思考质量更高且执行阶段工具一个参数之遥即可恢复。Q为什么 adapter 要内置一套序列化管线而不是复用官方包A预设目录是单独复制到.agent-presets/的无法依赖外部 npm 包因此按 MIT 许可内置了一个最小、协议忠实的子集官方版权声明保留在 NOTICE。Q和 README.md 里其他锚定模式的关系AWire 模式是锚定家族的wire 级条件变体combo-anchored/ 组合包甚至允许把think-phase行换成wire-thinktoolchoice-adapter把回合开场升级为本文的条件代价是兄弟路由与前缀缓存抖动。总结核心创新用自注册 provider id 的兄弟 Adapter 路由绕开官方词表缺口在 wire 上实现工具可见 禁止调用分工清晰adapter 负责上锁tool_choice: noneengine 负责换路think 走兄弟路由execute 回官方路由生产级稳健三重降级永不卡死会话持久化转向事件保证重启安全代价透明每回合 1 次模型调用与前缀缓存失效可用mode: first-turn收敛成本。这套机制完整展示了社区插件如何在不动框架源码的前提下通过 Adapter 层扩展出官方能力之外的 wire 级请求条件——对研究 DeepSeek 思考轨迹与工具面剂量效应的同学是一份值得逐行阅读的样本。【免费下载链接】dsh-anchored-standardTwo-phase DeepSeek Harness preset: Minimal-aligned bootstrap, then full Standard tools (Project2 98/99)项目地址: https://gitcode.com/gh_mirrors/ds/dsh-anchored-standard创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
做了3个月AI旅行产品,最大挑战不是技术 项目第87天,我收到一封邮件,发件人是合规部门,标题里有暂停两个字。那时候我们的产品内测刚跑两周,技术坑全部填平,团队正在讨论上线排期。这封邮件一来,整条产品线原地停摆。这篇讲讲这三个月里发生的事&a… · 2026/9/25 18:55:36
腾讯 BrowserSkill 本地实测:CLI 装完不能用,真正的边界在 52800 端口 腾讯开源的 BrowserSkill 让 AI Agent 复用你已登录的真实浏览器,GitHub 上 5,718 star(9 月 20 日查的),适配 Cursor、Claude Code、Codex、OpenClaw、CodeBuddy、WorkBuddy、Hermes Agent、DeepSeek Harness 等一批主流 harness… · 2026/9/25 18:55:30
昇腾ATLAS 300V 24G部署YOLO实战:从推理卡选型到性能调优 2. 硬件认知:ATLAS 300V 24G到底是一张什么卡ATLAS 300V 24G是华为昇腾系列面向边缘推理场景推出的一款AI加速卡,核心芯片为昇腾310P系列处理器。很多人第一次拿到这张卡,会下意识地把它和GPU放在一起对比,比如“它是不是对标RTX … · 2026/9/25 18:55:24
分页语句使用row_number引发的性能问题 背景
今天给客户优化时发现客户在使用了分页语句中使用了row_number而引发了性能问题
那客户是怎样使用row_number引发了性能问题
在分页语句中如何处理
我们来模拟实验下
模拟
这了减少复杂度,我们用单表查询来模拟客户性能问题场景
使用row_number获取排序序号
or… · 2026/9/25 19:20:57
CLI 错误诊断模式与详细日志转储 CLI 错误诊断模式与详细日志转储开源 CLI 工具上线后,最让人抓狂的反馈莫过于 GitHub Issue 里只有一句冷冰冰的报错:“运行报错了,怎么解决?”附带的截图可能只截取了控制台最后一行没有任何上下文的 Error: Request failed with… · 2026/9/25 19:20:45
Web|术语大全的庖丁解牛 总纲
Web全称World Wide Web,万维网。它不是互联网本身,是运行在互联网之上的一套超文本信息系统,核心依靠HTTP/HTTPS协议、URL、HTML,实现浏览器和Web服务器之间的资源请求与展示。整套体系分为客户端(浏览器… · 2026/9/25 19:20:14
从TCP重试到智能体可靠性:一套实用的重试策略设计指南 你肯定遇到过这种时刻:装某个软件装到一半弹窗提示失败,旁边给你一个“重试”按钮。你面无表情地连点几下,最后一次居然过了。那一刻你没细想,但这三次点击背后的逻辑,和半个世纪前 TCP 协议设计者在图纸上画的那些箭头… · 2026/9/25 19:20:08
DeepSeek之后,又一国产AI爆火!用TaoToken统一Key接入AI Agent的配置实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 19:19:50
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37