Bundle
dsh-preset-enhance
SillyTavern prompt presets, macros and editor for DeepSeek Harness
- Source
- bychv
- stars
- 10 stars
- License
- MIT
- Updated
- Updated 15 hours ago
Readme
# DSH Preset Enhance 为 DeepSeek Harness 加载和编辑 SillyTavern 预设,在请求发送给模型前按顺序表注入消息,并按 DSH 模式或当前会话控制工具。 ## 安装 从 npm 安装当前 RC 版本: ~~~powershell dsh plugin --profile web add dsh-preset-enhance@0.3.2-rc.1 ~~~ 也可以直接安装 GitHub `main` 分支: ~~~powershell 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 本地处理,不会作为聊天消息发给模型: ~~~text /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 对话前缀续写文档](https://api-docs.deepseek.com/zh-cn/guides/chat_prefix_completion)。 ## 工具预设 工具面板支持两层配置: - **模式默认**:可以为每个可用的 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”生成普通预设文件。格式与字段约定见 [单文件格式说明](PRESET_FORMAT.md)。
Install
dsh plugin --profile web add github:bychv/dsh-preset-enhance
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-preset-enhance from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.