JohnXu22786/session-titler

Two-phase session captioning: instant keyword titles while the conversation is busy, then cheapest-budget-model refinement plus a one-line summary once it goes idle.

Two-phase session captioning so long session lists are scannable instead of timestamp-numbered. Phase 1 runs the moment a user message lands: keywords are extracted and a title appears with near-zero latency and no model call. Phase 2 runs once the session has been idle for 5 seconds: a single auxiliary call upgrades the title from a keyword string to a natural phrase and also produces a one-line session summary written to the session log via the session/caption-note event within the same request. Cost guardrails route refinement to the cheapest tier among registered models (flash/haiku/mini etc.) by name pattern, with an explicit model override and full phase-2 disabling available. Titles follow the message language (Latin titles are capped by word count, CJK titles by character count), duplicates are not written twice and cross-session duplicates get a numbered suffix, and automatic generation stops completely after a manual rename.

Sessions & Messages ★ 1 updated 2026-08-17
View on GitHub ↗

Install

dsh plugin --profile demo add github:JohnXu22786/session-titler

README "Installing in DSH" quoted verbatim — the README's example profile is demo; substitute your own profile name. The README describes the plugin as a standard dsh bundle (configuration layer + plugin code) and documents two further local forms: a directory (dsh plugin --profile demo add /path/to/dsh-session-caption) and a built tarball (dsh plugin --profile demo add ./dsh-session-caption-0.1.0.tgz); removal is dsh plugin --profile demo remove dsh-session-caption. No npm package is claimed by the README, so the GitHub source form is used.

Compatibility

A DSH bundle installed into a profile. The README notes the session-title service is single-provider by design: if another plugin also registers a title provider the two replace each other, and this plugin's bundle layer disables the built-in session-title-llm line by default. Phase 2 needs at least one registered model to refine with.

Details

Recent updates

The README documents the two-phase pipeline, configuration and loading internals rather than a release table; the only version in the README is the example tarball name dsh-session-caption-0.1.0.tgz.

FAQ

Does it call a model on every turn?
No — the README's phase 1 extracts keywords with no model call at all, and phase 2 makes one auxiliary call only after the session has been idle for 5 seconds.
Will it overwrite a title I set myself?
No — the README says automatic generation stops completely after a manual rename and is never written back, even if a refinement call was in flight.
How is the refinement cost controlled?
The README routes refinement to the cheapest registered model tier by name pattern, caches the pick, and supports both an explicit model override and disabling phase 2 entirely.

Alternatives

beijingwahw/dsh-companion · chouyong/dsh-fork-graph · ChuanTianML/dsh-local-share

More plugins in Sessions & Messages

Browse more in Sessions & Messages

Guides for Sessions & Messages plugins