dsh-big-fat-whale-maid-adaptive
canaryjing/dsh-big-fat-whale-maid-adaptive
Agent preset with adaptive tool presentation and environment-aware shell routing. Ports modules from yjh051108/dsh-routing-suite and xiaobright/dsh-anchored-standard (the former is listed here), so do not enable it alongside those presets.
Install
dsh plugin --profile web add github:canaryjing/dsh-big-fat-whale-maid-adaptiveREADME
DS女仆长模式 · v3.2.1
DSH 的个人工程预设:思考强度三档联动工具面(low 原生 / high PTC / max PTC+全量)、系统提示词要求中文思考并主动汇报进度与风险、常驻核心按需解锁、可靠环境简报、实时请求模型 ID、安全工作目录、PowerShell 7 优先绑定,保留温柔严谨的蓝发蓝瞳鲸鱼娘女仆长风格。
整个目录是一个 DSH bundle;自定义模块只使用 Node 内置模块及包内导入,不依赖 dsh-wsl-workspace。组合本身仍依赖 DSH 官方插件与服务,不是脱离 DSH 的独立运行时。
v3.2.1:PTC 门控补修(2026-10-26)
run_code为固定入口,无须解锁,不交给能力过滤器裁剪。high 在 SDK 生成前应用 agent 级 restriction,同时限制继承工具的 SDK 与嵌套执行;max 全量但不移除外部限制。dev_tool_search只同步撤下本门控自己的 mask 读取实际目录,随后立即恢复;不会解除其它 scope restriction 或审批。申请解锁后本次程序先返回,下一次run_code才绑定新工具。- 冷启动与实时事件支持
tool/ptc-dispatch-start/tool/ptc-dispatch,按 root/parent/subcall 配对成功结果并恢复精确 accepted;失败、孤立结果、空 accepted 不恢复。 - 修正首轮和切档时序:使用早于工具/section 快照的变量提供者预对齐 presentation,再对齐门控;不再在太晚的 assemble waterfall 才切换。high/max 首轮即声明 run_code,SDK 与执行范围当轮一致。
- 51 项针对性测试全部通过、0 跳过;新增两种插件注册顺序下的 78 次真实组装快照,覆盖首轮 low/high/max、连续切档、模型选择事件、解锁下一次生效及外部限制。未重跑全部测试或真实上游 API。
v3.2.0 重点:思考强度三档驱动工具面
预设现在把会话的推理强度当成第一等输入。档位归一严格照 DeepSeek 思考模式文档 的映射表:
| 请求传入 effort | 实际推理强度 | 本预设档位 |
|---|---|---|
minimal / low / off | low | 低档 |
medium / high / xhigh | high | 高档 |
max / ultra | max | 满档 |
| 维度 | 低档 | 高档 | 满档 |
|---|---|---|---|
| 工具呈现 | native(与 v3.1.0 完全一致) | ptc:只有 run_code 可直调,其余工具从程序内调用 | ptc |
| 解锁策略 | progressive:常驻核心 + dev_tool_search | progressive | full:已注册工具全量可见 |
| 预算提示 | 无 | PTC 用法说明 | PTC 说明 + 「用量 unlimited、放开花」原文提示 |
- 按会话声明,互不干扰:呈现用
ctx.tools.presentAs()声明在该会话的 agent scope(cordis 的 traceable 代理会把this.ctx换成调用者 ctx),所以两个会话可以一个跑 low、一个跑 max;解锁模式也支持会话级覆盖。 - 改档在下一轮组装时生效:对齐挂在
system-prompt/assemble(该事件能拿到agent与agent.ctx;agent/pre-step的 payload 里没有 agent,挂不上),对齐在next()之前,PTC 说明段当轮即就绪;轮内不再改动 schema,避免同一轮工具面抖动;同一 scope 重复声明会抛 conflict,因此换档先 dispose 再声明;high → max只换解锁策略,不重新声明呈现。 - 失败一律 fail-open:PTC 运行时缺失、scope 不合法、声明抛错,都只回落
native并只告警一次,绝不阻断会话。低档不做任何呈现声明,行为与 v3.1.0 逐字一致。 - 手动锁定:设环境变量
DSH_MAID_EFFORT=low|high|max(优先级最高,便于测试与临时压制)。dev_router_status的effort=行会报告当前档位、呈现、解锁与强度来源。 - 全局汇报纪律:persona 前缀新增两条(任何档位都生效)——主动汇报进度(几步一次说清在做什么、改了什么、还剩什么),遇到检查失败/路径错误/权限拒绝/计划不再成立时当轮立即汇报,不要闷头重试。
v3.2.0 当前发行包修复(2026-10-26)
- 修复 DSH 0.2.1-rc.2 同一会话切到 PTC 时 DeepSeek 报
All tools cannot be deferred:新增 bundle 级deferred-tools-compat.mjs,在 DeepSeek 适配器的请求投影之后,仅对非空且全延迟的工具列表加入不可调用的传输占位声明,策略与引擎现有 Anthropic 占位声明一致。 - 真实工具(包括
run_code)继续保持延迟加载,工具加入顺序、冻结请求、会话日志、prepared connection 快照和审批执行边界均不改变;普通/native、首轮 PTC、其他提供者不变。不修改底座文件或全局 fetch;卸载 bundle 时恢复适配器方法。兼容层位于 profile 范围,安装此 bundle 后也覆盖切换到内置 PTC 预设的请求。 - 同版本覆盖 v3.2.0 的发行资产与源码 tag;旧包已有留底。重新下载并安装,重启宿主后生效。旧引擎没有 DeepSeek Messages 适配器时明确告警并保持原行为。
- 当前 Tauri 引擎 0.2.1-rc.2 + 真实 PowerShell 7:156 tests / 156 pass / 0 fail / 0 skip。包括真实 DeepSeek 序列化报文与模拟 HTTP/SSE 的错误前后对照;不等同于真实上游端到端验证。
v3.1.0 重点:路由、交付、工具组与单一 shell 规则
- 路由看最近真实用户请求:
sessionMode不再取第一条user/message。它逆序找最近一条真实用户实质请求,忽略 plugin/plugin:*/agent-message/model-selection/user-approval 等自动来源,剥离 openviking/runtime 等包装块;Current runtime context按整个多段快照剥离,不会只删标题段后让Current working directory/You are…覆盖真实任务,同一消息包装外的真实请求保留。最近的「继续/好的/可以」等简短应承沿用上一实质任务。新增 consult 带:明确问句(「如何修复这个错误?」「Why create this file?」)即使含 fix/build 等动词也先回答;解释、评审、分析、只读、先给计划不催写代码;明确实施意图仍走 react/spec(例如「按计划实现修复」)。范围限制不是拒绝实施:「只做这个错误的修复」「修复这个错误,不要改其他文件」仍走 spec。没有可靠意图时返回中性weak。英文动词按单词边界匹配,address/prefix/somehow不会误命中 add/fix/how;代码块/引用块不参与判断。 delivery_check收紧为基础交付证据检查:相对路径只按exec.agent.session.header.cwd解析;无会话 cwd、相对 cwd、Windows drive-relative(C:foo)、root-relative(\foo、/foo)及外部平台绝对路径都直接 FAIL,不退到process.cwd()。文件必须是普通、可读、非空文件;未知扩展也验证可读性。文本严格 UTF-8 且超过校验上限直接 FAIL;PNG/JPEG/GIF/WebP 查签名与基本截断,PDF 查头尾;docx/xlsx/pptx 只读 ZIP central directory,校验[Content_Types].xml、_rels/.rels与主文件,拒绝条目 data 覆盖 central directory、本地范围重叠、未消费完的声明区域,不解压、不执行。证据 item 必须有合法 kind、非空 label/result;file/page/image/run/test 需本地普通可读非空 target 并记录 SHA256。图片/PDF/docx/pptx 页面交付至少需要一项 accepted 的page/imageevidence 且reviewed:true;视觉 target 必须是可识别图片并通过签名检查,reviewed:true指向文本日志/HTML 不能冒充截图;xlsx 维持数据/测试证据即可。格式读取异常统一转成 FAIL,不抛出工具异常。所有 PASS 只代表基础文件与证据检查。dev_tool_search支持固定工具组:新增可选groups,保留query/toolNames。固定组为office/repo-files/sessions/team/terminal/memory-write,只从ctx.tools.schemas(exec.agent)的实际作用域目录展开,仅改变可见性、不授予权限。成功解锁的实际 accepted 精确名写入官方tool/result的 tool-privatemeta,冷启动/压缩后按精确名恢复。恢复只信与该会话一条dev_tool_searchcallId 配对成功的 result:其它工具的文本/meta、伪造gate名、无 result 的中断调用都不会解锁;仅tool/call的旧日志无法区分成功与中断,保守保持锁定,需要重新调用解锁。v3.0 固定成功文案仍需配对 call 才恢复。没有agent.session时执行返回accepted: []并明确说明未解锁。搜索说明为「任一关键词命中即评分」。- shell 规则单一来源:
shell-policy.mjs是唯一文案源,persona 只引用它、不再复制表。Windows 通用执行优先 gitbash;Git Bash 不可用时由已验证绑定的 pwsh 处理 Windows 通用任务,pwsh 同时负责 PowerShell 专属命令、.ps1、Windows UI;bash 只用于 Linux-only 工作,绝不作为 Windows 回退;原生 Linux/macOS/Android 用 native shell;ops_bash 只在适用环境能力明确时作为执行入口。目录非法停止,命令失败不换旧 PowerShell/不同 shell,权限拒绝不可越过。该 section 使用 order 10300,位于引擎内置的WEB_SURFACE(10100) 与DEPLOYMENT_PERSONA_SUFFIX(10200) 之后;这一点由真实SystemPrompt组装测试验证,而不只是 mock 的 order 断言。
v3.0.0 重点:全能 ≠ 全量常驻
v2 的「全量工具首轮开放」是给当年不会用工具搜索的 v4 补课。模型换强之后,这笔账变成只付成本:
- 本机 109 个会话、7255 次
tool/call的实测分布:8 个工具覆盖 86.5%,前 25 个覆盖 97.1%; - 目录里约 110 个工具,约四成从未被调用过,却每轮重发 schema。
v3 的做法:
- 常驻核心 29 个(
tool-gate.mjs的DEFAULT_RESIDENT_TOOLS):shell 三通道、文件读写与图像、搜索、任务/交付、技能、记忆读取、交互与目标、后台作业、子代理协作; - 其余全部按需解锁:
dev_tool_search支持关键词搜索全量目录与按精确名解锁,解锁从下一次请求起生效; - 解锁持久可恢复:解锁名写入会话事件,重启/恢复后冷扫描重建(v3.0 固定成功文案需与
tool/call配对;v3.1 起用tool/result.meta.accepted并校验 callId 配对)。只有 call、没有 result 的旧日志无法证明成功,保守保持锁定,需要重新调用dev_tool_search; - 子代理默认不裁剪(
includeSubagents: false),避免被派活的子代理缺工具卡死; - 一键回退:
mode: full回到全量首轮可见,不用卸载插件; - 安全网:门控工具缺失或过滤器异常时自动降级全量,绝不锁死会话。
门控裁的是模型可见 schema,不是权限:被锁的工具直接调用会得到 UNKNOWN_TOOL,解锁后仍走原有审批与沙箱策略。
v2.3.0 重点:中文思考写进系统提示词
「用中文思考」升级为 persona 前缀里的第一条显式规则,不再依赖记忆条目、会话习惯或用户当场提醒:
- 推理、权衡、计划、验证与自我纠错一律用简体中文书写,不得悄悄换成别的语言;
- 代码、命令、文件路径、标识符、被引用的日志与文档正文保持原文语言,不做翻译;
- 对用户可见的回复仍跟随用户语言(用户说中文就用中文)。
complete:false不变,因此该规则与环境段、模型 ID 段、任务模式叠加句共存。- 旧格式
agent.cordis.yml的 persona 同步补上同一条,历史备查文件不再与现版自相矛盾。
v2.2.0 重点
环境简报始终可见
[ENV] 从首轮 user 消息改为 每次请求装配的系统 section:
- 缓存宿主 OS、内核、架构、CPU、内存、用户、home/tmp、可用 shell 候选及路径规则;工作目录按当前会话生成。
- 首次请求等待异步探测完成,不会先发送空环境;重启、恢复、上下文压缩后仍能重新装配,不会碰撞旧
env-brief-*消息 ID。 env_probe可重新采集缓存并显式冒烟测试,可能启动 WSL;常规请求不反复探测。- 明确区分“发现可执行文件”“已验证 PowerShell 版本”和“已实际执行冒烟测试”,未发现 WSL 不再声称 bash 可用。
- 修复旧环境消息被误认成 AGENTS 指令提示的问题,旧会话日志仍可识别。
当前模型 ID,而不是初始模型
[MODEL] 使用 DSH 的 {{model}} / {{provider}},在最终 prompt 渲染时读取当前请求选定的 provider model ID,跟随官方 UI 切换模型。不会读可能过时的 agent.options.model。
这是 DSH 请求路由 ID,不是对反向代理背后实际模型身份的鉴定。
为了保留环境段,persona 使用 complete: false。旧的 complete:true 会让 DSH 丢弃其他系统段,并复原 waterfall 中对 persona 的追加;这一点已用真实 DSH prompt registry 测试。
PowerShell 7 优先、没有 7 才回退默认
gitbash仍是 Windows 通用执行的第一优先。PowerShell 专属操作、.ps1和 Windows UI 自动化使用绑定的pwsh工具;Git Bash 不可用时,绑定的 pwsh 就是 Windows 通用回退(不是 WSL bash)。- 枚举常见安装位置和 PATH,实际校验版本、edition、进程可执行文件路径,将工具 argv 固定到验证后的绝对路径,不只依赖提示词或 PATH。
- 优先稳定 PowerShell 7+,同类选择较高版本,再考虑 preview。
- 没有有效的 7 时回退系统默认 PowerShell(Windows 包括 5.1),简报和工具描述明确显示实际版本、路径及 fallback 状态。
- 绑定后命令执行失败直接报错,不再偷偷换另一个 PowerShell 重试。
- 可选配置
env-probe.config.pwshPath固定一个 PowerShell 7+ 路径。显式固定路径无效时报告不可用,不绕过配置选择其他后端;跨机器通常无需配置此项。
工作目录失败关闭
- Git Bash 的目录作为完整 POSIX 单引号参数传给
cd --;$()、反引号、单双引号、空格和中文保持字面含义。 cd失败立即退出,不执行后续命令。- 显式空值、相对路径、NUL、未知世界报错,不再静默回退到系统目录。
- Git Bash 支持 Windows 绝对盘符、WSL/SMB UNC、MSYS 路径;其他 Linux 绝对路径需要默认 WSL 发行版。
- Windows PowerShell 接受 Windows 绝对盘符/UNC;原生 Linux/macOS PowerShell 接受原生绝对目录。
安装 / 升级
本版在 DSH 0.2.0-rc.2 实测。使用当前支持 bundle、prompt variable 与 section API 的 DSH;不再支持旧 .agent-presets 目录安装方式。
# 从源码目录安装;请替换路径和实际 profile
dsh plugin --profile web add "file:/absolute/path/to/big-fat-whale-maid-adaptive"
# 或安装 GitHub Release 下载的 tgz
dsh plugin --profile web add "file:/absolute/path/to/dsh-preset-big-fat-whale-maid-adaptive-3.1.0.tgz"
- 使用实际宿主对应的官方插件管理 CLI。Electron 的
desktop档须用桌面版自带 CLI 管理。 - Tauri profile 使用真实目录来源,不要用
file:…tgz。 已复现 Tauri 启动清理把 tgz 误判为悬空目录并自动卸载;请先解压到持久目录或使用源码目录,再执行dsh plugin --profile tauri add "file:/absolute/path/to/preset-directory",并保留来源目录。 - 安装完成后重启对应宿主,并选择「DS女仆长模式」。安装文件成功不代表正在运行的旧实例已经热更新。
git pull后须重新安装;本地file:依赖通常是安装快照,不保证自动跟随源码。- 不要直接复制整个 profile 或
node_modules;遇供应链/兼容限制应检查原因,不要默默关闭保护。
维护和安装细节见 AI.md、AIreadme.md。
验证
npm test
# 接入已安装 DSH 的真实 prompt/model-selection/tools registry 服务
DSH_TEST_ANCHOR=/path/to/dsh npm test
# 同时验证这一份本机 PowerShell 7(不执行 WSL 或 5.1)
DSH_TEST_ANCHOR='C:/Users/admin/AppData/Roaming/npm/node_modules/@deepseek-ai/dsh' \
PWSH_RUNTIME_REAL_PATH='C:/Program Files/PowerShell/7/pwsh.exe' npm test
在本 Windows 工作树中,同时设置上述两个变量后共 122 项测试全部执行、0 skip、0 fail。覆盖首轮异步探测、每轮/重启/压缩环境上下文、切模、字面大括号路径、旧指令提示识别、shell 转义与失败阻断、PowerShell 7 选择及默认后端回退;v3.1 另覆盖明确问句/范围限制路由、多段 runtime 快照、交付文件格式/原生 cwd/视觉证据/ZIP 伪造、工具组作用域与 callId 配对恢复、空 accepted meta 的权威性、真实 DSH Tools 注册与 tool-result.meta 持久化、真实 SystemPrompt 的 shell section 顺序。没有真实 DSH 锚点时相关集成用例会显式 skip,不会伪装成已通过。
能力与边界
- 所有已注册且可用工具都在目录里,但首轮只常驻高频核心;其余用
dev_tool_search的query/toolNames/groups解锁。能力齐全不代表所有提供者均已安装、认证;技能按需skill_search/skill_load。 - 保留任务分类、子代理、workflow、goal、计划模式与交付检查工具。v3.1 的路由与
delivery_check行为已更新;mode overlay 只是风格提示,不授予权限,用户请求、计划模式和审批规则优先。 - 档位驱动的呈现只改变「模型看到哪种工具形态」,不改变宿主权限:PTC 程序内的每次工具调用仍走同一套审批、沙箱与作用域可见性;满档的全量可见也只是「已注册且当前作用域可见」的工具,不会绕过任何安装或授权条件。
delivery_check是检查辅助与模型遵守的交付约定,不是不可绕过的安全门禁;PASS 只代表基础文件与证据检查,不代表语义正确、视觉质量、完整格式合规或外部事实真实。page/image 的reviewed只是人工声明,检查器不会真的“看”图;但它会拒绝文本日志/HTML/未知扩展充当视觉 target,并要求图片/PDF/docx/pptx 页面交付至少一项带签名校验的 reviewed 视觉证据。xlsx 只需数据/测试证据。- shell 路由建议不是 OS 沙箱;真实权限、审批、网络边界由宿主、当前账户和 DSH 底座决定。目录非法或
cd失败必须停止,不能因命令失败换 shell。 - 旧
agent.cordis.yml、preset.yml和 bootstrap/gate 源码仅备查,不参与现行组合。改人设、展示名和工具行请编辑cordis.patch.yml。
来源与致谢
v3 的按需解锁是自研门控(tool-gate.mjs:常驻核心 + dev_tool_search + 会话事件持久化),不依赖、也没有恢复首轮锚定与四阶段披露。仍沿用部分通用模块:
- 风神 / dsh-routing-suite:任务分类、模式提示、交付检查。
- 明神 / dsh-anchored-standard:技能按需加载、指令文件提示、epoch 追踪。
完整归属见 CREDITS.md。
版本历史
- v3.2.0:思考强度三档(low/high/max)驱动工具呈现、解锁策略与预算提示;
tool-gate支持运行期与会话级切档;effort-policy.mjs新增档位归一、agent scope 呈现声明与 fail-open 回落;persona 增加「主动汇报进度 / 遇阻立即报告」全局纪律;dev_router_status报告 effort 状态。详见 发行说明。 - v3.1.0:路由改取最近真实用户请求并新增 consult 带(明确问句优先、范围限制仍实施);
delivery_check收紧原生 cwd/可读性/视觉证据/ZIP 边界检查并抽为delivery-check.mjs;dev_tool_search新增固定工具组与 callId 配对恢复;新增shell-policy.mjs统一 shell 路由并追加 order 10300 的靠后系统段;真实 DSH Tools/SystemPrompt 集成测试。详见 发行说明。 - v3.0.0:全能工具面改为「常驻核心 + 按需解锁」(
tool-gate.mjs/dev_tool_search),解锁持久化、子代理不裁剪、mode: full可回退;dev_router_status报告真实门控状态。详见 发行说明。 - v2.3.0:系统提示词(persona 前缀)要求以中文进行思考,旧备查人设同步;其余行为与 v2.2.0 一致。详见 发行说明。
- v2.2.0:可靠系统环境段、实时模型路由 ID、PowerShell 版本验证绑定与默认回退、安全工作目录、精简人设、自包含回归测试。详见 发行说明。
- v2.1.2:修复 DSH v4 会话格式不接受裸
kind: plugin的消息来源问题。 - v2.1.1:预设内部模块改用包内子路径,修复相对路径导致的装载失败。
- v2.1.0:迁移 bundle 格式;存在装载缺陷,应升级后续版本。
- v2.0.1:修复
env_probe引用已更名函数的回归。 - v2.0.0:全量工具开放,独立环境探测和 Git Bash 优先。
- v1.x:历史锚定与渐进披露实现,保留在 Git 历史中。