DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Set Session Title — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
S

dsh-set-session-title

Set Session Title

面向模型的工具,可通过 harness session-title 服务重命名发起调用的会话。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:CancerTiN/dsh-set-session-title#38f5d7293ac423f93580a74b2a83561980c182d1
README兼容性版本

兼容性与来源证明

Set Session Title 以 dsh-set-session-title 发布,当前版本为 0.1.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/29

版本

0.1.1stable
2026/9/29

相关插件

正在加载相关插件…

最新版
0.1.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/29
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Ab Chartdsh-ab-chart带有绘制其调用的浏览器卡片的图表渲染工具,封装在一个可发布的插件包中Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义

README

dsh-set-session-title

A model-facing set_session_title tool for DeepSeek Harness (dsh) — the agent can rename its own session.

中文说明

Why this exists

DSH owns session titles properly: they are log-only session/title events (zero tokens) served by @deepseek-ai/dsh-session-title, written either by a deterministic first-prompt fallback or by an optional LLM provider.

What is missing is a way for the agent to fix one. Automatic titling can produce a content-free result — observed on a real session: the provider overwrote a usable fallback with the bare phrase 会话标题 ("session title"), i.e. the instruction's own vocabulary echoed back (discussion #8289). The rename capability itself exists (SessionTitleService.rename(session, title), the GUI rename dialog, the host's own delivery path uses it), but 0.2.0-rc.2 exposes it to no model-facing surface:

  • no tool;
  • no session CLI subcommand (plugin and duplicate only);
  • /api guarded by an authority-bound signed cookie whose launch token is a per-process randomBytes() value that is never persisted, so a local process cannot legitimately obtain it.

This plugin adds exactly that one existing service call as a tool. It does not touch authentication, storage, or the session log directly — the capability is granted by composing the row.

Behaviour

Writeappends a session/title event with source: { kind: "user" }
Pinninga user-sourced title is authoritative: in-flight automatic generation is superseded and later prompts schedule none (an explicit refresh is the deliberate unpin)
Scopethe calling agent's own session (exec.agent.session)
Normalizationtrimmed, terminal control sequences removed, capped at the deployment's maxTitleBytes (dsh-base ships 80); input that normalizes to empty is rejected
Costchanges no message in the conversation and adds no tokens

Install

# recommended: git spec pinned to a release tag (reproducible, and immune to the tarball caveat below)
dsh plugin --profile <name> add github:CancerTiN/dsh-set-session-title#v0.1.1

# drop the #v0.1.1 fragment to follow the default branch instead of a pinned release

# a tarball URL works too — read the caveat below before picking one
dsh plugin --profile <name> add https://github.com/CancerTiN/dsh-set-session-title/archive/refs/tags/v0.1.1.tar.gz

The manifest declares dsh.bundle.patch, so add appends dsh-set-session-title to the profile's dsh.profile.bundles and its patch inserts the tool row into the composed tree.

Tarball-URL caveat. Under the pnpm bundled with the desktop app (11.7.0), a GitHub tarball URL installs once and then fails on every later resolve that reuses the same pnpm store — ERR_PNPM_MISSING_TARBALL_INTEGRITY, where deleting the lockfile and --force both change nothing. Reproduced and reported upstream as discussion #8294. A git spec is unaffected because it resolves to a commit-addressed gitHosted entry, which pnpm does not subject to the integrity requirement; a tarball URL is still fine when the store has not seen it (or on a newer pnpm).

On 0.2.0-rc.2 the desktop app picked the tool up without a restart (the client-side tool schema updated mid-session and the call succeeded immediately). Other builds may need the profile restarted.

Requirements

Both injected services ship with dsh-base, so the default web / desktop / headless compositions satisfy them:

servicerole
toolstool registry
sessionTitle@deepseek-ai/dsh-session-title (row id session-title)

A composition missing either one fails loud at load instead of registering a tool that cannot work.

Usage

Ask the agent, or call it from a skill. Argument:

{"title": "安装终端插件并核验连通性"}

Result:

{"title": "安装终端插件并核验连通性", "eventSeq": 1307}

Read back either way (both should show the new title):

# the projection cache the GUI reads; seq matches the returned eventSeq
python3 -c "import json;print(json.load(open('$DSH_HOME/storages/session_projcache/sessions/$DSH_SESSION_ID.json'))['record']['rows']['title'])"

# the durable log; the last session/title event's source.kind should be "user"
zstd -dc "$DSH_HOME"/sessions/*/"$DSH_SESSION_ID"/session.v4.jsonl.zstd | grep session/title | tail -1

Why this package has zero dependencies

This is a hard constraint, not a style choice.

Declaring an in-box package (for example @deepseek-ai/dsh-tools, the documented home of defineTool) as a dependency makes pnpm materialize a second copy inside the profile. Module identity then splits for a module-local Symbol that keys a runtime surface of the tool registry, so ctx.tools[TOOL_RUNTIME_SCHEDULER] reads back undefined inside dsh-agent-loop and every tool call in that profile fails — bash, read, and this plugin's tool alike — with a bare Cannot read properties of undefined (reading 'prepare'). Reproduced and isolated on 0.2.0-rc.2; written up in discussion #8287.

So lib/index.js imports nothing and the tool definition is hand-written JSON Schema. ctx.tools.register() requires only output: { schema, render } plus a schema inside the supported subset (type / properties / required / additionalProperties / items / enum / const and the description annotation) — which is what defineTool compiles a declaration into. The trade-off: register() does not wrap execute with schema validation, so the single argument is checked by hand.

Verified on

@deepseek-ai/dsh-desktop-runtime 0.2.0-rc.2, macOS, session format v4 — both a headless profile and the desktop app's live session:

{"type":"tool/call","seq":1306,"data":{"name":"set_session_title","arguments":"{\"title\":\"安装终端插件并核验连通性\"}"}}
{"type":"session/title","seq":1307,"data":{"title":"安装终端插件并核验连通性","messageSeqs":[],"source":{"kind":"user"}}}

messageSeqs: [] is the signature of rename(): the title is explicit, not derived from a prompt.

Limitations

  • Only the calling session can be renamed; there is no cross-session rename and no target-id argument.
  • A non-agent caller (plain host-side execution) is rejected.
  • A deployment that does not compose session-title fails loudly at load — deliberate, so the tool can never appear without the capability behind it.

Uninstall

dsh plugin --profile <name> remove dsh-set-session-title

Titles already written stay in the session log: a title is a log fact, not plugin state.

License

MIT