Install the "Liang Shen Mode" two-stage anchoring agent preset for DSH: the first round only exposes the official Minimal dual-tool guided reasoning trajectory, then switches to PTC Mode after anchoring to unlock all tool capabilities.
$ dsh plugin --profile web add github:zhu1090093659/dsh-web-ui/packages/dsh-liangshenRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
把「Anchored Standard」思路做成 DSH 全家桶里的一键安装插件:宿主进程启动时把内置预设同步到 ~/.dsh/.agent-presets,新建会话在预设选择器里选择「梁神模式」即可启用。会话首轮只暴露官方 Minimal 预设的双工具(持久 bash + str_replace_editor)和一行 persona,把模型的执行轨迹锚定在 Minimal 上;锚定建立后自动切换到 PTC Mode(单一 run_code 工具),恢复完整工具能力,全程不需要手动配置。
~/.dsh/.agent-presets/liangshen),让新会话能在预设选择器里直接挑到「梁神模式」,升级插件后下次重启即自动更新we 且无 let me」的门控(或四步兜底、无工具首轮响应后自动晋升)切换到 PTC Mode:单一 run_code 工具,完整工具注册表通过生成 SDK 调用plan:policy),在 persona 末尾追加所选工作区路径,并把 workspace 指令与 skill 目录延迟一步注入,避免工具目录切换与注入冲击同帧落地tools/analyze-session.mjs 离线分析器,可在不读原始 reasoning 的情况下测量会话的轨迹标记(we / let me / let's / I)与晋升边界.mjs(预设本身的运行时逻辑)@deepseek-ai/cordis(cordis 插件运行时)、@deepseek-ai/dsh-system-prompt(prompt section 注册)、schemastery(Config schema)inject: ['systemPrompt'] 等待 prompt 装配就绪后注册宣告段;预设以 presets/liangshen/agent.cordis.yml 形式挂入宿主 .agent-presets 目录,由宿主预设加载器解析;核心两阶段逻辑在预设内的 tool-bootstrap.mjs,通过 system-prompt/assemble / agent/pre-step / agent/request 钩子实现工具目录裁剪、消息白名单与 maxTokens 封顶src/index.ts(cordis 插件宿主入口)+ presets/liangshen/agent.cordis.yml(预设清单)+ presets/liangshen/tool-bootstrap.mjs(两阶段锚定核心逻辑)希望在 DeepSeek V4 Pro 上稳定复现「首轮即按 Minimal 风格作答、随后解锁完整能力」这一轨迹形态的普通用户与高级用户。当标准预设或 PTC Mode 在首轮任务上效果不佳、又不想长期停留在仅有两个工具的 Minimal 状态时,这个插件提供了一条中间路径:首轮精确对齐 Minimal 的字节级表面以稳定轨迹,锚定后自动回到 PTC Mode 的完整能力。
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 0.1.0-rc.5+ | 需要 preset 机制与 system-prompt/assemble 钩子(README.md:80) |
| Node | ^22.19.0 或 >=24.0.0 | 来自 package.json 的 engines;低于 22.19 存在非 ASCII 路径下 fs.cpSync 崩溃的 Node 22 回归(src/sync.ts:104-113) |
| 平台 | macOS / Windows / Linux | macOS 与 Linux 走持久 PTY shell;Windows 改用 custom-bash.mjs(Git Bash),状态不持久、无 OS 沙箱(presets/liangshen/agent.cordis.yml:112-149) |
| 原生模块 | 无 | 仅使用 node:fs / node:path / node:os 等内置模块 |
dsh plugin --profile web add github:zhu1090093659/dsh-web-ui/packages/dsh-liangshen
插件宿主层的开关(写在宿主 agent.cordis.yml 的 liangshen row config 段):
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
enabled | 布尔 | 总开关;关闭后既不同步预设也不宣告插件存在 | true |
announceToAgent | 布尔 | 是否向模型注册一段 system-prompt 宣告插件的工作原理与限制 | true |
预设内 tool-bootstrap 段的可调参数(修改后需重启宿主才生效,默认值已对应实测高命中窗口):
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
shellTools | 字符串数组 | phase-1 暴露的持久 shell 工具名 | [bash] |
commonTools | 字符串数组 | phase-1 暴露的另一个常驻工具 | [str_replace_editor] |
messageSources | 字符串数组 | phase-1 放行的消息来源(用户消息 + goal 自动轮次;移除 goal 会触发 #578 死锁) | [user, goal] |
anchorGate | 布尔 | 首次 tool/call 后是否等待首个 minimal-like 推理块才晋升 | true |
maxBootstrapSteps | 数字 | 锚定门控无果时的兜底晋升步数 | 4 |
promoteAfterFirstResponse | 布尔 | 首轮无工具调用的响应在发出后立即晋升;锚定门控会话也会在首轮 turn/end 释放 | true |
bootstrapMaxTokens | 数字 | phase-1 请求的输出预算封顶;晋升后自动剥离,避免影响后续请求 | 1024 |
compactionTools | 字符串数组 | 压缩后到下次晋升前暴露的核心工作集 | [read, write, edit, glob, grep, todo_write, ask_user_question] |
deferredSources | 字符串数组 | 晋升后延迟注入的消息来源 | [agent-instructions, skill-catalog] |
deferredGraceSteps | 数字 | 晋升后上述来源延迟注入的步数 | 1 |
promotedPresentation | 字符串 | 晋升后工具目录的呈现形式(code 即 PTC Mode 单 run_code) | code |
instructionHint | 布尔 | 晋升后用非命令式 hint 替代 AGENTS.md 全文注入(issue #388);关闭则恢复旧版全文注入 | true |
phase1FirstCallInstruction | 字符串 | 追加到 phase-1 persona 的可选指令;启用后偏离字节级 Minimal 表面,故默认关闭 | 未设置 |
Q: 梁神模式和官方 Minimal 预设是一回事吗?
A: 不是。Minimal 只保留两个工具但牺牲了完整能力;梁神模式是「两阶段」方案,首轮精确对齐 Minimal 的字节级表面以稳定执行轨迹,锚定后自动切换到 PTC Mode(单一 run_code 工具)恢复完整工具能力。
Q: 工具目录什么时候会变化?
A: 仅变化一次:会话出现首次持久 tool/call 并通过锚定门控(首块推理含 we 且无 let me,四步兜底),或首轮响应未调用任何工具即晋升。晋升后所有请求都呈现为 PTC Mode(单一 run_code)。因此第一与第二次请求之间会发生一次前缀缓存失效。
Q: 支持 Windows 吗?
A: 支持。Windows 上 DSH 的 PTY 后端不可用,插件会自动改用 custom-bash.mjs(通过普通跨平台子进程通道调用 Git Bash),仍注册同名 bash 工具;但 Windows 下 bash 状态不在调用间持久,也没有操作系统沙箱保护(README.md:17)。bashPath 可显式覆盖 Git Bash 推断路径。
Q: 如何验证插件确实生效?
A: 导出 session JSONL 检查 request/header:首份 header 应只含 bash/str_replace_editor;首次工具调用后变更的 header 应恰好为 run_code(PTC)。也可运行仓库自带的 node tools/analyze-session.mjs <session.jsonl> 自动汇总轨迹标记(we / let me / let's / I)与晋升边界。
Q: 怎么卸载?
A: 运行 dsh plugin --profile web remove @linxin666/dsh-liangshen 并完整重启 dsh web。如果此前装过 dsh-web-ui-all 聚合包,两边都会挂载同一份预设,需要先 remove 另一个再装这一个,避免双源挂载冲突(README.md:43-45)。
Q: 安装后需要做什么手动配置吗?
A: 不需要。插件宿主启动时自动把 presets/liangshen 同步到 ~/.dsh/.agent-presets,新建会话在预设选择器里选「梁神模式」即可。
Q: 可以在已有内容的会话中途切换到这个预设吗?
A: 不建议。预设的工作原理是把会话首轮的请求轨迹锚定到 Minimal 上,已产生内容的会话没有「首轮」可言,切换可能不会按预期生效(README.md:79)。
Q: 插件会发起网络请求或收集遥测数据吗?
A: 不会。源码与文档均明确插件不发起网络请求,也不增加遥测(README.md:78)。
入门 — 装好插件后只需在新建会话的预设选择器里选「梁神模式」,无需编辑任何文件或命令行参数。
custom-bash.mjs(Git Bash),调用之间不保留状态,也没有操作系统级沙箱保护(README.md:17 / agent.cordis.yml:139-149)。phase1FirstCallInstruction(默认关闭)要求模型先做一次 grounding 工具调用,或首轮直接问任务类问题(README.md:75)。messageSources 中必须保留 goal:若把 /goal 自动轮次从白名单中移除,会因过滤后没有响应/工具调用触发任何晋升分支,导致 goal 的 resume/pause 循环死锁(issue #578,tool-bootstrap.mjs:80-83)。instructionHint 默认开启:issue #388 决定用非命令式 hint 替代晋升后的 AGENTS.md 全文注入;若你显式关闭以恢复全文注入,需要注意它会翻转已锚定的轨迹(agent.cordis.yml:85-91)。~/.dsh/.agent-presets,安装前可自行审阅 presets/liangshen/;插件不修改 DSH 源码(README.md:77)。