将 AI 回答中的半角标点转换为中文全角标点,让复制的回答可直接用于公文材料。
安装
# Release 预构建包
dsh plugin --profile web add "https://github.com/addie-ace/dsh-fullwidth-punctuation/releases/download/v0.1.0/dsh-fullwidth-punctuation-0.1.0.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:addie-ace/dsh-fullwidth-punctuation
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
让 DeepSeek Harness 的 AI 回答输出中文全角标点:回答在界面上是全角,用户直接复制回答内容也是全角。面向政务公文、汇报材料等对「标点统一全角」有硬性要求的写作场景。
原理
插件是纯 host 端 Cordis 插件,监听 llm/stream 瀑布(@deepseek-ai/dsh-llm 官方设计的流拦截点),在数据源头把模型输出文本里的半角标点转换为中文全角:
- 模型输出 →
llm/stream拦截 → 转换 → 写入会话存储 → 渲染到界面 → 复制 - 因为转换发生在源头,界面显示、复制按钮、选中复制拿到的都是同一份全角文本。
同时注入一条 system prompt 提示模型尽量输出全角(双保险,减少后处理负担)。
转换规则(智能全角,不破坏代码/数字/链接)
| 输入 | 输出 | 说明 |
|---|---|---|
, ; ! ? |
, ; ! ? |
无条件转换 |
. |
。 |
数字小数点(3.14)、省略号(...)不转 |
: |
: |
时间(10:30)、URL(http://)不转 |
( ) |
( ) |
markdown 链接 [text](url) 内的括号不转 |
" |
“ ” |
配对转换 |
代码块 ``` / ~~~ |
不转 | fenced code 整体跳过 |
行内代码 ` |
不转 | inline code 跳过 |
| 裸 URL | 不转 | http://example.com/a.b 保持原样 |
< > [ ] * # - _ ' |
不转 | 歧义过大,保守保留 |
只转换 AI 的回答文本:不转用户输入、不转工具调用的 JSON 参数、不转推理(reasoning)内容。
安装
# 方式一:本地打包后安装(推荐,离线可用)
cd dsh-fullwidth-punctuation
npm pack # 生成 dsh-fullwidth-punctuation-0.1.0.tgz
dsh plugin --profile web add ./dsh-fullwidth-punctuation-0.1.0.tgz
# 方式二:直接用目录安装
dsh plugin --profile web add ./dsh-fullwidth-punctuation
安装后重启 Web GUI(或重启 dsh web)生效。
卸载
dsh plugin --profile web remove dsh-fullwidth-punctuation
验证
- 运行单元测试:
node --test test/ - 装好后问 AI:「写一段材料,包含逗号、句号、冒号和括号」,观察回答与复制内容均为全角。
- 再让 AI 输出一段代码块,确认代码块内的半角标点没有被改写。
边界说明
- 转换只作用于走标准
llm/stream的模型输出(DeepSeek Harness 的 agent-loop 全部走该路径)。 - 半角双引号
"会被配对成中文引号;英文引文场景如不希望转换,请卸载插件。 - 裸域名(无
http://前缀)中的点号可能被当作句号转换,URL 请写全前缀。 - 首版默认开启,无设置界面;如需开关可后续版本加配置项。
开发
node --test test/ # 运行测试
核心文件:
lib/index.js:host 插件入口(llm/stream监听 + system prompt 注入)lib/fullwidth.js:转换核心(流式安全状态机)
链接
同类插件
tt-a1i/archify#integrations/deepseek-harness★ 85456
从仓库或系统描述生成经过校验的自包含交互式架构图、流程图、时序图、数据流图和生命周期图。
dream-num/dsh-univer-office★ 564
为 DeepSeek Harness 打造一个真正的办公环境。Univer Office 插件将电子表格、文档、幻灯片、画布、多维表格等汇聚到同一个运行时——数据互联、修改经过校验、变更按版本管理,并以隔离工作树支持多 Agent 协作。
PerryLink/dsh-industry-research★ 214
面向 DeepSeek Harness 的确定性行业研究报告:公司与行业研究流程基于分阶段证据产出结构化、可核验的报告。
PolinniZhong/dsh-knit★ 54
把会话工作区里已有的 Markdown 文档、源码、图片与视频列进 DSH 侧边栏,按与当前对话的相关性排序。默认的词法模式用最近几条消息在本地与标题、摘要、正文做带 IDF 加权的匹配(BM25)—— 不调用模型、没有网络出口,内容不出本机。列表来自工作区扫描,而不是「最近打开记录」,所以重启 DSH 或新开会话都不会变空。排序结果组织成主要 / 辅助 / 相关三层的阅读顺序,每一条都写明可核验的理由(命中了哪个字段、被哪一篇引用),点一行即可就地预览:Markdown 按渲染后的样子显示、相对路径图片真实渲染、源码走宿主自带的语法高亮、视频走 HTTP Range 流式播放。同一份 Context Pack 也作为 knit_docs 工具交给 agent。后续版本陆续补上读取证据与生命周期(归因在读那一刻冻结)、固定 / 排除(排除先于检索生效,且可恢复)、关系证据(引用 / 导入 / 测试,带行号)与增量索引(重启后复用)。v0.23 起还多一条可选的混合检索:默认关闭,只有你自己配好 Ollama 或 OpenAI 兼容的 embedding 服务才会生效。它生效时,发出去的是你这句查询原话加上每篇候选文件的标题与摘要 —— Markdown 的摘要取自正文首段(不超过 60 字),代码的摘要是它所在的工作区相对目录,图片 / 视频贡献的是文件名;完整正文与绝对路径都不发送,指向本机服务(loopback)时内容不出这台机器。v0.24 起还能做变更关联:用一条只读的 git status(固定 argv、不走 shell、子进程环境白名单),配合同一套引用 / 导入 / 测试 / 提及证据,指出这次改动大概率该一起看哪些文件 —— 默认关闭。语义检索的收益仍待真 provider 实测,因此不承诺召回提升。
HuanLinOTO/dsh-plugin-mineru★ 47
向模型暴露 MineRU 文档解析工具。
kw78/dsh-office-tools★ 32
面向 agent 的工作区安全 Office 工具集:创建/读取 Word、创建/读取/更新 Excel、创建/读取 PowerPoint,并支持 PNG/JPG/GIF 图片排版。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。