dsh-better-inputDeepSeek Harness plugin

BetterInput是一套输入增强套件:语音识别、提示词优化、输入更多文件类型,各类文件转Md,交互体验优化等——把每一种喂给智能体的输入都变得更好。BetterInput is an input-enhancement suite — voice recognition, prompt optimization, more file types, everything-to-Markdown conversion, and UX refinements — making every input you feed an agent better.

Stars
24
Forks
4
License
MIT
Last commit
Sep 1, 2026
Latest release
v0.2.0

Overview

BetterInput是一套输入增强套件:语音识别、提示词优化、输入更多文件类型,各类文件转Md,交互体验优化等——把每一种喂给智能体的输入都变得更好。BetterInput is an input-enhancement suite — voice recognition, prompt optimization, more file types, everything-to-Markdown conversion, and UX refinements — making every input you feed an agent better.

Original README

Cached from the project repository on Sep 3, 2026. This is source content, separate from the Agents.md review above.

View source

dsh-better-input banner

🎤 dsh-better-input

给 DeepSeek Harness 更好的「输入」体验。

开源输入体验增强插件 · BetterInput for your DeepSeek Harness agent

English · 简体中文

npm version npm downloads DSH MIT Changelog

💡 它解决什么? 与智能体对话,输入不只靠键盘打字。BetterInput 是一套输入增强套件:语音识别、提示词优化、提示词模板随用随插、更多格式的本地文件输入与转 Markdown,再到交互细节都打磨的体验优化——把每一种「喂给智能体的输入」都变得更好


🎬 功能演示

https://github.com/user-attachments/assets/caae08fc-2d8e-43c6-8bab-ade2d278337f

V0.1.5 版本四大功能演示

✨ 目前已实现

模块说明
🎙️
语音输入
点击麦克风,边说边转写,文字实时流式进入输入框。浏览器原生识别,无需 API Key
🤖
AI 润色
识别后自动清理:去口头禅、修同音错字(根木鹿→根目录、脱肯→Token)、补标点、把口语列举转成编号列表。复用 dsh 已配置的模型,无需额外 Key

提示词优化
输入框右上角一个图标,AI 帮你把写好的提示词优化得更精准;点击后弹出原文 / 优化结果对比,确认满意再采用。复用 dsh 模型,无需额外 Key。
📝
提示词模板
常用提示词存成模板,输入框键入 / 搜索并一键插入正文;设置页内新建 / 编辑 / 删除,本地存储不经服务器。
📎
更多文件格式输入
输入框右上角「添加文件」按钮(默认收起)。把本地文件带进输入:纯文本(.txt / .json / .py / .md 等)可直接发送;文档类先转换再以 @<文件名> 引用芯片插入输入框。不带转换需求也能引入非工作区文件。
🔄
文件转 Markdown
把 PDF / DOCX / XLSX / PPTX / HTML / EPUB / CSV / JSON / XML 等转成结构清晰的 Markdown,发送时自动展开成正文;转换结果可二次编辑。
🐘
防覆盖保护
润色进行中你手动改了草稿,结果不会覆盖你的编辑;失败保留原文。
🔄
更新检查
设置页底部「关于与更新」一键检测 npm 最新版,发现新版会给出一键复制更新命令,让你及时跟进修复与新功能。
⏱️
录音自动停止
可自定义单次录音上限(1–600 秒),不占麦克风。
⚙️
可视化设置页
识别语言、录音时长、语音润色开关、以及润色 / 优化的模型、思考强度、自定义提示词,全部可在设置里配置;内置提示词可一键展开查看。默认已开启并自动选中主模型。

🗺️ 下一步(输入增强的方向)

BetterInput 是一套完整的输入增强套件:不只是某一类输入,而是让喂给智能体的每一种输入都更顺、更省心。语音已经就位,接下来围绕三个方向展开:

文件 → 结构化(输入格式升级)

📷 图片输入:DSH rc.8 起已原生支持。DeepSeek API 已原生支持图片输入,不再提供图片相关的插件功能

把文稿、表格、演示文件一键转成结构清晰的 Markdown,让 AI 一看就懂。

  • 🧾 PDF 转结构化 — PDF → AI 友好的易读格式(Markdown / 纯文本)
  • 📄 Office 文档解析 — DOCX / PPT / XLSX 一键转成清晰的 Markdown 结构
  • 🎬 音视频转写 — 粘贴本地音视频文件 → 转成文字(语音输入的进阶)

文字 & 提示词

  • 提示词优化 — 输入框旁点一个图标,AI 帮你润色/优化写好的提示词,让提问更能命中
  • 📝 提示词模板库 — 输入框键入 / 搜索并插入常用模板(写代码 / 总结 / 翻译 / 角色扮演…)
  • 🧹 文本清洗 — 粘贴乱码 / 带行号 / 时间戳的文本,自动整理成干净正文
  • 🔤 即时翻译 — 写中文一键转英文给 AI(或反之)
  • 📋 智能粘贴 — 粘贴自动识别是代码 / 表格 / URL / 引用,智能包裹成合适格式

交互体验优化

输入不只是功能,也讲究好用与美观——把交互细节打磨到位。

  • 🎚️ 思考强度滑块 — 已移除;如需滑块式推理强度调节,可安装 @HanaAyane/dsh-reasoning-effort
  • ✍️ 半自动补全 — 输入时基于上下文给出续写建议,可一键采纳
  • 🧮 变量填充 — 输入框里用 {{日期}}{{当前目录}} 等变量自动替换

以上按主题规划,会持续迭代。有想法欢迎提 Issue / PR,一起把它做成更好的输入套件。

💭 关于设置里的开关:对于改动 DSH 核心自带插件的功能,在设置界面里再加一个开关其实是多此一举——如果一个功能原则上可以剥离出去作为一个独立插件,那就应该通过安装 / 卸载来开关,而不是在 BetterInput 设置里多一个 toggle。所以本插件不再为核心功能的开关买单:凡是可以剥离出去的功能,BetterInput 都已经剥离出去了,需要时单独安装对应插件,不需要就卸载即可。

🚀 安装

前置:DeepSeek Harness>= 0.1.0-rc.8)+ Node.js ^22.19.0 || >=24.0.0 + Chrome/Edge 浏览器。

💡 两种方式,任选其一。 装过 dsh CLI 的用短命令;没装或不想全局安装的,用下方 npx 全称——不需要任何全局环境配置。已发布到 npm

方式 A:有全局 dsh CLI

sh
# 从 npm 安装(推荐)
dsh plugin --profile web add dsh-better-input

# 或从 GitHub 仓库安装
dsh plugin --profile web add github:DIAG5/dsh-better-input

# 卸载
dsh plugin --profile web remove dsh-better-input

方式 B:没有 dsh,或不想全局安装(npx 全称)

下面的命令用 npx 直接运行 dsh CLI,不写入全局环境,临时拉取即可用:

sh
# 从 npm 安装(推荐)
npx -y @deepseek-ai/dsh plugin --profile web add dsh-better-input

# 或从 GitHub 仓库安装
npx -y @deepseek-ai/dsh plugin --profile web add github:DIAG5/dsh-better-input

# 卸载
npx -y @deepseek-ai/dsh plugin --profile web remove dsh-better-input

-y 表示自动确认下载;首次运行会拉取 dsh CLI,之后有 npx 缓存。

从源码安装(开发)

sh
git clone https://github.com/DIAG5/dsh-better-input.git
cd dsh-better-input
npm install
npm run build
# 有全局 CLI:
dsh plugin --profile web add "$PWD"
# 没有全局 CLI:
npx -y @deepseek-ai/dsh plugin --profile web add "$PWD"

备选:不装依赖,写进 preset 的 cordis.yml

如果你已经在用某个 agent preset,只需要加一行(无需跑安装命令):

