SipengXie2024
dsh-session-topics
DeepSeek Harness plugin: LLM session titles that survive reasoning models (startup sweep + turn-end retry), plus a hover-card session-size readout
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 15, 2026
- Updated
- Aug 15, 2026
Introduction
dsh-session-topics
Session topic titles for DeepSeek Harness (dsh) — LLM-generated session titles that actually hold up, plus a hover-card size readout for the session list.
Why
dsh ships a title generator (session-title-first-prompt-llm), but it is one-shot, never retried, and its maxOutputTokens: 64 reliably loses to reasoning models — so sessions keep the deterministic "first words of your prompt" fallback titles. This plugin retries until every session gets a real topic title, like Claude Code and Codex do.
It never registers a title provider (the slot is sole-tenant); it appends session/title log events directly, which the title service folds like any other. User-renamed (pinned) titles are never touched.
Features
- Startup sweep — 8s after boot, every persisted session still on a fallback title gets an LLM-generated title (current default model) written into its log. Live sessions go through
Session.append; cold sessions throughsessionPersistence.load+append. - Turn-end retry — on every agent
running → idle, if that session's title is still the fallback, retitle it. Bundle-layer listeners cover all sessions. GET /topics-size?id=<sessionId>— durable log byte size, feeding the hover-card patch below.GET /topics-sweep— manually trigger a sweep and get per-session results as JSON (debugging).
Install
dsh plugin --profile web add .\dsh-session-topics-0.3.0.tgz # tgz attached to the latest release
# restart dsh web
Reinstalling the same version is a no-op (pnpm dedupes by name+version) — bump the version before repacking.
Hover-card size patch (self-healing)
The session-list hover card belongs to the shipped dsh-client-ui-workspace bundle and exposes no plugin slot, so the size line is a source patch. Since 0.3.0 the plugin re-applies it automatically at every boot — including after dsh upgrades rematerialize the shared layer. No manual step. (Shared-layer files are pnpm store hardlinks, so the patch is written delete-then-rewrite.)
A manual entry point remains for machines without the plugin:
node scripts/patch-hover-size.mjs
- Idempotent; exits loudly without touching anything if the anchors drift (new dsh version).
- The size line stays hidden when this plugin is not running.
Verified
dsh 0.1.0-rc.6, web profile: 8 existing sessions retitled end-to-end (live append + cold persistence append), hover size served and rendered.