🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

输入框预测 Amir-Bazylkhanov/dsh-composer-prediction

DeepSeek 客户端v0.7.8
Amir-Bazylkhanov12 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

为 DeepSeek Harness 提供 ChatGPT 风格的输入框预测。

35.3/100
综合分
1
GitHub 星标
231
npm 周下载
—/5
用户评分

数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/Amir-Bazylkhanov/dsh-composer-prediction.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
生态插件
可安装,未声明 dsh 能力
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-composer-prediction @ 0.7.8
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 17:54:11

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 10 处,展示前 10 条)
  • 读取本地文件
    lib/index.js:43
    const parsed = JSON.parse(readFileSync(configFile(), 'utf8'))
  • 写入本地文件
    lib/index.js:52
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    lib/index.js:54
    writeFileSync(temporary, `${JSON.stringify(config, null, 2)}\n`, 'utf8')
  • 写入本地文件
    lib/index.js:55
    renameSync(temporary, path)
  • 发起网络请求
    lib/client.js:475
    const response = await fetch(ROUTE, {
  • 读取密钥环境变量
    lib/handler.js:48
    if (typeof process.env.DEEPSEEK_API_KEY === 'string' && process.env.DEEPSEEK_API_KEY !== '') {
  • 读取密钥环境变量
    lib/handler.js:49
    return process.env.DEEPSEEK_API_KEY
  • 读取本地文件
    lib/handler.js:53
    const doc = readFileSync(join(home, '.credentials.yaml'), 'utf8')
  • 发起网络请求
    lib/handler.js:70
    const response = await fetch(url, {
  • 发起网络请求
    lib/client-body.js:220
    const response = await fetch(ROUTE, {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

为 DeepSeek Harness 提供 Codex 风格的输入框预测:以幽灵文本给出下一条消息建议,按 Tab 接受,按 Esc 关闭。

README

由 DeepSeek 最新模型翻译生成
dsh-composer-prediction 为 DeepSeek Harness 提供 ChatGPT 风格的输入框预测。 每轮助手回复结束后,插件会向一个便宜的聊天模型询问你接下来最可能发送的消息,并以空输入框中的幽灵文本形式显示出来。按 Tab 插入草稿(不会发送),按 Esc 忽略,或者直接开始输入即可丢弃。你可以在 Settings → Predictions 中关闭整个功能——这是插件贡献的独立设置分区(settings.section),因为自带的 Plugins 页面是只读的。 行为 | 事件 | 结果 | | 助手回合结束(running: true → false) | 在配置的延迟后请求预测 | | 输入框非空,或你已在输入 | 不请求也不显示任何内容 | | 输入法组合输入进行中(data-composer-composing) | 不请求新预测,并在该回合隐藏建议,直到组合输入结束 | | 预测可见时按 Tab | 整条建议插入草稿;不会发送 | | 预测可见时按 Esc | 撤回建议,该回合不再重复 | | 打开已有助手回答的会话 | 为其最新回合生成一次预测,然后按会话 + 回合去重 | | 切换到其他会话再切回 | 立即恢复缓存的建议;不发起新请求(最多记住 40 个会话) |
展开完整文档(README 剩余 1 节)
dsh-composer-prediction

为 DeepSeek Harness 提供 ChatGPT 风格的输入框预测。

每轮助手回复结束后,插件会向一个便宜的聊天模型询问你接下来最可能发送的消息,并以空输入框中的幽灵文本形式显示出来。按 Tab 插入草稿(不会发送),按 Esc 忽略,或者直接开始输入即可丢弃。你可以在 Settings → Predictions 中关闭整个功能——这是插件贡献的独立设置分区(settings.section),因为自带的 Plugins 页面是只读的。

行为

| 事件 | 结果 |
| 助手回合结束(running: true → false) | 在配置的延迟后请求预测 |
| 输入框非空,或你已在输入 | 不请求也不显示任何内容 |
| 输入法组合输入进行中(data-composer-composing) | 不请求新预测,并在该回合隐藏建议,直到组合输入结束 |
| 预测可见时按 Tab | 整条建议插入草稿;不会发送 |
| 预测可见时按 Esc | 撤回建议,该回合不再重复 |
| 打开已有助手回答的会话 | 为其最新回合生成一次预测,然后按会话 + 回合去重 |
| 切换到其他会话再切回 | 立即恢复缓存的建议;不发起新请求(最多记住 40 个会话) |
| 切换到的会话需要新预测 | 等待聊天存储切换完成(节点列表变化,上限 400 ms),确保请求绝不会携带上一个会话的记录 |
| 你输入或附加文件 | 隐藏建议;清空草稿后同一回合会重新显示 |
| 关闭再开启该功能 | 忘记该会话的建议和「已请求」标记,然后立即重新预测 |
| 你接受、忽略、开始新回合或禁用功能 | 丢弃建议,并取消任何进行中的请求 |
| 响应迟到或属于旧回合 | 丢弃——绝不会替换或复活更新的建议 |

安装

从 npm registry 安装:

dsh plugin --profile <your-profile> add dsh-composer-prediction

或直接从本地检出安装:

dsh plugin --profile <your-profile> add ./dsh-composer-prediction --config.auto-install-peers=false

dsh 会把包链接到配置档,并把 bundle 追加到 dsh.profile.bundles,因为包声明了 dsh.bundle。之后重启应用(刷新页面只会重新加载浏览器端)。

无需启动即可验证层已组合:

dsh --profile <your-profile> --dump-config

你应该能看到 # == dsh-composer-prediction 层和 composer-predict 行。

移除:

dsh plugin --profile <your-profile> remove dsh-composer-prediction

从 Discover 标签页安装

market/index.json 是现成的插件市场索引,可直接托管,其中列出了这个包。打开 Custom plugin markets,然后在 Plugins → Discover → Add index source 下添加这个 URL:

https://raw.githubusercontent.com/Amir-Bazylkhanov/dsh-composer-prediction/main/market/index.json

发布后用 npm run market 重新生成。

配置

所有配置都在 $DSH_HOME/composer-predict.json 和设置页里。这个文件由插件的宿主端写入(合并 + 原子重命名);它不放在 settings.yaml 命名空间下,因为 0.2.x 的 ctx.settings 服务只是加载器条目之上的一层表单,不再给插件提供实时的命名空间作用域。

| 键 | 默认值 | 含义 |
| enabled | true | 总开关(也是设置页的开关) |
| provider | "" | 留空 = 部署默认路由(ctx.agentDefaultModel) |
| model | "" | 留空 = 部署默认模型 |
| maxTokens | 64 | 预测的输出上限 |
| temperature | 0.8 | 采样温度(仅直连 HTTP 传输时生效) |
| delayMs | 0 | 一轮对话结束后、开始预测前的静默期 |
| maxSuggestionChars | 200 | 单条建议的硬上限 |
| contextMessages | 10 | 喂给预测器的末尾消息条数 |
| maxContextChars | 6000 | 对话记录字符预算 |
| baseUrl | https://api.deepseek.com | 仅作兜底:没有组合任何 harness LLM 服务时使用 |
| apiKey | "" | 仅作兜底:先读 DEEPSEEK_API_KEY,再读 $DSH_HOME/.credentials.yaml |

模型与推理

默认情况下,插件调用的是 harness 自带的 LLM 服务(ctx.llm),不是私有端点。也就是说:

- 它使用和你的会话相同的服务商路由与凭据 —— 走订阅路由(deepseek-account、Kimi 等)时完全不需要 API key;
- 模型是你的部署默认模型(ctx.agentDefaultModel,例如 deepseek-flash),除非你在设置页覆盖 provider/model;
- 推理强度固定为模型公布的最便宜档位(model.reasoning.efforts[0])。猜下一条消息不该花思考预算;如果模型没有公布任何档位,就沿用服务商默认值。输出受 maxTokens 限制(默认 64)。

直连 OpenAI 兼容 HTTP 的路径(baseUrl + apiKey)只为没有 ctx.llm 的组合准备;正常的 DSH 安装不会用到它。

预测跑不起来时,原因不再被吞掉:设置卡片会显示原因,浏览器控制台会打印 [composer-predict] …。

设置页与状态

插件自带 Settings → Predictions 分区(settings.section,就是放「Built-in plugins」的那个列表槽位),里面有启用开关、provider/model 覆盖和时序设置。

没有占位状态:幽灵文本准备好就直接出现。预测返回空或失败时,输入框会显示原因否则(no prediction: no-model-route、composer-predict: provider HTTP 401 等),并持续显示,直到你输入、关闭它、切换会话或禁用该功能。两种情况下控制台都会记录 [composer-predict] …。

工作原理

host half (lib/index.js, lib/handler.js)
├─ config document composer-predict.json → $DSH_HOME
└─ POST /api/composer-predict/rpc → config.get / config.set / predict / cancel
└─ chat completion → normalizeSuggestion()

browser half (lib/client.js)
├─ slot conversation.input.overlay → ghost text over the empty composer
├─ slot settings.section → "Predictions" Settings page
├─ useChat(legacy.nodes) → transcript tail
├─ useInput(draft) / useSession(running) → eligibility
└─ capture keydown → Tab accepts, Esc dismisses

浮层会测量真实的 [data-composer-input] 元素,并克隆它的字体度量,因此内边距、换行和高度都跟随输入框,而不是靠猜 CSS。仅在幽灵文本可见时隐藏原生占位符(之后恢复)。

构建产物不依赖工具链:scripts/build-client.mjs 把共享辅助函数和组件主体拼接进宿主提供的 window.__ModuleLoader__ 工厂——不用打包器,没有依赖,不访问网络。

开发

node scripts/build-client.mjs # regenerate lib/client.js
node scripts/test.mjs # 33 tests across shared/host/client
node --check lib/index.js

测试覆盖建议归一化、对话记录提取、提示词构建、配置清洗、每个 RPC 端点(用打桩的服务商)、取消操作,以及一个 VM 冒烟测试:加载生成的 bundle,运行 apply() 并渲染浮层。

手动验证

客户端暴露了 window.__composerPredict,不用等一轮对话结束就能试用浮层:

__composerPredict.suggest('Add a regression test for the empty-input case.')
__composerPredict.state()
__composerPredict.clear()
__composerPredict.predictNow() // re-run the real prediction path

共存

只安装一个输入框幽灵文本插件。像 dsh-next-hint 这样的插件,会为同一轮已结束的对话在同一个空输入框里绘制建议,所以两个都装就意味着两个重叠的幽灵文本,每轮两次模型调用。两者在幽灵文本可见时也都接受 Tab,因此按一次 Tab 可能同时作用于两个建议。选一个。

如果两个还是都装了,本插件会在运行时退让:它检查客户端模块清单里有没有已知的幽灵文本包(dsh-next-hint),监视输入框浮层插槽里有没有类似幽灵文本的条目,并识别 dsh-next-hint 的 data-next-hint* DOM 标记。检测到冲突期间,不请求也不绘制任何预测,Tab/Esc 保持不动,Settings → Predictions 会说明原因。检测还会在 DOM 和插槽变更,所以挂载晚的插件会在下一轮之前被捕获。

Ghost-text 插件可以选择在自己绘制的 ghost 节点上使用共享的 data-composer-ghost 属性,该属性只在建议可见时存在(本插件在那里设置 data-composer-ghost="dsh-composer-prediction")。始终挂载的锚点则改用 data-composer-predict 标记,这样插件就能区分「本插件已加载」和「建议可见」。想要动态让位的插件可以依据该标记做判断;本插件自身的暂停是存在性级别的。

这里的让位按设计是单向的:只要有另一个 ghost 插件存在,本插件就保持暂停,即使在该插件的两次建议之间也是如此。因此两者都安装时,dsh-next-hint 是确定性的赢家,两者永远不会争抢同一个输入框。

限制

- 预测在空闲转换时触发;如果轮次结束时你已经在输入,就不会给出建议(这是有意为之:它绝不该和用户抢)。
- ghost 定位在空输入框的第一行上方;预填了附件的输入框不会显示建议。
- predictNow 需要已完成的轮次才能获得对话记录上下文。
- 已针对 DSH 0.2.1-rc.2 验证;客户端 bundle 面向 conversation.input.overlay 插槽,以及 0.1.5 引入的 data-composer-input contenteditable。

致谢

设置导航图标来自 SVG Repo,采用 CC0 1.0(公有领域;无需署名——署名只是礼节)。该图标已做修改:裁剪 viewBox,通过 alpha 蒙版填充 currentColor。详见 NOTICE。

许可证

MIT
预览分享卡片长什么样 ↓Amir-Bazylkhanov/dsh-composer-prediction
分享 · DeepSeek Harness Hub
Amir-Bazylkhanov/dsh-composer-prediction

为 DeepSeek Harness 提供 ChatGPT 风格的输入框预测。

这是你的仓库?认领条目

回到顶部