dsh-completion-playground:在 DSH 里直接玩 DeepSeek Completion API 与 logprobs

前言

在 DeepSeek Harness(DSH)里做智能体开发,日常对话多半走 Chat 类接口;若要调试原始 prompt、续写(FIM 风格文档编辑)或查看每个 token 位置的候选分布,往往需要单独写脚本调 /beta/completions,会话轨迹、取消与 token 统计也要自己接。社区插件 dsh-completion-playground(维护者 Zhichii,分类:模型推理)把上述能力打包成 Agent 模式:每一次 Run 仍是 Harness 里普通的一轮对话,只是模型调用走 DeepSeek 的 /beta/completions,因此 Chat、内置 Trajectory、会话列表、token 记账与取消行为保持不变。

这是什么

dsh-completion-playground 是一个面向 DSH 的全屏 raw-prompt 试验场插件。新建会话时可选 Playground Mode;首轮之后出现 Completion 全屏编辑器与 Logprob 探针页,同时保留原生 Chat 与 Trajectory 标签。插件当前版本 0.3.0(MIT),依赖 dsh 版本范围为 >=0.1.7-rc.2 <0.3.0。SkillHub 目录页与 GitHub 仓库见文末链接;目录站点为社区生态,与 DeepSeek / 幻方无官方从属关系。

核心功能

Playground Mode 与会话界面

  • New Session 时,模式选择器提供 Playground Mode;首屏与 DSH 默认一致(模式芯片、工作区选择、常规 composer)。
  • 首轮对话之后,出现 Completion 标签:全屏 prompt 编辑器;原 Chat、Trajectory 未改,原生 composer 被接管腾空,避免 transcript 下方再浮一层输入框。
  • Run:整份文档作为一条 user message 发出,completion 流式返回并追加到文档;Stop 可取消本轮及上游请求。
  • max_tokens 可调(1–4096,与接口文档 4K 上限一致);stop list 支持转义序列,作为请求里的 max_tokens / stop 发出。
  • Trajectory:每次 Run 都是真实的一轮——一条 user 记录(当时文档快照)加一条 assistant 记录(模型续写内容)。

Logprob 标签

Logprob 与 Completion 并列:在同一套 prompt 上再跑一轮普通 turn,但向端点请求 logprobs,把每个位置的候选分布画成概率条。可单独设置 max_tokens 与候选数量(1–20)。该 Run 同样进入 Trajectory;分布挂在 assistant message 上,切换标签或刷新后仍可恢复。

Gemini 模式(同包第二模式)

插件 bundle 还注册 Gemini 模式(preset id completion-gemini):在同一 completion 端点之上,用 Gemini 风格 transcript 包装对话,而非 raw 文档编辑。

  • 无 system prompt:adapter 不读 system/developer 消息,preset 也不声明 prompt 段。
  • 无 tool calls:请求不带 tools 字段。
  • 内置 few-shot 前缀文件 gemini-prefix.md,可通过 Host 配置 geminiPrefix / geminiPostfix / geminiStops / geminiEcho / geminiMaxTokens 覆盖。
  • 路由在 Host 按会话 preset 固定为 completion-gemini,使用 shipped Chat UI,无需浏览器侧额外标签。

实现要点(便于排查)

Host 侧注册 completion-beta adapter,经 /completion-plan-b/max-tokens 等通道传递 max_tokens、stop、logprobs;Browser 侧在 claimed 会话有历史后注册 Completion / Logprob 视图并接管 composer。Logprob 分布经 finish chunk 的 replayState 写入 assistant message 的 source。

安装与启用

安装前请自行阅读仓库源码与 MIT 许可证。插件以当前 dsh 进程权限运行,API Key 仅发往配置的上游。

从 GitHub 安装(README 建议 pin tag 以保证可复现):

dsh plugin --profile <your-profile> add github:Zhichii/dsh-completion-playground#v0.3.0

也可在 Settings → Plugins → Install 粘贴同一 spec 并确认。包为纯 ESM(index.js)与浏览器 bundle(client.js),无 build 步骤与 install script,安装时无需 build approval。

配置 API Key

Host 通过 Harness 凭证 seam(ctx.credentials)解析 DEEPSEEK_API_KEY,并回退到进程环境变量;值只发往配置的上游。可选环境变量:

Variable Meaning
DSH_COMPLETION_BETA_BASE_URL 上游 base URL,默认 https://api.deepseek.com/beta
DSH_COMPLETION_ATTRIBUTION 发往上游的 User-Agent(白标)

Gemini 模式相关 YAML 配置示例见 GitHub README 中 completion-plan-b-host 的 config 段。

典型用法

  1. New Session → 选择 Playground Mode。
  2. 在常规 composer 里写第一条 prompt;模式已 claim 会话,首轮即走 completion 路由。
  3. 打开 Completion 标签 → 在全屏编辑器中编辑文档,点击 Run(或 Ctrl/Cmd + Enter)。
  4. 在 Trajectory 中查看该 Run 是否记为一轮完整 turn。
  5. 需要看 token 候选分布时,切换到 Logprob 标签,设置 max_tokens 与候选数后运行。

Stop 序列(单行输入)

stop 字段为单行,换行用转义输入,浏览器解码后按真实字符发给上游:

Typed Sent as the stop sequence
\n one line feed
\n\n two consecutive line feeds (stop at a blank line)
\nUser: line feed followed by User:
\t one tab
\\ one literal backslash

未知转义(如 \q)保留反斜杠。最多 16 条序列,空行丢弃。

若使用 Gemini 模式,在模式选择器选 Gemini 模式,按 Chat UI 正常发消息即可;few-shot 与 postfix 行为以 README 与 Host config 为准。

适用场景与注意

适合:需要在 DSH 会话上下文里调试 DeepSeek Completion API、续写长文档、对比 stop / max_tokens、可视化 logprobs,且希望 Trajectory 与取消与原生 Agent 一致的场景;也可在同插件内用 Gemini 模式试验无 system、无 tools 的 transcript 包装。

注意:

  • 插件声明的 dsh 引擎范围为 >=0.1.7-rc.2 <0.3.0,部署前核对本机 DSH 版本。
  • 安装命令须使用资料中的 github:Zhichii/dsh-completion-playground#v0.3.0,未 pin 时 git 安装会跟踪默认分支。
  • Completion 与 Logprob 的每次 Run 都会消耗 API 配额并写入 Trajectory;Logprob 候选数越多,请求与展示成本越高。
  • 社区目录星标当前为 0,不代表功能缺失,仅反映公开关注度;问题与更新以 GitHub Issues 为准。

结尾

dsh-completion-playground 把 DeepSeek /beta/completions 嵌进 DSH 的 Agent 回合模型:全屏 prompt、流式续写、stop/max_tokens 与 logprobs 探针都在同一套 Chat / Trajectory 里完成,另附可选 Gemini 模式 做 transcript 风格对话试验。

  • 目录页:https://www.skillhub.cn/plugins/Zhichii/dsh-completion-playground
  • GitHub:https://github.com/Zhichii/dsh-completion-playground
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye