dsh-prompt-for-me
已验证dsh-prompt-for-me · v0.4.0 · MIT · Web 界面
Context-aware next-message suggestions for the DeepSeek Harness composer, always reviewed by the user before sending.
安装
dsh plugin add dsh-prompt-for-me 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
标签
说明文档
Prompt for Me(Prompt 嘴替)
Prompt for Me 会根据 DeepSeek Harness 中有界的会话历史和本地建议交互,推测你下一句可能想说什么。它只把建议写入输入框,绝不会代替你发送。
功能
- 只在输入框操作区增加一个 Sparkles 按钮。
- 全流程使用同一个 Trigger:点击按钮,或按
Mod+Shift+Space。 - 每次有效 Trigger 只生成一条建议;完整 NDJSON 行通过校验后立即进入输入框。
- 下一次请求会携带本轮已经跳过的建议,并要求模型不得重复或改写复述它们。
- 快速连续 Trigger 会被合并,快捷键长按产生的按键连发会被忽略;一次输入连发最多只推进一条建议。
- 本轮最多保留 10 条已经跳过的建议,连续 Trigger 不会让请求无限增长。
- 建议只写入草稿。你可以按 Enter 发送、先编辑、全部删除,或继续 Trigger。
- 不绕过 Harness 权限审批、不调用工具、不自动发送消息。
安装
推荐安装 Release 中已经构建好的 tarball,不需要执行构建脚本:
dsh plugin --profile web add https://github.com/ChuanTianML/prompt-for-me/releases/download/v0.4.0/dsh-prompt-for-me-0.4.0.tgz
安装后重启 dsh web。
也可以安装固定 Git 标签:
dsh plugin --profile web add github:ChuanTianML/prompt-for-me#v0.4.0
使用 pnpm 10 从 Git 安装时,可能需要在 Web profile 的 pnpm-workspace.yaml 中为 allowBuilds 添加 dsh-prompt-for-me: true,然后重新运行命令。prepare 脚本只复制 checkout 中的 Host 文件并包装 Client factory,不会下载任何内容。
更新或卸载:
dsh plugin --profile web update dsh-prompt-for-me
dsh plugin --profile web remove dsh-prompt-for-me
模型和 API Key
插件在 Harness Host 上调用 ctx.llm。默认优先复用当前会话的 provider/model,没有时使用 Harness 默认模型,因此使用的就是 DeepSeek Harness 已配置的 API Key。浏览器拿不到也不会读取这个 Key,插件没有单独的 Key。
如需固定辅助模型,可在 cordis.patch.yml 或更高优先级的 profile patch 中同时配置:
- id: prompt-for-me
name: dsh-prompt-for-me
config:
provider: deepseek-official
model: deepseek-chat
数据与隐私
每次生成建议时,Host 可能把下列有界文本发送给当前选择的模型提供方:
- 当前草稿;
- 当前会话最近 3 轮真人用户/助手文本;
- 当前会话中已发送的建议编辑、原样接受和拒绝记录;
- 来自最多 20 个历史会话的手写提示词和建议交互原始样本;
- 本轮最多 10 条已经跳过的建议,用于让模型避免重复或改写复述。
当前草稿和最近 3 轮决定当前任务、意图和消息内容;当前会话反馈只调整眼前的表达;跨会话记忆只能影响长期的风格、详略和工作流偏好。手写提示词和编辑后发送的建议权重高于原样接受,拒绝记录只作为较弱的负向信号。编辑建议后再次 Trigger 会拒绝原建议,但不会把尚未发送的编辑结果当成正向偏好。
Harness 会把工作区指令、运行时上下文和 Skill 列表记录为用户角色事件;插件会从会话轮次和偏好记忆中排除这些非真人来源。如果草稿与真人会话均为空,插件会在调用模型前停止生成。
常见 API Key、token、password 和 Bearer token 会在模型调用前替换为 [REDACTED_SECRET]。插件不会收集附件、工具参数、文件、凭证或二进制内容;没有分析上报服务,只会调用 Harness 已选择的模型路由。
交互记录只保存在当前浏览器 localStorage 的 dsh.prompt-for-me.outcomes.v2,每条包含会话 ID、最终动作、来源以及相关的原文/最终文本。V1 记录会自动迁移,原记录不会删除。可在浏览器控制台同时清除两个版本:
localStorage.removeItem('dsh.prompt-for-me.outcomes.v1')
localStorage.removeItem('dsh.prompt-for-me.outcomes.v2')
DeepSeek Harness 0.1.0-rc.6 尚未提供下游插件注册自定义持久化 session event 的公开接口。因此独立版不会把辅助模型请求和建议结果追加到 Harness session log;强行写入会导致原版运行时无法重新读取会话。这是独立版与实验性仓库内实现的主要差异,待官方开放事件注册接口后再补齐。
生成 RPC 使用 NDJSON。每条候选只有在完整并通过校验后才会进入输入框;模型的半截 token 和不完整 JSON 不会写入草稿。鼠标悬停在 Sparkles 按钮上时,只显示当前动作和快捷键,例如“生成下一句(⌘⇧Space)”或“换一条(⌘⇧Space)”。
辅助请求始终使用 off reasoning。模型收到一段系统指令,以及一条包含 current、currentSessionFeedback、userPreferenceMemory 和 currentCycleSkipped 的 JSON 用户消息;不会收到工具定义或附件。
Host 在内存中保留最近 50 条隐私安全的性能记录,并把每条记录以 prompt-for-me metrics 写入日志。记录包含模型路由、各类文本的字节数/条数、历史读取和输入组装耗时、首个模型增量/reasoning/text 的时间、建议到达时间、模型与请求总耗时,以及提供方返回的 token usage;不包含提示词、候选或交互结果正文。可查询当前进程:
curl -sS -X POST -H 'content-type: application/json' \
-d '{"method":"metrics"}' \
http://127.0.0.1:3080/dsh-prompt-for-me/rpc
配置
所有生成限制均可在 cordis.patch.yml 中配置:
| 字段 | 默认值 | 含义 |
|---|---|---|
maxCandidateBytes |
4096 |
单条建议 UTF-8 上限。 |
maxDraftBytes |
32768 |
草稿或编辑结果 UTF-8 上限。 |
maxCurrentCycleSkipped |
10 |
作为下一次 Trigger 强负向上下文保留的已跳过建议数。 |
maxCurrentCycleSkippedBytes |
16384 |
当前周期已跳过建议共享的 JSON 预算。 |
maxCurrentTurns |
3 |
保留的当前会话最近轮数。 |
maxCurrentContextBytes |
16384 |
最近会话轮次的 JSON 预算。 |
maxCurrentFeedbackBytes |
4096 |
当前会话建议反馈的 JSON 预算。 |
maxPreferenceMemoryBytes |
8192 |
跨会话偏好记忆的 JSON 预算。 |
maxHistorySessions |
20 |
检查的历史会话数。 |
maxManualPrompts |
8 |
保留的历史手写提示词数。 |
maxEditedSuggestions |
6 |
每个反馈层保留的建议编辑对数。 |
maxAcceptedExact |
6 |
每个反馈层保留的原样接受数。 |
maxRejectedSuggestions |
4 |
每个反馈层保留的弱拒绝信号数。 |
maxLocalOutcomes |
50 |
浏览器本地交互记录上限。 |
maxLocalOutcomesBytes |
131072 |
浏览器本地记录及其 RPC 副本共享的 JSON 预算。 |
maxOutputTokens |
2048 |
辅助模型输出预算。 |
timeoutMs |
30000 |
辅助模型调用超时。 |
shortcut |
Mod+Shift+Space |
跨平台 Trigger,也可设为 disabled。 |
开发
需要 Node.js 22.19 或更高版本。
npm run check
该命令会重新构建 Host/Client 静态产物、运行 Node 测试,并检查 npm 包内容。
License
MIT