yaml
- insert:
    - id: dsh-better-input
      name: dsh-better-input

安装后刷新 Web UI,输入框右侧会出现麦克风图标 🎤。

📖 使用

1. 语音输入

  1. 打开任意对话,点击输入框右侧的麦克风按钮
  2. 开始说话,识别文字实时流入输入框
  3. 再点按钮(或识别条上的停止)结束
  4. 检查、修改、发送

识别完全在浏览器本地完成(Web Speech API),无需 API Key、无服务器往返。Firefox/Safari 不支持时按钮自动禁用。

2. AI 润色

设置 → BetterInput → 打开 AI 润色 → 选择一个 dsh 里已配置的模型。

内置提示词会:去口头禅、修 ASR 同音错字、补标点、把口语列举转成编号列表(如「第一…第二…」→ 1. 2.)。留空用内置提示词,点「查看内置提示词」可展开原文;或粘贴自定义提示词(总会追加输出契约保护,保证只返回正文、不答非所问)。

3. 提示词优化

  1. 在输入框里写好你的提示词
  2. 点击输入框右上角的 ✨ 优化 图标
  3. 稍等,弹出原文 / 优化结果对比画面
  4. 采用 用优化结果替换草稿,或点 取消 保留原文

默认关闭思考,追求快速、低成本的直出结果。从设置页可手动提高思考强度以获得更深层的优化。

4. 提示词模板

把常用的提示词(写代码 / 总结 / 翻译 / 角色扮演…)存成模板,随用随插:

  1. 到 设置 → BetterInput → 「提示词模板」分节,点「新建模板
  2. 填写名称、描述(可选)、正文与标签(可选,逗号分隔,用于搜索),保存
  3. 回到输入框键入 /,模板候选即弹出;继续输入按名称 / 描述 / 标签实时过滤
  4. 选中候选,模板正文直接插入输入框,可继续修改后发送

模板保存在宿主本地 ~/.dsh/better-input/templates.json,不经服务器、不上传;最多 200 个模板,正文上限 8000 字,列表按最近更新排序。

5. 添加文件 / 文件转 Markdown

  1. 点击输入框右上角的 📎 添加文件 按钮,展开文件面板(再点收起)
  2. 点击「添加文件」挑选文件(可多选),文件会以小标签列在面板里
  3. 纯文本文件.txt / .md / .json / .py 等)会直接标记 ✓,输入 @ 即可选入发送,无需转换——这是「更多文件格式输入」的能力
  4. 文档文件.pdf / .docx / .xlsx 等)点击「开始转换」——这是「文件转 Markdown」的能力:
    • 转换成功后标记 ✓
    • 输入框里敲 @,从候选中选择该文件,插入成 @<文件名> 引用芯片
    • 发送时该芯片自动展开成转换后的 Markdown 正文
    • 面板里保留「编辑」按钮,可二次修改转换结果
  5. 不需要的文件点 × 移除

转换在本地通过内置解析完成(PDF / Word / Excel / PPT / EPUB / HTML / CSV / JSON / XML 等),生成的 Markdown 随消息发送给 AI,方便它快速读懂文档内容。

6. OCR 视觉识别(扫描 PDF / PPT)

针对没有文本层的文档——如扫描件 PDF、图片型 PDF、只有图片没有文字的 PPT——普通转换只能抽出有限或空的文本。此时可用 OCR 让视觉模型直接「看图识字」:

  1. 先到 设置 → BetterInput → 选一个「OCR 视觉模型」(需支持图片输入的视觉模型,独立于润色模型)
  2. 添加 .pdf / .pptx 文件后点「开始转换」,会询问「是否使用 OCR」
  3. 选「使用 OCR」:PDF 逐页渲染成图片、PPT 抽取内嵌图片,逐张交给视觉模型转为 Markdown
  4. 选「普通转换」则仍走内置文本层提取

