dsh-tab-complete

DSH PLUGIN模型与账号接入

仓库 dingchenhui0618-arch/dsh-tab-complete

模型与账号接入 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

Tab 补全:用模型预测你在 DeepSeek Harness 输入框里接下来要打的字,灰色幽灵文本 + Tab 一键填入(Codex Pro 那套输入预测的 DSH 版)

一句话选型结论

按资料字段整理

dsh-tab-complete 是模型与账号接入类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类模型与账号接入 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-29 创建于 2026-10-21
README 9.1 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:dingchenhui0618-arch/dsh-tab-complete
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

模型与账号接入
字段来自项目仓库与公开索引,中文说明由本站标注

上游标签

autocompletedeepseek-harnessdsh-pluginghost-text

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在模型与账号接入场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-tab-complete当前 L5 · 运行验证通过 低风险 0 未标注 有
archify L4 · 沙盒安装通过 低风险 8.0 万 未标注 有
DeepSeek-Reasonix L4 · 沙盒安装通过 低风险 3.6 万 未标注 有
nocobase L3 · 安装规范通过 低风险 2.5 万 0.1.1-rc.2 无
learn-harness-engineering L4 · 沙盒安装通过 低风险 2.0 万 未标注 有
dsh-our-free-model 未做沙盒验证 未标注 8,064 未标注 无

仓库档案

模型与账号接入
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方dingchenhui0618-arch仓库 dsh-tab-complete · 默认分支 main
分类模型与账号接入ai
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-21 · 2026-10-29最后推送 2026-10-29
本站收录2026-10-30首次进入本站目录的时间

README 全文

9.1 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-tab-complete


在 DeepSeek Harness 的输入框里,用当前对话和你已经打的字,预测你接下来要输入的内容:灰色幽灵文本贴在光标后面,按 Tab 一键填入,按 Esc 忽略。

这是 Codex Pro「下一步输入预测」的 DeepSeek Harness 版本。区别只有一处:预测走你自己的模型路由,不吃订阅额度。

> 用着还行的话,点个 ⭐ 就够了——插件市场的「搜插件」按 GitHub star 排序,star 是这个插件能被人翻到的唯一杠杆。

它什么时候会给建议

时机 行为
你在输入框里打字 停手约 0.28 秒后,把这句话补完
你刚发完一条消息、输入框是空的 基于这段对话,预测你的下一句(用户口吻,不是助手口吻)
候选是助手刚说过的话的复述 直接丢弃,不显示
候选是「先查日志,再跑测试」这类执行步骤 直接丢弃——那是助手该干的事,不是你会说的话
你在用输入法(IME)拼字 不预测,避免和候选栏打架
输入框以 / 开头 不预测,那是命令面板

给的是整句而不是半句:一次 Tab 就能直接发出去,不需要你接着往下想。对话里的文件、函数、版本号会被沿用;模型编不存在的路径(src/plugins、index.ts 这种)会被提示词按住。

只把「你和助手说过的话」喂给模型——技能目录、运行时上下文这类框架注入会被 isScaffolding() 挡掉。这很关键:它们一旦混进去就会吃光上下文预算,让预测变成对着技能列表瞎猜。

它会越用越像你。 每次你按 Tab 收下建议,那句话就被记进 ~/.dsh/tab-complete-style.json(最多 40 条,只在本机),之后作为「他以前收下过的写法」参与提示词。看不顺眼可以清空:

curl.exe "http://127.0.0.1:3080/dsh-tab-complete/style"                       # 看记了什么
curl.exe -X POST "http://127.0.0.1:3080/dsh-tab-complete/style" -d '{"clear":true}'   # 清空

按 Tab 之后:幽灵文本变成真正的文字,光标停在末尾,接着就能改。

安装

插件是标准的 DSH bundle:宿主半边注册一条 HTTP 路由,客户端半边挂在 conversation.input.overlay 插槽上。

