DeepSeek Harness (DSH) 采用了插件化架构。在常规对话中,默认的输入框足以满足需求。但在处理 Markdown、代码块或需要精确缩进的场景时,传统输入框的交互限制会变得明显。DSH-Codinput 修改了 conversation.composer.bar 槽位,将聊天输入框替换为类似代码编辑器的面板,提供更接近编辑器的输入体验。
核心功能¶
插件通过接管宿主的原有槽位,提供以下能力:
- 三态单实例:输入入口只有三种形态,任一时刻恰好一个,绝不与官方输入框共存。
- 普通模式:默认接管卡片在原输入位。
- 悬浮模式:按住卡片顶部行空白区拖动。脱出为悬浮窗,可拖动位置与尺寸,位置与尺寸会被记忆。
- 侧栏模式:打开右侧栏的「Codinput」标签。侧栏收起时不让位,由标题栏下方的圆形小球唤回。在侧栏里输入
/codinput可直接退回官方输入框并关闭本标签。
- 编辑器式输入:基于 CodeMirror 6。支持行号(可关)、当前行与行号高亮、软换行、Tab 缩进、行列指示。
- 编辑与预览分屏:支持 Markdown 实时渲染,严格对半分屏显示。
- 撤销历史跨形态保留:拖成悬浮、切到侧栏再回来,
Ctrl+Z依旧有效。三态共用同一台官方输入机,草稿即唯一事实源。 /@触发管线:完全走官方链路(track → 官方 menu store → 逐项复刻的 MenuView)。候选菜单、钻取、crumbs 与官方逐一对齐。- 模型与权限读取:模型与思考强度读官方共享目录(与
/model同一状态源);权限为官方三预设,含完全权限的风险确认模态。 - 附件支持:支持 slash「添加 · 文件」、粘贴图片、拖文件进卡片。点图片缩略图可弹原图预览。
- 语音输入同步:官方桌面版的输入框带语音按钮时,Codinput 在一模一样的位置渲染一模一样的按钮。
- 性能与用量:复刻官方 stats dock。显示轮次/步数 · tok/s、累计 tok · 缓存命中、上下文占用小圈。
安装与启用¶
使用官方包管理器安装,一条命令即可完成:
dsh plugin --profile web add dsh-codinput
安装后启用。设置 → Codinput 中可配置启用接管、行号、字体、快捷键等。未启用时,打开右侧栏的 Codinput 标签即直接启用。
典型用法¶
- 切换悬浮模式:按住卡片顶部行空白区拖动。
- 切换侧栏模式:打开右侧栏的「Codinput」标签。
- 退出侧栏模式:在侧栏里输入
/codinput。
注意事项与限制¶
插件依赖较多宿主内部结构,升级宿主后需按 TESTING.md 测试。
- 无语法高亮:产品决策(输入面板不是代码阅读器)。
- 无 Esc 功能。
- 输入入口唯一:Codinput 标签存在期间主输入整体隐藏(唯一输入入口约定,浏览同栏其他标签也不恢复)。
- 标签限制:同一 pane 复制出第二个「Codinput」标签时,第二个面板只出提示、不渲染第二个编辑面。
- 手势限制:悬浮模式的手势只保留「拖回底部输入区 = 普通」。
- 第三方依赖:CodeMirror 6(MIT)、marked(MIT)、DOMPurify(Apache-2.0 / MPL-2.0)。
结语¶
DSH-Codinput 解决了 DSH 标准输入框在复杂输入场景下的体验割裂问题,通过复刻官方链路与接口,实现了无缝接入。适合需要在 Harness 中进行代码编写、长文排版或精细化交互的用户。项目源码与详情见 GitHub。