让智能体自己给当前会话起个合适的名字
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add CancerTiN/dsh-set-session-title该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 35 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-set-session-title(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/8 09:41:26
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 智能体重命名会话
- 设置会话标题
面向模型的 set_session_title 工具,用于 DeepSeek Harness(dsh)——让智能体重命名自己的会话。
README
由 DeepSeek 最新模型翻译生成dsh-set-session-title
给 DeepSeek Harness 的模型侧加一个 set_session_title 工具:agent 可以自己给当前会话改名。
为什么需要它
DSH 的会话标题是 log-only 的 session/title 事件(不占 token),由 @deepseek-ai/dsh-session-title 服务拥有:
- 自动来源一:首条人类 prompt 的确定性 fallback(dsh-base 配的是 5 词 / 40 字节);
- 自动来源二:一个可选的 LLM provider(dsh-session-title-first-prompt-llm,5 词 / 10 个 CJK 字)。
这两条都可能产出没用的标题。实测某会话被 LLM provider 命名成了字面量「会话标题」。
改名能力本身存在(SessionTitleService.rename(session, title),GUI 的会话列表里有改名对话框,host 的 webhook 路径也用它),但之前没有任何入口是给模型用的:没有工具、CLI 也只有 plugin / duplicate、/api 被 cookie 栅栏挡住。所以技能想「自动改名」时无路可走。
展开完整文档(README 剩余 1 节)
dsh-set-session-title
给 DeepSeek Harness 的模型侧加一个 set_session_title 工具:agent 可以自己给当前会话改名。
为什么需要它
DSH 的会话标题是 log-only 的 session/title 事件(不占 token),由 @deepseek-ai/dsh-session-title 服务拥有:
- 自动来源一:首条人类 prompt 的确定性 fallback(dsh-base 配的是 5 词 / 40 字节);
- 自动来源二:一个可选的 LLM provider(dsh-session-title-first-prompt-llm,5 词 / 10 个 CJK 字)。
这两条都可能产出没用的标题。实测某会话被 LLM provider 命名成了字面量「会话标题」。
改名能力本身存在(SessionTitleService.rename(session, title),GUI 的会话列表里有改名对话框,host 的 webhook 路径也用它),但之前没有任何入口是给模型用的:没有工具、CLI 也只有 plugin / duplicate、/api 被 cookie 栅栏挡住。所以技能想「自动改名」时无路可走。
本插件把那行服务调用包成一个工具,capability 由 host 组合授予,不碰鉴权、不写存储。
行为
- 调用 ctx.sessionTitle.rename(session, title),写入 source: {kind: "user"} 的 session/title 事件;
- 钉住语义:user 来源的标题会压制自动改名,之后不再自动重命名(要恢复自动得显式 refresh);
- 标题按部署配置归一化与截断(dsh-base 为 maxTitleBytes: 80),归一化后为空则拒绝;
- 只改标题,不动任何消息、不产生 token 成本。
组成要求
| 依赖 | 说明 |
| tools | 工具注册表(dsh-base 组合) |
| sessionTitle | @deepseek-ai/dsh-session-title 服务(dsh-base 组合,id session-title) |
inject 缺任一服务会在加载时 fail loud,不会静默降级。
安装
推荐:git 形式并固定到 release tag(可复现,且不受下面 tarball 坑的影响)
dsh plugin --profile add github:CancerTiN/dsh-set-session-title#v0.1.1
去掉 #v0.1.1 后缀则改为跟随默认分支
tarball URL 也可用——但请先读下面的注意事项
dsh plugin --profile add https://github.com/CancerTiN/dsh-set-session-title/archive/refs/tags/v0.1.1.tar.gz
package.json 里声明了 dsh.bundle.patch,所以 add 成功后会自动把 dsh-set-session-title 追加进该 profile 的 dsh.profile.bundles,其 patch 再把工具行 insert 进组合树。
安装后不需要重启即可生效:app 的 HMR 会认领 profile 变更(实测 0.2.0-rc.2 桌面版在 add 完成后,当前会话的工具清单立刻出现了 set_session_title)。若你的版本未热加载,重启该 profile 即可。
tarball URL 的坑:在桌面版内置的 pnpm 11.7.0 下,GitHub tarball URL 能装成功一次,之后任何复用同一 pnpm store 的再次解析都会失败(ERR_PNPM_MISSING_TARBALL_INTEGRITY;删 lockfile、加 --force 均无效)。已复现并上报为 discussion #8294。上面的 git 形式不受影响:它解析成按 commit 定位的 gitHosted 条目,pnpm 对其不做 integrity 校验。
⚠️ 零依赖是硬约束,不是风格选择
本插件的 package.json 刻意不声明任何依赖,lib/index.js 也刻意不 import 任何东西(没有 @deepseek-ai/dsh-tools 的 defineTool)。
原因:一旦把 in-box 的 @deepseek-ai/* 声明为依赖,pnpm 就会在 profile 里装第二份副本,而符号(symbol)键的运行时表面会因此分裂——app 自己的 dsh-agent-loop 读 ctx.tools[TOOL_RUNTIME_SCHEDULER] 拿到 undefined,于是该 profile 里所有工具调用全部失败(不只是本工具)。0.2.0-rc.2 上的实测报错就是:
Cannot read properties of undefined (reading 'prepare')
隔离实验(可复现):装带 dsh-tools 依赖的版本 → 连第一方 bash 工具都失败;移除后 → 恢复正常。所以工具定义改为手写:ctx.tools.register() 只要求 output: { schema, render } 加一份受支持的 JSON Schema(type/properties/required/additionalProperties/items/enum/const + description 注解),这正是 defineTool 会编译成的形状。手写定义因此少了 defineTool 的参数校验包装,execute 里自行校验那一个字符串参数。
验证记录(0.2.0-rc.2,headless profile 端到端)
seq=20 tool/call set_session_title {"title": "端到端改名验证"}
seq=21 session/title {"title": "端到端改名验证", "messageSeqs": [], "source": {"kind": "user"}}
seq=28 turn/end {"reason": {"kind": "completed"}}
同一 profile 里 bash 工具同轮通过(EXIT=0),确认无符号分裂。桌面 profile 上的实测见下(会话 v4 日志):
seq=1306 tool/call set_session_title {"title": "安装终端插件并核验连通性"}
seq=1307 session/title {"title": "安装终端插件并核验连通性", "messageSeqs": [], "source": {"kind": "user"}}
回读核验:投影缓存 $DSH_HOME/storages/session_projcache/sessions/.json 的 record.rows.title.val 与上述一致。
已知边界
- 只能改调用者自己的会话(工具用 exec.agent.session),没有跨会话改名;
- 非 agent 调用者(纯 host 侧执行)会被拒绝;
- 若某部署没有组合 session-title 服务,本插件加载失败——这是刻意的,避免出现「工具在但能力不在」。
卸载
dsh plugin --profile remove dsh-set-session-title
卸载后已写入的标题事件仍在会话日志里(标题是日志事实,不是插件状态)。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
CancerTiN/dsh-set-session-title
让智能体自己给当前会话起个合适的名字
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,489已汉化DSH
73.1
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,918已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,453已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
Download DS Bot for Windows 10/11 64-bit / 下载 Windows…
★ 5,293已汉化DSH
71.2
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,797已汉化DSH
71.1
这是你的仓库?认领条目