dsh-quest · 新求索
> 为 DeepSeek Harness 设计的「创作求索」插件:Agent 用一次自适应问卷式对话 > 帮你发现自己真正想创作的方向,最后收敛出一组为你量身定制的创作 idea。
English · [核心改动说明](harness/README.md)
---
这是什么
你不再需要「想清楚要做什么」才能开始。点击侧栏「新会话」下方的 新求索, 选好会话模式与探索深度,Agent 就会像一位耐心的访谈者:
1. 一次只问一个问题(多选 / 可自填),每次都有新选项; 2. 读完你的回答再生成下一题 —— 题目会顺着你的兴趣逐层深入; 3. 问完约 N 题后(或你随时喊停),调用 finish_quest 收敛; 4. 输出 3–6 个创作 idea,每个都引用你的回答解释「为什么适合你」; 5. 之后无缝转回普通会话,随时继续聊。
| 深度 | 目标题量 | 定位 |
|---|---|---|
| 轻量 low | 约 5 题(±5) | 快速探索 |
| 标准 medium | 约 10 题(±5) | 常规求索 |
| 深度 high | 约 20 题(±5) | 系统性访谈 |
> 题量是约数:模型根据你的回答自适应,允许 ±5 题的弹性。
界面一览
- 侧栏入口:
新会话正下方的蓝色「新求索」按钮(折叠态为图标)。 - 启动弹层:选择会话模式(code / cordis / minimal / standard 等四个预设)
与探索深度,确认后自动创建并打开求索会话。
- 自动开场:会话创建后自动注入所选深度的开场 Prompt,Agent 直接开始提问。
- 会话标题:求索会话在会话列表中以 DeepSeek 蓝显示标题。
- 头部徽标:会话头部显示「求索 · 深度」蓝色徽标。
- 进度条:输入框上方实时显示「第 X 题 · 目标约 N 题」,并提供提前结束。
- 完成态:Agent 调用
finish_quest后,进度条变为「探索完成」。
快速开始
前提
- DeepSeek Harness ≥ 含本仓库
harness/quest-harness.patch的版本
(见 [核心改动说明](harness/README.md) —— 该补丁是硬依赖,请先应用并构建)。
- Node ≥ 22。
安装
# npm(推荐)
dsh plugin add dsh-quest
# 或从 GitHub 安装(pnpm 会提示在 profile 的 pnpm-workspace.yaml 中授权 prepare 脚本)
dsh plugin add github:LvienOeria/dsh-quest
# 或本地链接(开发)
dsh plugin add link:/path/to/dsh-quest安装后重启 dsh web。侧栏「新会话」下方即出现「新求索」。
使用
1. 点击 新求索 → 选择会话模式与深度 → 开始求索; 2. 逐题作答(多选可多选、可直接输入自己的答案); 3. 想直接收尾时点击进度条上的 提前结束,或等 Agent 自行收敛; 4. 收到 idea 列表后,报数字或说出你的想法,继续普通对话。
自定义测试内容
设置 → 插件 → 新求索 提供:
| 配置项 | 说明 |
|---|---|
| 开场 Prompt 模板 × 3 | 轻量 / 标准 / 深度各一份,创建求索会话时自动注入为首条消息 |
| 目标题量 × 3 | 各深度的约数题量(1–60,默认 5 / 10 / 20) |
| 默认探索深度 | 「新求索」弹层打开时预选的深度 |
模板中 {count} 会被替换为目标题量;修改即时作用于之后的新会话。 也可以在 cordis.yml 中直接配置(插件 quest 行的 config,字段与设置卡一致)。
工作原理
点击「新求索」
→ 弹层:模式(四预设)+ 深度(low/medium/high)
→ sessions.create({ agentPreset, quest: { depth } }) # 标记写入会话 header(持久化)
→ 打开会话
→ 宿主插件监听 session/created + agent/created
→ 注入所选深度模板({count} 已填充)为首条消息,并落 quest/opened 事件(幂等守卫)
→ Agent 开始访谈:ask_user_question(一次一题,读答案自适应)
→ 进度 = 客户端从会话快照统计提问数;「提前结束」以 steering 提交收尾请求
→ Agent 调用 finish_quest(落 quest/finished 事件)→ 输出 idea 列表 → 普通会话插件只做四件事:创建标记(客户端)、开场注入(宿主)、计数与展示 (客户端)、收敛信号(finish_quest 工具)。访谈本身完全由模型在所选预设 的能力下完成,插件不替代任何会话机制。
开发与调试
# 1. 插件仓库内联开发依赖(指向你的 harness 源码 checkout)
mkdir -p node_modules/@deepseek-ai
ln -s /path/to/harness/vendor/schemastery node_modules/@deepseek-ai/schemastery
ln -s /path/to/harness/packages/core/tools node_modules/@deepseek-ai/dsh-tools
ln -s /path/to/harness/packages/llm/llm node_modules/@deepseek-ai/dsh-llm
ln -s /path/to/harness/packages/core/session node_modules/@deepseek-ai/dsh-session
# 2. 单元测试
pnpm install # 安装 @deepseek-ai/schemastery(npm)
pnpm test
# 3. 挂载到开发 profile 并启动
DSH_HOME=~/.dsh-dev dsh plugin --profile web add link:/path/to/dsh-quest
DSH_HOME=~/.dsh-dev dsh web # 另开终端按需运行 pnpm run dev:web 做客户端 HMR> node_modules/ 只属于本仓库的开发环境,不进入发布包(files 与 > .gitignore 已排除)。正式安装走 npm/github 时依赖自动解析。
常见问题
为什么「提前结束」后还要回答当前这一题? 求索在一轮(turn)内连续提问,收尾请求以 steering 进入运行中的轮次; 当前悬而未决的问题需要先作答或点「放弃整组问题」,随后 Agent 立即收敛。
题量为什么不是精确的 N? 模型根据你的每个回答自适应调整,±5 题的弹性是有意为之;若想更严格, 在模板中加强措辞或调高目标题量。
会话模式可以中途换吗? 不能 —— 与普通会话一致,首轮运行后预设即锁定。
求索会话能正常参与后续所有功能吗? 能。它只是带了一个 quest 标记的普通会话,压缩、目标、子代理等一切照常。
License
MIT