在 profile 目录(~/.dsh/profiles//)里加两处:

// package.json
{
"dependencies": {
"dsh-tab-complete": "link:D:/Projects/dsh-tab-complete"  // 或 npm 版本号
},
"dsh": {
"profile": {
"bundles": ["...", "dsh-tab-complete"]
}
}
}

然后安装并重启 Harness:

cd $env:USERPROFILE\.dsh\profiles\desktop
pnpm install

重启后窗口里的输入框就有这个能力;已经在跑的会话不会丢,会话记录是落盘的。

配置

宿主侧配置写在 bundle 的 cordis.patch.yml 对应条目下,全部可省略:

- id: dsh-tab-complete
config:
enabled: true
debounceMs: 280        # 停手多久后请求
maxTokens: 64          # 生成上限(一句话够用;调大只会更慢)
maxCompletionChars: 180
contextMessages: 6     # 送给模型的历史消息条数
contextChars: 2200
minDraftChars: 0       # 空输入框也预测,设成 2 就要求先打两个字
suppressSteps: true    # 丢弃「先查日志,再跑测试」这类助手口吻的执行步骤
provider: ""           # 留空则用当前会话的默认模型路由
model: ""

运行时可查状态、可临时开关(内存态,重启复位):

curl.exe http://127.0.0.1:3080/dsh-tab-complete/state       # 需要浏览器同款 cookie
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="   # 这次补全真正会发给模型的对话
curl.exe "http://127.0.0.1:3080/dsh-tab-complete/prompt?sessionId=&draft=<草稿>"   # 完整 system + user 提示词

速度

一次建议 = 静默时间(默认 280ms)+ 模型首 token 延迟。第二段来自模型本身,插件替不了它;所以补全走流式:第一个 token 到达就把幽灵画出来,之后逐字长出来,而不是等整句生成完再一次性出现。

如果仍然嫌慢,可以给补全单独指定路由(不影响主会话):

- id: dsh-tab-complete
config:
provider:
model:

别用推理型模型。 它们会先把 token 花在思考上,maxTokens: 64 全部被吃掉,流里一个可显示的字都没有——表现是「一次都不出幽灵」,不是慢。实测 glm-5.3-flash、qwen3.7-plus 就是这样,deepseek-flash 这类直出模型的 p50 约 2.4 秒。要换模型,先跑一次:

curl.exe -X POST "http://127.0.0.1:3080/dsh-tab-complete/replay" -H "content-type: application/json" -d "{\"messages\":[{\"role\":\"user\",\"text\":\"你好\"}],\"draft\":\"\",\"provider\":\"\",\"model\":\"\"}"

返回里 completion 为空就说明这个模型不能用。

同一「会话 + 草稿」在缓存里命中是 0 延迟;GET /dsh-tab-complete/state 里的 lastMs 就是上一次真实耗时。

成本与隐私

  • 每次预测是一次独立的小模型调用(maxTokens: 64,一句话),不写进会话记录,也不消耗 Harness 的上下文。
  • 只接受来自 loopback 的请求;请求体上限 64 KB。
  • 同样的「会话 + 草稿」结果缓存 2 分钟;"模型也没想出来"缓存 20 秒,避免空输入框反复花钱。
  • 同一会话同时只保留一个在飞请求,新请求会中断旧的。
  • 采纳记忆只写在 ~/.dsh/tab-complete-style.json,不联网、不进 git,{clear:true} 一键清空。

它是怎么被调的

改了提示词或守卫规则,不能靠"感觉好点了"就发版。仓库外面(不提交,含私人对话)有一套离线评测:

node .dev/eval/extract.mjs   # 从本机真实会话抽「对话 + 用户真实下一句」
node .dev/eval/judge.mjs --port 3148 --limit 20 --label v2 --prompt v2

/replay 把样本喂进同一条补全链路,另一个模型当评审打 0–10 分。0.3.0 的两个改动(口吻重写 + 步骤守卫)就是靠这组数字定的,不是拍脑袋。

实现要点

  • 宿主:ctx.webServer.register 六条路由;llm.stream 边读边转发成 SSE;历史取自 session.deriveMessages()(拿不到就退回事件日志的 user/message / assistant/message)。
  • 客户端:conversation.input.overlay 插槽里的一个 0 高度覆盖层,绝对定位到测量出来的光标位置,字体、行高、字间距照抄编辑器,所以看起来就是「接下来要打的字」。
  • 落字走 inputActions.insertText(text, span),带 draftRev 的 CAS:请求发出后你要是继续打字,这次补全就作废,不会插到错误的位置;CAS 失败再退回 setDraft。
  • Tab 在捕获阶段拦下并 stopImmediatePropagation(),编辑器的缩进逻辑看不到它,也不会误触发。

已知限制

  • 依赖编辑器的 data-composer-card / data-composer-input 标记,Harness 大改输入框结构时需要跟着调整。
  • 幽灵文本的定位按「光标在草稿末尾」优化;多行草稿且光标在中间时,补全仍贴在最后一行末尾。
  • 预测本身是有损的,而且两种场景差得很远(真实会话评审,0–10 分):
场景 平均分 说明
空输入框,猜你下一句 ≈3 你收到结果后往往直接换话题,模型没有依据,只能给「顺着当前任务的下一步」
你已经打了几个字 ≈4.7 方向被你限定住了,这才是它真正擅长的

所以空输入框里出幽灵时,把它当成「一个可以按 Tab 收下的下一步建议」,不是读心;不对就 Esc,或打两个字让它重算。
- 多候选选优(一次生成 3 条再挑)实测救不了空输入框:最好的那条平均只有 3.33 分,36 个候选里 0 个及格。方向错的问题不是多给几次机会能解决的。
- 守卫会误伤一小部分「先/接着 + 技术词」的合法句子(例如「接着写测试」),属于为减少噪声付的代价,可用 suppressSteps: false 关掉。

开发

node scripts/build.mjs      # src/ -> lib/(无依赖打包)
node --test test/*.test.mjs # 16 个用例

src/core.js 是纯函数(提示词、清洗、转录裁剪),src/host.js 是宿主半边,src/client.cjs 是插槽组件,src/client-css.cjs 是样式。lib/ 是构建产物,随仓库一起提交,安装时不用自己构建。

License

MIT

常见问题

6 问
答案由本站依据条目字段整理,不引用上游原文
dsh-tab-complete 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:dingchenhui0618-arch/dsh-tab-complete` 即可。

dsh-tab-complete 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-tab-complete 安全吗?

低风险。

dsh-tab-complete 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-tab-complete 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

模型与账号接入
按星标排序,可作替代方案

archify

archify

从仓库或系统描述生成经过校验的自包含交互式架构图、流程图、时序图、数据流图和生命周期图。

L4 · 沙盒安装通过 8.0 万 星

nocobase

nocobase

L3 · 安装规范通过 2.5 万 星

dsh-our-free-model

dsh-our-free-model

为 DeepSeek Harness 挂载免登录、免 API Key 的免费前沿模型通道,装完即用,并附用量看板与 OpenAI 兼容本地转

未标注验证等级 8,064 星

dsh-purge

dsh-purge

dsh-purge 是一款 DeepSeek Harness 设置插件,可修改默认副本、权限策略和工具限制,并添加规则卡片以分组应用补丁,支

L5 · 运行验证通过 4,573 星

dingchenhui0618-arch 的其它插件

6 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。