dsh-session-title-interval-llm
其他 活跃维护

dsh-session-title-interval-llm

Townrain/dsh-session-title-interval-llm

轻量级会话标题自动生成插件,适配支持间隔 cadence 的LLM提供商,可按用户设定的提示词频次自动生成会话标题,运行时不占用额外系统资源,部署后静默生效无需手动配置。

1
Stars 标星
0
Forks 分支
1
Watchers 关注
0
Open Issues
TypeScript
主要语言
MIT
开源协议
52 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:Townrain/dsh-session-title-interval-llm
git clone https://github.com/Townrain/dsh-session-title-interval-llm.git
git clone git@github.com:Townrain/dsh-session-title-interval-llm.git
README.md main

dsh-session-title-interval-llm

English | 中文

A DeepSeek Harness plugin that keeps the sidebar session title tracking the whole conversation: an optional ctx.sessionTitle provider that runs a cheap LLM title request on the first eligible prompt, then re-titles the session every interval new human prompts. It registers the interval cadence — the harness's third automatic mode beside first-prompt and all-prompts — so a deployment routes titles to a cheap model (deepseek-v4-flash and friends) while the working model stays untouched.

The repository ships two packages: packages/session-title-interval-llm (the plugin) and packages/session-title-llm (its vendored shared title-LLM helper: framing, limits, timeout, the session-title-llm settings section, and live re-registration). The helper is vendored so the plugin installs as one self-contained repository; the upstream harness publishes the same package under @deepseek-ai/dsh-session-title-llm and the plugin uses whichever resolution wins.

Two integration modes

  • Injected mode — zero harness changes. Set mode: 'injected' in the plugin config: the plugin listens to session/event, counts eligible human messages per session, and appends session/title events directly. The deterministic fallback, the title fold, and the manual-rename pin keep working because every surface reads the log. A /retitle slash command (registered when a commands service is composed) regenerates on demand and deliberately unpins a manual rename. This is the self-contained path: the repository alone delivers the whole feature on a stock harness.
  • Provider mode (default). Registers the interval cadence on the session-title service, which requires a harness build whose service ships the interval cadence (deepseek-ai/deepseek-harness upstream change, also carried by the Townrain fork). It integrates with every service-owned surface: automatic scheduling, explicit refresh, and the web session-row Regenerate title action.

Install

Junction the two packages into your profile's healed node_modules, then mount the plugin row:

New-Item -ItemType Junction -Path $env:USERPROFILE\.dsh\profiles\node_modules\@deepseek-ai\dsh-session-title-interval-llm -Target <this-repo>\packages\session-title-interval-llm
New-Item -ItemType Junction -Path $env:USERPROFILE\.dsh\profiles\node_modules\@deepseek-ai\dsh-session-title-llm -Target <this-repo>\packages\session-title-llm

Then add to profiles/<profile>/cordis.patch.yml (disable the bundle's default title provider first, then insert this one):

- id: session-title-llm
  disabled: true
- insert:
    - id: session-title-interval
      name: '@deepseek-ai/dsh-session-title-interval-llm'
      config:
        targetWords: 5
        targetCjkCharacters: 10
        maxInputBytes: 4096
        maxOutputTokens: 64
        timeoutMs: 60000
        interval: 5
        provider: deepseek-official
        model: deepseek-v4-flash
        mode: injected

Restart the harness. With mode: 'injected' the sidebar titles start tracking the conversation on a stock harness: the first eligible prompt is titled immediately, then every interval prompts. /retitle regenerates (and unpins) a title on demand. On a harness with the interval cadence (the fork above), omit mode for the provider path, where the title model, the interval, and the automatic-titles switch also appear under Settings → Plugins → Plugin configuration (the shared session-title-llm settings section) and each session row's three-dot menu gains Regenerate title.

Session-row Regenerate title on stock harness

Injected mode also ships the row-menu surface on stock harnesses: the plugin
registers a webserver bridge, POST /plugins/session-title/retitle
({ "sessionId": "..." }), that resolves any loaded session via
sessions.get (no live agent required, so historical rows work) and runs the
same regeneration path as /retitle — the deliberate unpin included.

To surface it as a menu item, pair this plugin with
dsh-session-title-settings-card,
which injects the Regenerate title entry into the stock session-row menu
and patches the two stock seams the fork carries (its scripts/patch-stock.mjs
is idempotent — re-run after every dsh upgrade). Without the card plugin, the
bridge is still reachable directly (curl, other clients).

Configuration

See packages/session-title-llm/README.md for the shared required fields (targetWords, targetCjkCharacters, maxInputBytes, maxOutputTokens, timeoutMs, optional paired provider/model, optional enabled) and packages/session-title-interval-llm/README.md for the interval cadence contract.

Omit both provider and model to inherit the exact route from each logged main request; set both to route titles independently of the working model.

License

MIT — see LICENSE.