DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

kviiinh /

kviiinh/dsh-plugin-typo-check

Verified

DSH 输入框查错插件:只找错别字并标黄,可一键替换;支持任意 OpenAI 兼容来源、多来源回退、每行可配提示词/max_tokens/思考模式

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@8e849fd6

输入框查错(dsh-plugin-typo-check)

给 DSH 的输入框加一个「查错」按钮:点一下,把当前草稿交给任意 OpenAI 兼容的模型,只找错别字(错字、别字、多字、漏字、同音/形近误用),在输入框里标黄,并在下方浮动卡片里逐条列出,点「替换」一键改掉。不做润色、不改文风、不动标点风格。

它解决的是最实际的一个问题:写了一大段,发出去之后才发现有错别字。


特性

  • 只查错别字,不重写句子;提示词里明确列了「什么不算」(同义替换、语序、口头/书面、繁简、标点风格等)。
  • 任意 OpenAI 兼容来源:…/v1/chat/completions、…/v1/responses(例如 DeepSeek、OpenAI、OpenRouter、各类中转站)都能用;URL 填到 /v1 会自动补 /chat/completions。
  • 多来源 + 顺序回退:表格里可以配多行,按顺序尝试,第一个成功的就用它;全失败时按钮左侧显示「api 无效」,每一行的失败原因都能看到。
  • 每个来源可单独配置:系统提示词、max_tokens、思考模式、模型名都可以按行设置。
  • 不改动编辑器 DOM:标黄用的是 CSS Custom Highlight API(::highlight()),不往 Lexical 里塞节点,输入、撤销、引用 chip 都不受影响。
  • 浮动结果卡片:悬浮在输入框上方,不影响页面布局;发送消息后卡片和标黄一起自动清掉。
  • 密钥不出后端:API Key 只存在本机 JSON 里,页面只看得到前后 4 位的掩码。

安装

DSH 桌面端 → 侧边栏「插件」→ 安装,填入本仓库地址(github:<用户名>/<仓库名>)或本地的 link: 路径。

本地开发时也可以直接把仓库目录链接进 profile 的 node_modules,让 DSH 以 link: 依赖加载。

安装/更新后需要重启 DSH:宿主端(index.js)的改动只有重启才生效;纯前端改动重载页面即可。

配置

插件页 → 找到「输入框查错」这一行 → 打开配置页。表格各列:

列 说明
名称 自己认得出的名字;留空时用 URL 的域名
URL 服务商地址。填 https://api.example.com/v1 会自动补 /chat/completions;填完整地址则原样使用
Key API Key,页面只显示掩码。编辑时留空 = 不修改
模型 例如 deepseek-chat、gpt-4o-mini
系统提示词 默认显示内置提示词。保持原样(或清空)= 跟随内置版本,内置提示词日后更新会自动生效;改过则存成你自己的版本
max_tokens 一次回答的输出上限,64~32000,留空用 2000。太小会把 JSON 截断
思考模式 先想再答,通常更准也更慢。来源不认这个参数(400/422)时会自动退回普通请求
操作 修改 / 删除
启用 关掉的来源不会被尝试
排序 拖动行首的 ⠿ 调整优先级

「添加 / 修改」弹窗里还有一个 测试连接 按钮:用内置的示例句(带一个典型同音错别字)当场跑一次,能连上会显示耗时和查到的词,方便区分「key 不对」「模型不对」「模型不听话」。

使用

  1. 输入框里正常写,写完点工具栏上的「查错」;
  2. 有错别字时会出现浮动卡片:原文 → 建议 + 简短原因;
  3. 点「替换」按当前文本重新定位并改掉(位置会随你之前的编辑重新计算);点「忽略」只从列表里去掉;
  4. 点「重新检查」用当前内容再跑一次;点「收起」清掉结果;
  5. 直接发送消息时结果会自动清空——那段文字已经不在输入框里了。

超过 6000 字只检查前 6000 字(卡片上会注明),一次最多返回 20 条。

模型第一次答「没有错别字」时,插件会自动换一种问法复查一次(空结果通常是小模型扫漏了,不是文本干净)。所以干净的文本也可能多花一次调用;复查也只接受「真查出东西」的答案,不会把原本的空结果变成报错。

数据与隐私

  • API Key 只保存在本机:$DSH_HOME/plugin-data/dsh-typo-check/settings.json(默认 ~/.dsh/...),不会写进工作区,也不会回传给页面。
  • 请求只发往你自己填的 URL:草稿文本会作为用户消息发给你配置的那个服务商,除此之外不发往任何地方。不想让某段文字离开本机,就别对它点查错。
  • 跨站请求会被拒绝:三个本地路由都会校验 Sec-Fetch-Site / Origin,其他网页无法偷偷改写你的来源列表(否则就能把已存的 Key 指向它自己的服务器)。
  • 页面拿到的设置里只有 hasKey 和掩码,没有明文 Key。
  • 没有遥测、没有外部上报。

已知限制

  • 高亮依赖 CSS Custom Highlight API(Chromium 内核的 DSH 桌面端可用)。
  • 替换时如果目标范围里含有 @ 引用 chip,会拒绝并提示,避免把引用删掉。
  • 模型返回的不是约定 JSON 时,会当作「没查出来」或报解析错误;换更听话的模型或调大 max_tokens 通常能解决。
  • 同一来源连续两次检查结果可能略有不一致(模型本身有随机性,尽管 temperature 已固定为 0)。
  • 设置页每次保存都会提交整张表,快速连点两次开关时以最后一次为准。
  • 小模型对「拿不准」的处理差异很大;提示词偏「宁可多报一条」,因此偶尔会有过度报错,点「忽略」即可。

目录结构

dsh-plugin-typo-check/
├── package.json        # bundle 描述:dsh.bundle.patch + dsh.client
├── cordis.patch.yml    # 往 profile 里插入一行 dsh-typo-check
├── index.js            # 宿主端:设置存取 + 调模型 + 定位错别字
├── client.js           # 前端:工具栏按钮、标黄、结果卡片、设置页
├── locale/zh.json      # 插件列表里的标题与描述
├── locale/en.json
├── icon.svg
└── README.md

开发

两端都是纯 ESM/CJS 形态的普通文件,没有构建步骤:

  • 宿主端 index.js 暴露 name / inject / apply;
  • 前端 client.js 通过 window.__ModuleLoader__.load({ id, factory }) 注册插槽。

三个本地路由(同源、JSON):

方法 路径 用途
GET / POST /plugins-local/dsh-typo-check-settings 读取 / 整体写入来源列表
POST /plugins-local/dsh-typo-check-check 检查一段草稿
POST /plugins-local/dsh-typo-check-test 用示例句测试单行配置

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 8e849fd671f7

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout