You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The built-in title provider (dsh-session-title-first-prompt-llm) can replace a usable fallback title with a generic phrase that identifies nothing. Observed on a real session: the provider overwrote the fallback 这里会有提示词文件吗 with the bare phrase 会话标题 — literally "session title", i.e. the instruction's own vocabulary echoed back.
There is a second, milder shape: the deterministic fallback can truncate mid-sentence, because the cap counts whitespace-delimited words (fallbackMaxWords: 5), which for Chinese input cuts inside a phrase.
Reproduction
Start a session whose first prompt is a normal Chinese question (observed: 这里会有提示词文件吗).
Let automatic titling run with the shipped dsh-base configuration:
A usable fallback is superseded by a title carrying no information about the session. In a second session the same pipeline produced a mid-sentence fragment as the durable title:
A provider revision should only become durable when it is at least as identifying as what it replaces. Concretely: a candidate that is generic vocabulary, or that merely echoes the titling instruction, should be rejected and the previous revision retained. The fallback path should not end on a dangling fragment when the input has no whitespace word boundaries (CJK).
Reject a candidate that equals or consists only of generic title vocabulary: 会话标题, 未命名, 新会话, untitled, new session, session, chat, …
Reject a candidate that is contained in, or equal to, the provider's own instruction vocabulary — 会话标题 is exactly the phrase the system prompt uses, which suggests echo rather than summarization.
On rejection, keep the previous revision instead of writing the candidate (the service already has the machinery: it supersedes in-flight work and pins on user-sourced titles).
In the fallback, treat the byte cap as the primary bound and prefer a boundary that does not split a CJK phrase; a trailing dangling function word (把本 above) is worse than a slightly shorter title.
Context
This is what motivated adding a rename path at all: the automatic result was bad enough to be worth fixing by hand, but 0.2.0-rc.2 exposes the rename capability (SessionTitleService.rename(session, title) via ctx.sessionTitle, plus the GUI rename dialog) to no model-facing surface — no tool, no session CLI subcommand (plugin / duplicate only), and /api behind the authority-bound signed cookie whose launch token is a per-process randomBytes() value that is never persisted. A model-facing set_session_title tool would make the bad automatic title self-correcting rather than permanent; see the companion discussion about the plugin that does this today.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Summary
The built-in title provider (
dsh-session-title-first-prompt-llm) can replace a usable fallback title with a generic phrase that identifies nothing. Observed on a real session: the provider overwrote the fallback这里会有提示词文件吗with the bare phrase会话标题— literally "session title", i.e. the instruction's own vocabulary echoed back.There is a second, milder shape: the deterministic fallback can truncate mid-sentence, because the cap counts whitespace-delimited words (
fallbackMaxWords: 5), which for Chinese input cuts inside a phrase.Reproduction
这里会有提示词文件吗).dsh-baseconfiguration:Current behavior
{"type":"session/title","seq":12,"data":{"title":"这里会有提示词文件吗","source":{"kind":"fallback"}}} {"type":"session/title-llm-request","seq":16,"data":{"titleProvider":"session-title-first-prompt-llm", "route":{"provider":"deepseek-official","model":"deepseek-v4-pro"}}} {"type":"session/title","seq":17,"data":{"title":"会话标题","source":{"kind":"provider", "provider":"session-title-first-prompt-llm","model":{"provider":"deepseek-official","model":"deepseek-v4-pro"}}}}A usable fallback is superseded by a title carrying no information about the session. In a second session the same pipeline produced a mid-sentence fragment as the durable title:
{"type":"session/title","seq":14,"data":{"title":"调用 set_session_title 工具,把本","source":{"kind":"fallback"}}}Expected behavior
A provider revision should only become durable when it is at least as identifying as what it replaces. Concretely: a candidate that is generic vocabulary, or that merely echoes the titling instruction, should be rejected and the previous revision retained. The fallback path should not end on a dangling fragment when the input has no whitespace word boundaries (CJK).
Environment
@deepseek-ai/dsh-desktop-runtime0.2.0-rc.2@deepseek-ai/dsh-session-title,@deepseek-ai/dsh-session-title-first-prompt-llmdeepseek-official/deepseek-v4-pro~/.dshNotes toward a fix
会话标题,未命名,新会话,untitled,new session,session,chat, …会话标题is exactly the phrase the system prompt uses, which suggests echo rather than summarization.把本above) is worse than a slightly shorter title.Context
This is what motivated adding a rename path at all: the automatic result was bad enough to be worth fixing by hand, but 0.2.0-rc.2 exposes the rename capability (
SessionTitleService.rename(session, title)viactx.sessionTitle, plus the GUI rename dialog) to no model-facing surface — no tool, nosessionCLI subcommand (plugin/duplicateonly), and/apibehind the authority-bound signed cookie whose launch token is a per-processrandomBytes()value that is never persisted. A model-facingset_session_titletool would make the bad automatic title self-correcting rather than permanent; see the companion discussion about the plugin that does this today.All reactions