dsh-prompt-customizer
其他 活跃维护

dsh-prompt-customizer

DreamsTOF/dsh-prompt-customizer

支持对提示词段执行屏蔽、替换、注入、排序操作,可设置工具黑白名单隐藏对应工具,预设支持保存、应用、导出、导入,所有配置均可通过设置面板完成。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
TypeScript
主要语言
MIT
开源协议
79 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:DreamsTOF/dsh-prompt-customizer
git clone https://github.com/DreamsTOF/dsh-prompt-customizer.git
git clone git@github.com:DreamsTOF/dsh-prompt-customizer.git
README.md main

dsh-prompt-customizer

English | 简体中文

一个 DeepSeek Harness (dsh) 插件,让你通过设置面板 UI 控制系统提示词工具目录

其他插件注入的提示词段可能会污染你的系统提示词。本插件让你可以按名称屏蔽替换注入排序提示词段,并从模型目录中隐藏工具——全部实时生效,无需改动其他插件。

功能特性

  • 提示词段
    • 屏蔽指定名称的段(从组装后的系统提示词中移除)。
    • 替换某段的文本(编辑时会回显原始文本,包括动态生成的段)。
    • 注入全新的段。
    • 通过 ↑/↓ 箭头拖拽(HTML5)排序。顺序以虚拟的 0 起始下标存储,因此不会出现重复或小数 order。
  • 工具
    • 黑名单exclude):隐藏列出的工具。
    • 白名单include):仅保留列出的工具(优先于 exclude)。
    • 只影响面向模型的目录,工具与路由仍正常工作。
  • 预设
    • 保存当前定制为预设(完整快照)。
    • 应用预设:同名段被覆盖、预设独有段被添加、预设名单之外的当前段默认被屏蔽。
    • 导出 / 导入预设为 JSON(完整快照)。
    • 预设存储相对顺序(每段记录它跟在哪个段之后),因此可跨不同段集合的提示词移植。
    • 本地可保存多个预设,同一时间只能激活一个。

安装

从 npm 安装(将 web 换成你的 profile 名):

dsh plugin --profile web add dsh-prompt-customizer

或从本地目录安装:

dsh plugin --profile web add /path/to/dsh-prompt-customizer

安装后,打开 dsh Web UI → 设置 → 侧边栏中的 提示词定制

使用说明

提示词 Tab

每一行代表一个提示词段,包含:

  • 复选框:屏蔽 / 取消屏蔽。
  • 替换按钮:编辑该段文本(默认回显原始文本)。
  • ↑/↓ 箭头拖拽手柄:调整顺序。
  • #N 徽标显示该段的虚拟顺序(0 起始的位置)。

底部的 注入新段 区域可按名称、顺序和文本添加全新段。

工具 Tab

勾选工具以隐藏(黑名单),或切换到白名单模式仅保留勾选的工具。

预设 Tab

  • 保存当前为预设:捕获当前的提示词 / 工具定制。
  • 应用:激活某个预设(覆盖同名段、添加预设独有段、屏蔽预设名单之外的当前段)。
  • 导出:将预设下载为 JSON。
  • 导入:加载预设 JSON 文件(同名预设会被跳过)。

配置

插件配置存储在 dsh 设置文档的 prompt-customizer 命名空间下(~/.dsh/settings.yaml)。你也可以直接编辑:

prompt-customizer:
  # 按名称屏蔽这些提示词段。
  sections:
    - plugin:some-plugin
  # 按名称替换某段文本(保留原始顺序)。
  replace:
    system: 'You are a helpful coding assistant.'
  # 注入 / 覆盖段(名称 + 顺序 + 文本)。
  inject:
    - name: tool:read
      order: 0
      text: ''
  # 工具目录过滤。
  tools:
    exclude: []
    include: []
字段 类型 说明
sections string[] 要屏蔽的提示词段名称。
replace Record<string, string> 每个段名称对应的替换文本。
inject {name, order, text}[] 要注入或覆盖的段(order 控制拼接位置)。
tools.exclude string[] 要隐藏的工具名称。
tools.include string[] 非空时仅保留这些工具(优先于 exclude)。

开发

npm install
npm run check   # typecheck + build

浏览器端使用 tsdown 打包为 client/client.js__ModuleLoader__ factory bundle)。宿主端代码位于 lib/

已知限制

  • 替换动态生成的段会固定其生成内容:像 app:web-surface 这类段在装配时实时生成(如嵌入当前 Web 服务器 URL)。替换后,文本会固定为您编辑时的值,不再随端口等运行时状态自动更新;如需跟随运行时变化,请勿替换该段,改用屏蔽。
  • 动态文本解析是尽力而为:面板读取动态段时会尝试调用其生成函数并传入最小上下文,以便回显真实内容。个别依赖更复杂上下文、调用时会抛错的动态段会回退显示 <动态生成>,不影响其余功能。

License

MIT © 2026 DreamsTOF