dsh-better-input
DSH Web 插件:在模型选择器左侧加一个「AI 优化输入」按钮,按可自定义提示词优化输入框内容,并支持撤销。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:youli42/dsh_BetterInput说明文档
阅读完整 README ↗打开插件配置文件(P6.3)
设置页底部有「打开插件配置文件」,一键用编辑器打开本插件的组合层配置 cordis.patch.yml
(就是 package.json 里 dsh.bundle.patch 声明的那个文件)。
-
路径由宿主解析,不是前端拼的:
lib/index.js用自己的模块位置推出包根 (link:安装指向仓库、正式安装指向 profile 的node_modules)。设置页同时把绝对路径 显示出来,方便手动打开或复制。 -
为什么不是简单的"交给系统默认关联":
.yml在不少 Windows 机器上根本没有关联 (本机实测assoc .yml→File association not found),此时explorer.exe只会弹一个「你要如何打开这个文件?」——按钮就变成"点了没反应"。所以给了一条必然可用的候选链:平台 候选(按顺序试,起不来就落到下一个) Windows Code.exe(VS Code 的常见安装位置)→notepad.exe(系统自带,保证可用)macOS open -t(-t= 强制用默认文本编辑器)Linux xdg-openWindows 上刻意不用 PATH 上的
code:那是code.cmd,Node 从 18.20/20.12 起禁止在不开 shell 的情况下 spawn.cmd(EINVAL),而开 shell 又要把路径交给 cmd 解析(引号/&都是坑)。 -
这是一条能力路由(会在宿主上起进程),准入条件与
/optimize同级:必须有浏览器会话, 不能靠本机任意进程触发。 -
失败都有明确提示,且都带上可直接照做的绝对路径:文件不在(404
config-missing)、 平台不支持(501open-unsupported)、全都起不来(500open-failed,附每个候选的错误)。 前端只负责显示提示,不做任何静默失败。 -
真机验收(会真的打开文件):
node .perf/verify-open-config.mjs # status=200 body={"ok":true,"path":"...\\cordis.patch.yml","openedWith":"...\\Code.exe"}
配置参考(cordis.patch.yml 的 config:)
| 字段 | 默认 | 说明 |
|---|---|---|
enabled | true | 总开关;false 时不挂路由 |
systemPrompt | 内置(见 lib/policy.js) | 默认系统提示词(基底);被设置页的自定义系统提示词覆盖。追加提示词不替换它,只接在它之后 |
model.provider / model.model | 省略 | 固定模型路由;必须成对出现。被设置页覆盖;都没配时用宿主当前默认选择 |
presets[].{id,label,prompt} | [] | 预设;请求带 presetId 时其 prompt 追加到 system。id/label 会经 /catalog 下发到输入框旁的 ▾ 菜单(prompt 不下发)。id 命中内置条目(concise/spec)时语义不同:它是那条内置条目的追加文案的组合层默认值(被遗留设置字段与设置页覆盖),且不再列进预设区。见「追加提示词」一节 |
stylePromptConcise / stylePromptSpec(用户设置,非本文件) | 空 | 逐风格提示词,写在设置页里;这里列出来只是说明它压过 presets 里同 id 的那一项 |
maxInputChars | 8000 | 输入字数上限(超限 400) |
maxOutputTokens | 1024 | 输出 token 上限,取值域 1–200000(截断仍返回文本并标 truncated: true) |
timeoutMs | 30000 | 单次调用超时,取值域 1000–600000 ms(超时 504) |
temperature | 不传 | 采样温度,取值域 0–2(缺省交给适配器决定) |
maxConcurrentCalls | 4 | 全局并发调用上限,取值域 1–64。同会话单航班始终生效(第二条得 409),超上限得 429 |
未知字段名、类型错误或超出取值域都会让启动失败并报出字段名(fail loud,避免「拼错字段却以为生效了」,
也避免 AbortSignal.timeout 超范围时每次请求都 502)。
这项配置是组合层:设置页里的用户值优先于它,改它需要重启 dsh web(patchReload: live 会重载 patch,但插件自身的 Node 代码不热重载)。