前言¶
在 DeepSeek Harness 里和智能体对话,输入框往往要反复写追问、改需求、贴路径。IDE 里常见的「边打边猜下一句」在 Harness 里默认没有。Codex Pro 一类产品会把「下一步输入预测」做成灰色幽灵文本,按 Tab 填入;dsh-tab-complete 把同一套交互搬到 DSH,预测走你自己的模型路由,不占用订阅额度。
下面介绍插件定位、触发规则、安装配置与使用时的注意点。事实以 GitHub 仓库 README 为准;社区目录页见 SkillHub。
这是什么¶
dsh-tab-complete 由维护者 dingchenhui0618-arch 发布,分类为 客户端 插件(当前 GitHub 星标为 0)。它用当前对话和你已输入的草稿,预测你接下来要输入的内容:灰色幽灵文本贴在光标后,按 Tab 一键填入,按 Esc 忽略。
插件是标准 DSH bundle:宿主半边注册 HTTP 路由,客户端半边挂在 conversation.input.overlay 插槽上。版本 0.2.0,许可证 MIT。
核心功能¶
何时给出建议¶
| 时机 | 行为 |
|---|---|
| 在输入框里打字 | 停手约 0.28 秒后,尝试把这句话补完 |
| 刚发完消息、输入框为空 | 基于对话预测你的下一句(用户口吻,不是助手口吻) |
| 候选是助手刚说过话的复述 | 直接丢弃,不显示 |
| 使用输入法(IME)拼字 | 不预测,避免与候选栏冲突 |
输入框以 / 开头 |
不预测(命令面板) |
补全目标是整句而非半句:一次 Tab 即可发出或继续编辑。对话中的文件、函数、版本号会被沿用;提示词会抑制模型编造不存在的路径(如 src/plugins、index.ts)。送给模型的内容仅包含「你和助手说过的话」——技能目录、运行时上下文等框架注入会被 isScaffolding() 过滤,避免挤占上下文导致预测失真。
交互与实现要点¶
- 流式生成:首个 token 到达即绘制幽灵文本,随后逐字增长,而不是等整句结束再显示。
- 按 Tab 后幽灵文本变为真实草稿,光标在末尾,可继续修改。
- Tab 在捕获阶段拦截,避免触发编辑器缩进;落字通过
inputActions.insertText,带draftRev的 CAS,继续打字会使进行中的补全作废。 - 客户端为 0 高度覆盖层,按测量光标定位,字体与行高与编辑器一致。
成本与隐私(README 说明)¶
- 每次预测为独立小模型调用(默认
maxTokens: 96),不写进会话记录,也不消耗 Harness 主上下文。 - 仅接受 loopback 请求;请求体上限 64 KB。
- 相同「会话 + 草稿」结果缓存 2 分钟;无结果缓存 20 秒。
- 同一会话同时只保留一个在飞请求,新请求会中断旧的。
安装与启用¶
在 profile 目录(~/.dsh/profiles/<profile>/)中配置依赖与 bundle,例如:
// package.json
{
"dependencies": {
"dsh-tab-complete": "link:D:/Projects/dsh-tab-complete" // 或 npm 版本号
},
"dsh": {
"profile": {
"bundles": ["...", "dsh-tab-complete"]
}
}
}
然后在对应 profile 下安装依赖并重启 Harness(README 示例为 desktop profile):
cd $env:USERPROFILE\.dsh\profiles\desktop
pnpm install
重启后输入框具备补全能力;已在跑的会话记录落盘,不会因此丢失。安装前请自行查看仓库源码与 MIT 许可证;插件以当前 DSH 进程权限运行。
配置¶
宿主侧配置写在 bundle 的 cordis.patch.yml 对应条目下,均可省略:
- id: dsh-tab-complete
config:
enabled: true
debounceMs: 280 # 停手多久后请求
maxTokens: 96 # 生成上限(整句比半句要更多 token)
maxCompletionChars: 180
contextMessages: 6 # 送给模型的历史消息条数
contextChars: 2200
minDraftChars: 0 # 空输入框也预测,设成 2 就要求先打两个字
provider: "" # 留空则用当前会话的默认模型路由
model: ""
若主会话模型较慢,可为补全单独指定更快模型(不影响主会话),例如:
- id: dsh-tab-complete
config:
provider: chenyuzhiyun
model: glm-5.3-flash
运行时可查询状态或临时开关(内存态,重启复位),需浏览器同款 cookie:
curl.exe http://127.0.0.1:3080/dsh-tab-complete/state
curl.exe -X POST http://127.0.0.1:3080/dsh-tab-complete/enabled -d '{\"enabled\":false}'
curl.exe "http://127.0.0.1:3080/dsh-tab-complete/transcript?sessionId=<id>"
curl.exe "http://127.0.0.1:3080/dsh-tab-complete/prompt?sessionId=<id>&draft=<草稿>"
一次建议的等待时间约为默认静默 280ms 加上模型首 token 延迟;同一「会话 + 草稿」缓存命中时延迟为 0,GET /dsh-tab-complete/state 中的 lastMs 为上一次真实耗时。
典型用法¶
- 在 Harness 对话输入框中正常打字,停手约 0.28 秒后观察光标后的灰色幽灵文本。
- 若建议合适,按 Tab 接受;不合适按 Esc 忽略。
- 发送一条消息后,在空输入框等待,可得到基于上下文的「下一句用户消息」预测(同样 Tab / Esc)。
- 需要排查模型实际看到的内容时,用上述
transcript与prompt接口对照 sessionId 与草稿。
适用场景与注意¶
适合:长期在 DSH 里写多轮追问、重复性指令或带路径/版本号的说明,希望减少「想下一句怎么写」的停顿,且愿意用自有模型路由承担小额补全调用。
注意:
- 依赖编辑器的
data-composer-card/data-composer-input标记;Harness 大改输入框结构时插件可能需要跟进。 - 幽灵文本定位按「光标在草稿末尾」优化;多行草稿且光标在中间时,补全仍贴在最后一行末尾。
- 模型偶发不相关建议,用 Esc 忽略即可;预测本身是有损的。
- DSH 生态强调「一切皆插件」;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-tab-complete 把「灰色幽灵文本 + Tab 填入」的输入预测接到 DeepSeek Harness,预测与主对话分离、可配独立模型,适合愿意在自有路由上换一点延迟与调用成本的用户。详情与截图见 GitHub README;安装与 bundle 列表以 profile 内 package.json 与 pnpm install 流程为准。
- 目录页:https://www.skillhub.cn/plugins/dingchenhui0618-arch/dsh-tab-complete
- GitHub:https://github.com/dingchenhui0618-arch/dsh-tab-complete