dsh-quest · New Quest
> A guided self-exploration plugin for DeepSeek Harness: the agent runs an > adaptive questionnaire-style interview to discover what you really want > to create, then converges on a set of creative ideas tailored to your answers.
中文 · [Core harness changes](harness/README.md)
---
What it is
Stop needing a fully-formed idea before you start. Click New Quest right below the sidebar's New Session button, pick a session mode and an exploration depth, and the agent interviews you like a patient creative coach:
1. One question at a time (multiple choice, custom answers welcome); 2. Each next question is written after reading your answer — it drills deeper along your expressed interests; 3. After roughly N questions (or whenever you ask it to stop), it calls finish_quest and converges; 4. It presents 3–6 creative ideas, each with a reason grounded in your answers; 5. The session then continues as an ordinary chat.
| Depth | Target | Positioning |
|---|---|---|
| Quick (low) | ~5 questions (±5) | Fast exploration |
| Standard (medium) | ~10 questions (±5) | Regular quest |
| Deep (high) | ~20 questions (±5) | Systematic interview |
> Counts are advisory: the model adapts to every answer, ±5 is by design.
UI surfaces
- Sidebar entry: a blue "New Quest" button directly below New Session.
- Launch dialog: session mode (the four agent presets) + depth; confirming
creates and opens the quest session.
- Automatic opening: the depth's opening prompt is injected as the first
message and the agent starts asking immediately.
- Blue titles: quest sessions keep the DeepSeek blue in the session list.
- Header badge: a blue "Quest · depth" pill next to the preset label.
- Progress: "Question X · target ~N" above the composer, plus **Finish
early** (steers a wrap-up request into the running turn).
- Done state: after
finish_questthe progress line reads "Exploration
complete".
Quick start
Prerequisites
- DeepSeek Harness **≥ the revision that includes
harness/quest-harness.patch** — see [Core harness changes](harness/README.md); the patch is a hard dependency, apply and build it first.
- Node ≥ 22.
Install
# npm (recommended)
dsh plugin add dsh-quest
# or from GitHub (pnpm will ask you to authorize the prepare script)
dsh plugin add github:LvienOeria/dsh-quest
# or link a local checkout (development)
dsh plugin add link:/path/to/dsh-questRestart dsh web. "New Quest" appears below New Session.
Use
1. New Quest → pick mode and depth → Start Quest; 2. Answer question by question (multi-select, or type your own answer); 3. Click Finish early whenever you want the ideas now; 4. Receive the idea list, reply with a number or your own thought — normal chat continues.
Customizing the interview
Settings → Plugins → New Quest offers:
| Setting | Notes |
|---|---|
| Opening prompt templates × 3 | One per depth; injected as the quest session's first message |
| Target counts × 3 | Advisory per-depth counts (1–60, defaults 5 / 10 / 20) |
| Default depth | Preselected when the dialog opens |
{count} in a template is replaced with the target count; changes apply to new quest sessions immediately. The same fields can be set in cordis.yml under the plugin row's config.
How it works
New Quest click
→ dialog: mode (4 presets) + depth (low/medium/high)
→ sessions.create({ agentPreset, quest: { depth } }) # marker persisted on the session header
→ session opens
→ host plugin listens for session/created + agent/created
→ injects the depth template ({count} filled) as the first message
+ appends a quest/opened event (idempotency guard)
→ agent interviews: ask_user_question (one at a time, adaptive)
→ progress = client counts questions from the conversation snapshot;
Finish early submits the wrap-up request via steering
→ agent calls finish_quest (appends quest/finished) → idea list → normal chatThe plugin only contributes four things: the creation marker (client), the opening injection (host), counting/display (client), and the convergence signal (finish_quest tool). The interview itself runs on the chosen preset's own capabilities — no session mechanics are replaced.
Development
# 1. Link workspace sources into the plugin 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. Unit tests
pnpm install
pnpm test
# 3. Mount into a dev profile and boot
DSH_HOME=~/.dsh-dev dsh plugin --profile web add link:/path/to/dsh-quest
DSH_HOME=~/.dsh-dev dsh web # optionally pnpm run dev:web for client HMRnode_modules/ is development-only and excluded from the published package.
FAQ
Why do I still have to answer the pending question after Finish early? The quest asks questions within one turn; the wrap-up request enters the turn via steering. Answer the pending question (or abandon the question group) and the agent converges immediately.
Why is the question count not exact? Adaptivity is the point — ±5 is intentional. Tighten the template wording or raise the target if you want stricter behavior.
Can the session mode be changed mid-quest? No — like any session, the preset locks after the first turn.
Do quest sessions keep every normal feature? Yes — a quest session is an ordinary session carrying a quest marker; compaction, goals, subagents and friends all work unchanged.
License
MIT