输入框预测 Amir-Bazylkhanov/dsh-composer-prediction
DeepSeek 客户端v0.7.8为 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 能力
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Amir-Bazylkhanov/dsh-composer-prediction
为 DeepSeek Harness 提供 ChatGPT 风格的输入框预测。
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,487已汉化DSH
73
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,894已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,379已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
DS Bot 是一个基于 DeepSeek Harness简称 dsh的 bot 插件,插件将 dsh 改造为 bot…
★ 5,084已汉化DSH
71.1
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,778已汉化DSH
71.1
这是你的仓库?认领条目