Sessions & Messages

dsh-session-title-idle-refresh

2001Y/dsh-session-title-idle-refresh · ★ 0

2001Y

DSH session-title provider: titles from all human messages + idle retitling after 30 min

License
MIT
Added
2026-10-30
Maintenance
active
Install kind
github
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-10-30T09:37:59.848Z
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add 'github:2001Y/dsh-session-title-idle-refresh#693d25741df4c359bf60c8c81167f294c73a10c3'

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

DSH (DeepSeek Harness 0.2.1) session-title plugin built for Yoshiki Tamura.

  • Registers the session-title provider with automatic: "first-prompt" — the initial title is generated exactly once, as with the stock provider — but generation reads all human messages (stock all-prompts policy, including its keep-an-adequate-title stability rules, with the input trimmed to the byte budget).
  • A timer scans live sessions every scanMs. A session is refreshed once via ctx.sessionTitle.refresh() when all hold:
    • its title does not yet cover the latest human message,
    • the last event and the last human message are older than idleMs (default 30 min),
    • it has at least minMessages human messages (default 2),
    • it is not a subagent child session,
    • its title is not user-pinned (rename). Attempts per uncovered tail are recorded in memory; a refresh is never retried for the same tail before max(idleMs, 30min) passes.

Install (web profile)

dsh plugin --profile web add dsh-session-title-idle-refresh
# then restart dsh web

The package ships a bundle patch (cordis.patch.yml) that inserts the provider row with the defaults below and disables the stock session-title-llm row — only one title provider may be registered, and this plugin replaces it (the same swap pattern the official session-titles bundle uses for its all-prompts provider). To tune, restate the row in your profile's cordis.patch.yml:

- id: session-title-idle-refresh
  config:
    idleMs: 1800000
    scanMs: 60000

Config defaults

idleMs 1800000 · scanMs 60000 · minMessages 2 · maxPerScan 3 · targetWords 5 · targetCjkCharacters 10 · maxInputBytes 16384 · maxOutputTokens 4096 · timeoutMs 60000. No provider/model is pinned: titles use each session's own logged route, like the stock provider.

Upstream

An in-tree version of this behavior (a third automatic mode, idle, for the session-title service) was prototyped against deepseek-ai/deepseek-harness and is kept here as upstream-idle-mode.patch. It is shelved for now: the upstream repository does not accept external PRs, and the maintainer prefers the plugin form.