DSH Preset Enhance
为 DeepSeek Harness 加载和编辑 SillyTavern 预设,在请求发送给模型前按顺序表注入消息,并按 DSH 模式或当前会话控制工具。
安装
从 npm 安装当前 RC 版本:
dsh plugin --profile web add dsh-preset-enhance@0.3.2-rc.1
也可以直接安装 GitHub main 分支:
dsh plugin --profile web add github:bychv/dsh-preset-enhance#main
0.3.2-rc.1 和当前 main 分支面向 DSH >=0.1.5-rc.2 <0.1.6。此版本之后的 alpha 分支将用于 DSH 0.1.6 兼容开发;继续使用 DSH 0.1.5 时请固定安装 0.3.2-rc.1。
重新启动 dsh web 后,左侧栏会出现“预设工作台”,新建对话的模式列表中会出现“预设模式”。
预设注入
工作台可以导入、编辑、预览、导出和删除 SillyTavern 预设。导入后会立即保存到全局预设库并成为当前默认;在预设库中切换选择也会立即更新当前默认。删除仍被默认设置或会话引用的预设时,会自动切换到另一个已保存预设;删除最后一个预设会关闭相关会话的注入。最后选择保存在 DSH 状态目录中,重启后继续使用。当前默认预设会用于自动注入;可以在“新会话自动启用预设注入”中选择任意 DSH 模式。保存模式列表只影响之后新建的会话;已有会话保持原状态。专用的“预设模式”始终自动启用。
当前会话可以使用原生命令即时切换,命令由 DSH 本地处理,不会作为聊天消息发给模型:
/preset on
/preset off
/preset status
直接输入 /preset 会在开启和关闭之间切换。
“预设模式”从当前安装的 standard 模式生成,因此拥有标准模式的工具集。它会移除 DSH 的身份 system prompt 和运行环境快照,使发送给模型的提示词完全由预设和真实聊天记录组成。其他模式保留各自原有提示词,同时可以叠加预设注入。
提示词条目分为两个区域:
- 顺序表内:条目已经参与当前顺序表;复选框只控制是否启用,未勾选的条目仍属于顺序表。
- 闲置条目:条目没有加入当前顺序表,不参与注入;点击“加入”后才会移动到使用区。
支持顺序表中 chatHistory 前后的 system、user、assistant/model 消息,以及按聊天深度注入。支持常用 SillyTavern 变量宏,包括 setvar、getvar、global 变量、数值修改、随机选择与骰子。extensions 会原样保留在预设 JSON 中,当前版本不执行其中的扩展行为。
当编译后的最后一条预设消息是 assistant 时(包括顶层 assistant_prefill,以及预设顺序表在 chatHistory 后安排的 assistant/model 条目),工作台会显示预填充续写提醒,消息预览也会标出 Assistant Prefix。这类预设必须使用支持 assistant prefix 的接口。
可以在“Assistant 预填充接口”面板开启“预填充自动兼容”。插件只处理当前请求中匹配到的末条 assistant 预填充:为最后一条 assistant 消息发送 prefix: true;在思考模式下,把 <think> 前缀和兼容接口使用的 reasoning / reasoning_text 映射到 reasoning_content,并保留工具调用历史中的真实思考内容。
- DeepSeek 官方地址:自动把官方 Chat Completion 地址切到
https://api.deepseek.com/beta。官方 Beta 不接受原生工具字段,因此未开启 DSML 处理时也会移除tools、tool_choice和parallel_tool_calls。 - 非官方适配器地址:直接处理适配器实际请求的 Chat Completion 地址,不改写地址,也不需要在工作台重复填写。关闭 DSML 处理时,可用“非官方接口移除原生工具字段”开关选择移除或原样发送工具字段。
- 工具调用处理开启:对官方和非官方地址都生效。插件把可用工具定义注入 system 提示,把历史
tool_calls和工具结果转换为 DSML,再移除原生工具字段。模型返回的 DSML 会在流式或非流式响应中恢复为标准tool_calls,交回 DSH 执行;工具结果中的常见 base64 图片也会转换为兼容的图片内容块。
“工具调用后继续请求的预填充”默认继承原预设,也可设置独立提示词(支持变量宏与 <think> 前缀)。开启预填充自动兼容时,该设置仅替换同一轮工具执行后继续请求的末条 assistant 预填充;新一轮用户消息仍使用原预设。自定义文本留空或展开为空时继承原预设。设置全局保存,修改后从下一次请求生效。
普通请求、非预填充请求和没有命中当前会话末条 assistant 前缀的请求不受影响。接口要求见 DeepSeek 对话前缀续写文档。
工具预设
工具面板支持两层配置:
- 模式默认:可以为每个可用的 DSH 模式分别开启或关闭工具。没有独立覆盖的会话会继承该策略,保存后从下一次模型请求开始生效。
- 当前会话覆盖:在同一会话中随时改动工具开关,下一次请求立即使用新策略;“恢复继承”会重新采用当前模式的默认策略。
两层配置都可以保存为工具预设,由模式默认或会话选择引用:
- 工具栏提供范围(模式默认/当前会话)、模式和工具预设选择;模式范围只能选择“自定义”或某个预设,会话范围还可以“继承模式默认”。会话选择完整替换模式策略,不与模式默认叠加。
- “新建”从当前有效策略生成预设(
defaultEnabled为true,只保存被关闭的工具),“复制”复制规则和分组引用并生成新 ID,“重命名”和“删除”只影响该预设本身。删除仍被引用的预设时,模式默认回到“自定义”、会话回到“继承”,并保留原有逐工具开关,避免权限突然扩大。 - 修改被引用的预设后,引用它的模式和会话从下一次请求更新;工作台显示该预设“被 N 个模式、M 个会话引用”。
工具分组用于组织和批量编辑:
- 工具区按标签页组织:固定的“全部”“未分组”,以及按排序值和名称排列的用户分组;标签显示
名称 · 已启用/总数,标签栏可收起为紧凑下拉框,窄屏自动使用下拉框。 - 每个分组提供三态开关(部分启用显示为不确定状态)和“全开”“全关”“仅启用此组”“恢复预设值”批量操作;顶部“全选/全不选”始终处理当前模式的全部工具,不受标签筛选影响。
- MCP 工具会从当前会话的实时工具目录获取,并按 MCP 服务自动生成“服务名 · MCP”分组;也可以像普通工具一样加入用户分组。“刷新工具列表”可重新读取刚连接或断开的 MCP 服务。服务名始终放在标签开头,过长时从中间省略并保留首尾,完整名称显示在悬浮提示和折叠下拉框中。标签栏展开时保持单行横向滚动并自动滚入当前项;也可折叠为下拉选择,避免大量 MCP 服务挤压页面。
- “管理分组”可新增、重命名、排序、删除分组,并用复选框分配工具;同一个工具最多属于一个用户分组,未分组的工具显示在“未分组”标签。标签栏/内容区折叠状态、最后配置的模式和“自动保存工具开关”都只保存在浏览器 localStorage(键名以
dsh-preset-enhance.tool-开头),不进入分享文件。
工具视图提供“自动保存工具开关”,默认关闭:
- 开启后,逐工具复选框、全选/全不选、分组三态开关以及“全开”“全关”“仅启用此组”“恢复预设值”等工具开关改动会在约 400 ms 防抖后立即保存(模式默认写入模式,会话覆盖写入当前会话),一次连续编辑只发一个请求,状态栏显示“已自动保存(范围 · 模式)”;页面隐藏或关闭时会尽力再冲刷一次尚未发送的改动。
- 自动保存只覆盖工具开关;“管理分组”中的分组名称、排序和成员结构改动仍需点击“保存分组”。
- 关闭时与手工保存一致:改动需要点击“保存工具开关”。该按钮始终可用,点击时会取消排队中的自动保存并等待在途请求结束,避免同一改动重复提交。
- 开关状态只记在浏览器,不进入分享文件。
工作台会记住最后配置的 DSH 模式(切换模式或保存模式默认工具时记录),刷新页面后优先回到该模式;保存预设、接口设置等其他内容也不会丢弃尚未保存的工具开关草稿。
当前会话的实时目录会同时用于显示与保存校验,因此会话级 MCP 工具、其他插件动态注册的工具可以直接保存到当前会话覆盖,也可以从该会话保存为模式默认。
开发时可用 npm run test:mcp:candidate 运行双 MCP 接入测试。测试会在 candidate 的真实 DSH 工具注册表中启动两个隔离的 stdio MCP 服务,验证两个服务的同名工具都能被发现、分别调用并形成独立分组;测试结束后自动关闭服务,不写入 candidate 配置。
关闭的工具会从发给模型的工具 schema 中移除,执行守卫也会拒绝该工具,避免已有或手写工具调用绕过开关。工具目录通过 DSH 的模式注册表和 standing scope 实时解析;内置模式和其他插件引入的模式都会自动列出,各模式的每个实际工具都能独立开关。若第三方模式本身无法装载,工作台会显示该模式的解析错误。目录中暂时不存在的工具引用会保留并列为“未匹配”,安装对应插件后自动重新匹配。
单文件分享
工作台支持导入和导出单个 .dsh-preset.json 文件,包含完整 ST 预设、预填充接口配置以及工具预设和工具分组。导出时默认只带当前关联的工具预设及其分组,不包含模式默认/会话选择、会话 ID、目录缓存、引用计数或浏览器本地界面状态(折叠、最后模式、自动保存开关)。导入文件本身不会改动接口设置或工具开关:包内接口设置需手动“应用包内接口设置(全局)”,包内工具配置需手动“导入包内工具配置”,应用前会显示新增、复用、重映射和匹配、失配统计。未知的工具子版本仍可导入、编辑和再次导出,但禁止应用。也可用“导出 ST JSON”生成普通预设文件。格式与字段约定见 单文件格式说明。
No comments yet. Be the first to write one.