前言¶
在 DeepSeek Harness Desktop(DSH)里,助手侧消息走 Markdown 渲染,用户自己发出的内容则走 UserText:纯文本、white-space: pre-wrap。你在对话里粘贴一段带围栏的代码时,反引号往往原样显示,没有边框、没有语言标签、也没有高亮。若你经常在用户消息里贴配置片段、命令或脚本,这种体验会和助手回复里的代码块形成明显反差。下面介绍社区插件 dsh-user-code-block(维护者 VictorKozachek,GitHub VictorKozachek/dsh-user-code-block),它只针对用户消息中的围栏块做例外处理,其余链接、@ 提及等仍按内置 UserText 行为工作。
这是什么¶
dsh-user-code-block 是挂载在 DSH 客户端(ui-chat)上的插件:识别用户消息里的 fenced code block,为其加上边框、语言横幅、语法高亮和复制按钮;消息其余部分保持纯文本。运行时无第三方依赖,无需构建步骤。npm 包当前版本为 0.4.0(MIT 许可证)。在 README 中,已在 DeepSeek Harness Desktop 0.2.1-rc.3 上验证;0.1.x 同样暴露文档中的扩展点。任何挂载 ui-chat 的 DSH profile(desktop 或 web)均可使用。
核心功能¶
围栏识别规则¶
插件同步匹配用户文本,规则包括:
- 三个及以上反引号或波浪线构成的围栏;
- 行首最多三个空格缩进(四个空格不再视为围栏);
- info string 的第一个词作为语言标识,例如
```python title=x识别为python; - 四反引号围栏可正确包裹内含三反引号的内容;
- 未闭合的围栏不当作代码块,避免漏写结束符时误把后续文字染成代码。
单行反引号 `inline code` 不处理。
语法高亮¶
颜色来自 DSH 主题已发布的 --shiki-token-* CSS 变量(@deepseek-ai/dsh-client-ui-theme 中的 shiki.css)。亮/暗主题通过 body[data-ds-dark-theme] 切换,插件无需自行探测主题。
高亮由内置小型 lexer 完成,不引入 shiki,也不 import DSH 禁止插件使用的 client primitives。README 列出的语言包括 Python、JavaScript/TypeScript、JSON、Bash、Go、Rust、Java、HTML/XML、SQL、CSS/SCSS 等;各语言着色的 token 类型(关键字、字符串、注释、数字等)以仓库表格为准。
单色模式:围栏语言为 text、txt、plain、output、log、console、terminal、diff、md 时保留边框与语言条,但不着色,适合终端输出与日志。其他未内置 lexer 的语言同样以等宽无高亮文本展示,避免错误配色。
复制按钮¶
代码块标题栏右侧提供 Copy:写入剪贴板的是原始源码,不含高亮 markup。点击后标签约 1.5 秒恢复。若浏览器未授予 navigator.clipboard,按钮不渲染。
扩展点¶
插件通过 ui-chat 文档「Sent user text」所述机制接入:
ctx.uiConversation.userText.register({ id, order, match(text, from) })同步匹配;conversation.user.text.node槽位渲染,key与 matcher 的id一致。
宿主侧 lib/index.js 导出空的 apply(),仅用于在 profile 的 cordis 树中显示插件条目。
安装与启用¶
推荐从 npm 安装到指定 profile(以 desktop 为例):
dsh plugin --profile desktop add dsh-user-code-block
插件管理器会安装包、写入 profile 的 package.json 与 dsh.profile.bundles,下次启动 DSH 后加载;仅刷新页面不会重建客户端模块图。
本地 checkout 也可用 CLI 指向路径:
dsh plugin --profile desktop add /path/to/dsh-user-code-block
README 还说明从源码运行 ./install.sh、手动编辑 package.json 与 node_modules 符号链接等方式;web profile 可通过 DSH_PROFILE_DIR="$HOME/.dsh/profiles/web" ./install.sh 切换目录。卸载可用仓库中的 ./uninstall.sh,或从 dsh.profile.bundles 移除包名并删除对应 symlink。
典型用法¶
安装并重启 DSH 后,在用户消息中发送带围栏的块,例如:
```python
print("hi")
```
预期效果:该段以带框、带 python 语言条的高亮块显示,同一条消息里的普通文字仍为纯文本。对 ```log 或 ```output 类围栏,应看到边框与标签但无语法色。
验证步骤与 README「Verification」一致:发一条含 fenced block 的消息,检查框线、语言横幅及非代码部分是否仍为 plaintext。
适用场景与注意¶
适合:经常在用户消息里粘贴多行代码、配置或命令、又希望视觉与助手 Markdown 代码块一致的 DSH 桌面或 web 使用者。
注意:
- 插件在 客户端 运行,分类为社区目录中的「客户端」插件;DSH 生态强调「一切皆插件」,SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
- 安装前建议浏览 GitHub 源码与 MIT 许可证;插件随当前 DSH 进程与用户 profile 加载,安装来源应可审计。
- peer 依赖
@deepseek-ai/cordis^4.0.2;开发与测试需 Node.js 20+。
结尾¶
dsh-user-code-block 用单一例外补齐用户消息里围栏代码块的展示缺口:高亮、复制、日志类单色模式,且无运行时依赖。若你需要上述能力,可用官方推荐的 dsh plugin --profile desktop add dsh-user-code-block 安装后重启验证。