未配置 OCR 模型时点「使用 OCR」只会弹出中性提示引导去设置页,不会报红错;若所选模型明确声明不支持图片输入,会提前提示更换,避免无效的空白结果。

7. 检查更新

  1. 打开设置 → BetterInput → 拉到最底部「关于与更新」分节
  2. 点击「检查更新
  3. 若发现新版本,会显示 当前版本 → 最新版本,并给出更新命令
  4. 在终端执行更新命令即可升级(按你的安装方式二选一):
    • 已全局安装 dsh CLI:
      sh
      dsh plugin --profile web update dsh-better-input
    • 未全局安装,改用 npx:
      sh
      npx -y @deepseek-ai/dsh plugin --profile web update dsh-better-input

说明:DSH 不会在你进入时自动更新第三方插件,需手动执行上面命令才会拉到新版。这个分节就是帮你及时发现并跟进更新。

8. 设置

设置项说明
界面语言插件界面文案支持中文 / 英文,跟随 DSH 界面语言一键切换,即时生效
识别语言留空自动跟随浏览器语言(如 zh-CNen-US
单次录音上限1–600 秒,默认 120,到点自动停止
AI 润色开/关;开启后每次语音识别结束自动润色进草稿
润色模型选择 dsh 已配置的模型路由
润色思考强度默认关闭思考;可选模型支持的更高档位
自定义润色提示词可选,替换内置提示词
提示词优化开/关;开启后输入框右侧显示 ✨ 按钮
优化模型选择 dsh 已配置的模型路由
优化思考强度默认关闭思考;可选模型支持的更高档位
自定义优化提示词可选,替换内置优化提示词
OCR 视觉模型选择用于识别扫描页 / 内嵌图片的视觉模型;独立于润色模型,未选择时无法使用 OCR
提示词模板设置页内新建 / 编辑 / 删除模板(名称、描述、正文、标签),数据保存在宿主本地 JSON 文件
关于与更新显示当前版本 / 许可证 / 仓库,一键「检查更新」获取最新版与更新命令

润色与优化的模型、思考强度、提示词相互独立,可各自配置。

🧩 兼容性

  • DeepSeek Harness >= 0.1.0-rc.8
  • Node.js ^22.19.0 || >=24.0.0
  • Chromium 内核浏览器(Chrome / Edge)

🛠️ 开发

sh
npm install
npm run check    # 类型检查
npm run build    # 构建 lib/(Host ESM + 浏览器 bundle)

改 Client 端:npm run dev:watch 后刷新 UI;改 Host 端:重启 dsh web。

🏗️ 架构

  • src/index.ts — Host 插件入口,挂载润色服务
  • src/polish/service.tsBetterInputPolishService(Typert remote):设置、dsh 模型路由发现、LLM 润色与提示词优化、文件转 Markdown(convertFile,复用 ctx.llm)、提示词模板存取(templatesList / templatesSave / templatesRemove
  • src/templates/ — 提示词模板的数据模型与宿主端 JSON 存储(原子写入、损坏自愈)
  • src/converter/ — 纯 TypeScript 文件→Markdown 转换层(PDF / DOCX / XLSX / PPT / EPUB / HTML / CSV / JSON / XML / ZIP),仅在 Host 端打包
  • src/about.ts — 插件身份读取与 npm 版本检查(「关于与更新」)
  • src/client/ — 浏览器端:麦克风/优化/选择文件按钮(conversation.input.right)、识别条/文件面板(conversation.input.dock)、设置页与模板管理(settings.section)、@ 引用芯片源(conversion-source)、/ 模板候选源(input trigger)
  • src/typert.ts / src/remote.ts — Client↔Host 类型化通信契约

📄 License

MIT


⭐ 支持

这个插件正在从「语音」走向「完整的输入增强套件」——觉得它值得期待?

  • 点个 Star ⭐(你的收藏就是持续迭代的动力)
  • 提交 Issue / PR
  • 分享给同样用 DSH 的朋友

感谢你的支持 ❤️