liangmianya/dsh-synapse
liangmianya/dsh-synapseDeepSeek Harness 的可视化非线性对话工作区:把会话、追问与分支变成可浏览、可拖拽的对话地图。
English | 中文
A DeepSeek Harness (DSH) session-title plugin that condenses a full sentence into a single word for easier recall.
DSH generates session titles with the official session-title-first-prompt-llm plugin, which often outputs a complete sentence — a verbatim echo like "Explain what JavaScript closures are" ends up in the sidebar, long and hard to scan.
The root cause is the official prompt: its only length constraint is "Aim for about 5 words" — "aim for" is a soft target that models routinely overshoot, and it asks for "concise" without showing what concise means. The goal is not specific enough, and that is what makes titles wordy.
This plugin keeps all official logic untouched and changes exactly one thing: the system prompt — explicit rules plus correct/incorrect examples that turn "concise" into an executable standard.
| Session content (original) | This plugin's title |
|---|---|
| 解释一下JavaScript闭包到底是什么 | JS闭包浅说 |
| 用英语表达中国近代半文言文文法 | 半文言文法表达 |
| 中式微恐2.5D沙盒生存游戏系统PRD | 游戏PRD |
| Fixing Memory Leak in Node | Node memory leak |
| Database Schema Design Review | Schema review |
The new prompt gives the model four hard rules:
Six correct/incorrect example pairs anchor the target style, so the model imitates the pattern instead of guessing what "concise" means.
first-prompt provider and calls the official executeSessionTitleLlm() from @deepseek-ai/dsh-session-title-llm, so input byte caps, output-token caps, the timeout code, route resolution, and the session/title-llm-request log event all stay official; the only differences are the system prompt and the first-line title extraction the official provider also performs;Requires DSH 0.2.1-rc.x (@deepseek-ai/dsh-session-title* >= 0.2.1-0). DSH 0.2.1 replaced the shared generateSessionTitleWithLlm() helper with executeSessionTitleLlm() plus provider-owned prompt framing and output parsing; this build targets that interface. If a later DSH changes the shared signature again, the plugin fails loudly instead of writing a malformed log event.
This plugin is a dsh bundle — install it directly from GitHub, no manual config editing:
dsh plugin --profile <name> add github:Relethe/dsh-brief-session-title
<name> is the profile whose plugins you manage (web, headless, desktop, …). Desktop builds also expose the same operation from the sidebar Plugins page; both paths write the profile's package.json and apply the bundle's own patch layer.
If the package is published to npm, the same command works with the package name:
dsh plugin --profile <name> add dsh-brief-session-title
For a local checkout (relative paths resolve against your invoking directory):
dsh plugin --profile <name> add ./dsh-brief-session-title
dsh plugin forwards its arguments to pnpm and then reconciles: because this package declares dsh.bundle, it joins the profile's bundle layer automatically, and the bundle's own cordis.patch.yml applies (disable the official title plugin + mount this one).
Restart DSH — new session titles take effect from then on.
| Key | Default | Meaning |
|---|---|---|
maxInputBytes | 4096 | UTF-8 byte cap for the framed JSON input; oversized input fails instead of truncating |
maxOutputTokens | 64 | Output-token cap for the title request |
timeoutMs | 60000 | Per-request timeout in milliseconds |
provider / model | omitted | Supply both to use a dedicated route; omit to reuse the session's main-request route |
targetWords / targetCjkCharacters are intentionally not exposed: the custom prompt fixes its own length rules, so those official knobs have nothing to configure here.
dsh plugin --profile <name> remove dsh-brief-session-title — the official title plugin resumes automatically.MIT