dsh-suggest
DeepSeek Harness dynamic plugin: renders three clickable, editable follow-up question suggestions under every agent answer
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:shaoeric/dsh-suggest说明文档
阅读完整 README ↗dsh-suggest
DeepSeek Harness 插件(动态 + 正式双形态):Agent 每轮回答完成后,在答案下方生成 3 个可点击、可编辑的推荐后续问题。
A DeepSeek Harness (DSH) plugin (dynamic and formal forms) that renders three clickable, editable follow-up question suggestions under every agent answer.
🏠 仓库:https://github.com/shaoeric/dsh-suggest
✨ 功能特性 / Features
- 自动生成:Agent 回答完成后,基于最近 3 条用户消息(含其间助手回复)自动生成 3 个推荐问题,以用户意图为锚点、紧扣最新进展;
- 一键直达:点击推荐项 → 内容直接提交给 Agent,自动开启新一轮回答;
- 先编辑再发送:悬停推荐项会浮现 ✏️ 编辑按钮,点击后内容填入输入框,编辑满意后自行发送;
- flash 模型 + 关闭思考:优先使用同 provider 的 flash 模型,请求携带
reasoningEffort: 'off'(DeepSeek 适配器映射为thinking: disabled),生成又快又省;找不到 flash 或适配器不支持时自动回退;失败则回退会话原模型; - 稳定兜底:按会话+轮次缓存、生成中显示骨架占位、失败显示具体原因并可一键重试;
- 只显示最新一轮:推荐项只在最新一轮回答下方显示,发起新一轮对话后自动隐藏,避免误触;同时补渲染 📎 产物行不丢失;
- 主题自适应:全部配色使用
--dsw-alias-*主题变量,自动适配明暗模式。
🧱 工作原理 / How It Works
| 半区 | 平台 | 职责 |
|---|---|---|
host.js | Host(Node) | 通过 harness.handle('recommendations') 暴露包内 RPC(正式版经 Typert Remote 暴露 suggest/recommendations);读取会话日志(≤ 收尾 seq),以最近 3 条用户消息为锚点截取上下文;优先使用同 provider 的 flash 模型(找不到则回退会话模型)调用 llm.stream 生成 3 个推荐(关闭思考模式),带缓存与并发去重 |
client.js | Client(浏览器) | 注册 conversation.chat.turnTail 链式插槽(priority: -1);渲染垂直左对齐的推荐列表;点击 → inputActions.setDraft + submit() 直发;点 ✏️ → 仅 setDraft 填入输入框 |
回答完成 → turn-tail 节点渲染
→ 链选举命中本插件 → 组件挂载
→ host.call('recommendations', {sessionId, turn, seq})
→ Host 截取最近 3 条用户消息上下文 → flash 模型(thinking off)生成 JSON 数组
→ 返回 3 条推荐 → 渲染为可点击列表
📁 文件结构 / Files
dsh-suggest/
├── host.js # 动态插件 Host 半:推荐生成(RPC、会话读取、LLM 调用、缓存)
├── client.js # 动态插件 Client 半:turnTail UI、点击直发、hover 编辑、产物行
├── lib/
│ ├── index.js # 正式插件 Host 半(与 host.js 同逻辑;Typert Remote + strict manifest)
│ └── client.js # 正式插件 Client 半(与 client.js 同逻辑;ModuleLoader bundle)
├── package.json # 正式插件包清单(dsh.bundle.patch + dsh.client)
├── cordis.patch.yml # 正式插件插入 host composition 的 patch 层
├── dsh.plugin.json # 正式插件清单
├── LICENSE # MIT License
└── README.md