首轮自动命名 apherchin/dsh-rename-title-after-first-turn
DeepSeek Harness主会话首轮结束后自动生成一次标题并冻结
29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add apherchin/dsh-rename-title-after-first-turn该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
装得上吗[实装验证]—
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →数据截至 2026/10/02·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 主会话首轮后自动命名
- 仅命名一次并冻结
- 不影响子代理与队友会话
仅宿主侧插件:主会话跑完第一轮后自动命名一次;子代理与队友会话不受影响。
README
由 DeepSeek 最新模型翻译生成dsh-rename-title-after-first-turn
中文 | English
主会话「第一轮对话结束后,自动总结命名一次」的 host-only DSH 插件(不改 app.asar,无 client 半边)。
它解决什么
DSH 自带的兜底命名是「首条消息截到 40 字节」,经常读起来不像个标题;而内置的 first-prompt 标题 provider 在本机近乎必失败。本插件在第一轮真正结束之后(已有提问、已有回答)用一次模型调用总结出标题,此后永久不再改。
行为
- 触发:turn/end 且 turn >= 1。turn === 1 是第一次机会;成功落库后永久冻结(后续轮次被幂等守卫跳过)。第一次机会失败时,允许在后续轮次重试,上限 maxAttempts。
- 只碰主会话:session.header 必须是对象、parentSession 为空、且 delegationDepth 缺失或为 0;subagent / teammate 会话一律不动。判据是 fail-closed(形状不认识就不碰),因为它是兑现这条硬要求的唯一守卫。
- 素材:第一轮的「首条人类提问 + turn === 1 的所有助手 text 块」(reasoning 与工具调用一律排除)。重试时素材仍只取第一轮。
展开完整文档(README 剩余 1 节)
dsh-rename-title-after-first-turn
中文 | English
主会话「第一轮对话结束后,自动总结命名一次」的 host-only DSH 插件(不改 app.asar,无 client 半边)。
它解决什么
DSH 自带的兜底命名是「首条消息截到 40 字节」,经常读起来不像个标题;而内置的 first-prompt 标题 provider 在本机近乎必失败。本插件在第一轮真正结束之后(已有提问、已有回答)用一次模型调用总结出标题,此后永久不再改。
行为
- 触发:turn/end 且 turn >= 1。turn === 1 是第一次机会;成功落库后永久冻结(后续轮次被幂等守卫跳过)。第一次机会失败时,允许在后续轮次重试,上限 maxAttempts。
- 只碰主会话:session.header 必须是对象、parentSession 为空、且 delegationDepth 缺失或为 0;subagent / teammate 会话一律不动。判据是 fail-closed(形状不认识就不碰),因为它是兑现这条硬要求的唯一守卫。
- 素材:第一轮的「首条人类提问 + turn === 1 的所有助手 text 块」(reasoning 与工具调用一律排除)。重试时素材仍只取第一轮。
- 落库:session.append("session/title", { title, messageSeqs: [首条人类消息 seq], source: { kind: "provider", provider: "session-title-first-turn", model } })。宿主按 higher-seq-wins 推给客户端 ⇒ 侧栏自动改名,无需刷新页面。
- 用户手改的名字永不覆盖。
- 失败一律降级为「保持 DSH 自带兜底名」,只记一行 warn,绝不外抛(插件跑在宿主 Node 进程里,抛错会波及整个应用)。
安装
dsh plugin --profile <你的 profile> add dsh-rename-title-after-first-turn
包内声明了 dsh.bundle.patch,所以 dsh plugin 会自动把它记进 dsh.profile.bundles,无需手工编辑 profile 文件。然后重启 DSH(打包版没有「刷新页面」)。
手动兜底(不用 dsh plugin 时):pnpm add dsh-rename-title-after-first-turn,再在 cordis.patch.yml 追加
- insert:
- id: session-title-first-turn
name: "dsh-rename-title-after-first-turn"
可选:想让本插件独占命名权,同时停用内置的 first-prompt provider(把 - id: session-title-llm + disabled: true 加进 profile 补丁)。包里的 cordis.patch.yml 有这两行的注释版本——默认不启用,因为它会改变别人的默认行为。
配置(profile 那条 insert 的 config,全部可选)
| 键 | 默认 | 允许范围 | 含义 |
| targetCjkCharacters | 12 | 1–60 | 中文目标字数 |
| targetWords | 6 | 1–30 | 非中文目标词数 |
| maxInputBytes | 8192 | 256–1000000 | 素材字节上限(分数向下取整) |
| maxOutputTokens | 2048 | 32–32000 | 输出上限(内置 provider 是 64,疑似被推理 token 吃光 ⇒ 本机 28/30 失败) |
| timeoutMs | 60000 | 1000–900000 | 端到端超时;是硬边界(Promise.race),适配器不看 signal 也会返回 |
| maxAttempts | 3 | 1–10 | 每个会话最多尝试次数(1 = 只试第一轮)。含「无路由」那种没打到模型的尝试 |
| maxTitleBytes | 80 | 8–512 | 落库标题的 UTF-8 字节上限 |
非法/越界值一律回退缺省,不抛错。
兼容性
- 实测环境:DSH 桌面壳 0.1.7-rc.2(Windows)。
- host-only:没有 client 半边 ⇒ 不参与渲染端「每条 client entry 必须 active」的全有全无启动门禁。
- 用到的服务:llm(ctx.llm.stream);订阅 session/event、session/disposed。
- 零 npm 依赖、无安装脚本、无构建步骤。
合规(按官方 cordis-plugin-development 对齐)
- bundle 形态:package.json 声明 dsh.bundle.patch(官方交付单位;缺它 install_bundle 会回滚整次安装)。
- 不 import 任何 @deepseek-ai/ 运行时包(只读 ctx 上的服务)。
- 不 append 新的 session 事件类型:只 append 官方的 session/title,并带 source.kind = "provider",满足宿主「provider 来源必须 cite 更早的 user 消息」这条不变量。
- apply 与所有回调绝不外抛,出错只记一行 warn。
测试
⚠️ 本机沙箱禁止命名管道 ⇒ node --test 会 spawn EPERM 并给出误导性的 # fail 1。逐文件跑(任意 cwd):
Get-ChildItem test -Filter '.test.mjs' | ForEach-Object { node $_.FullName; "exit=$LASTEXITCODE $($_.Name)" }
期望合计 47 pass / 0 fail(normalize 5 / first-turn 4 / stream 7 / prompt 10 / guard 7 / plugin-core 14)。
三个变异点(去掉 text 块过滤 / isMainSession 恒 true / messageSeqs 置空)都会让对应断言变红。
已知取舍
- 路由长期不可用 ⇒ maxAttempts 用尽后该会话静默永久放弃(只剩历史 warn 可查)。
- 超时用 Promise.race 保证调用方不被挂住、in-flight 一定释放;被放弃的那次迭代若适配器永不结束,仍会在后台悬着。
- attempts / inFlight 只在 session/disposed 时清理(与首方 dsh-session-title 同形)。
- 素材信封固定 128 字节:maxInputBytes < 128 时返回值会略超预算、128 ≤ 预算 ≲ 173 时返回空信封(配置下限 256,正常不可达)。
停用 / 卸载
- 按包名装的:dsh plugin --profile <你的 profile> remove dsh-rename-title-after-first-turn
- 按绝对路径 insert 装的:从 ~\.dsh\profiles\<profile>\cordis.patch.yml 删掉 id: session-title-first-turn 那条 insert
- 两种都要重启 DSH(已加载插件文件的内容改动不热重载)。
一个仅宿主侧的 DSH 插件,在主会话第一轮结束后命名一次,此后不再碰它。
- 触发:turn/end 且 turn >= 1。第 1 轮是第一次机会;标题一旦落地,会话即冻结(幂等守卫)。首次尝试失败可重试,最多 maxAttempts 次。
- 仅主会话:session.header 必须是对象,parentSession 为空,delegationDepth 缺失或为 0。子代理和队友会话绝不触碰 —— 这个判定是 fail-closed 的,因为它是那条硬性要求的唯一守卫。
- 素材:第一轮的第一个人类提问,加上 turn === 1 的全部 assistant text 块(reasoning 和工具调用排除在外)。重试仍然只喂第 1 轮。
- 持久化:session.append("session/title", …),source.kind = "provider",这样侧边栏自己就改了名(higher-seq-wins),不用刷新页面。手动改名绝不会被覆盖。
- 失败降级为 DSH 内置的兜底名称,只留一行 warn;apply 永不抛错。
安装
dsh plugin --profile <your-profile> add dsh-rename-title-after-first-turn
包内声明了 dsh.bundle.patch,所以 dsh plugin 也会把它记进 dsh.profile.bundles —— 不用改 profile 文件。装完重启 DSH。
配置(全部可选)
targetCjkCharacters 12 · targetWords 6 · maxInputBytes 8192 · maxOutputTokens 2048 · timeoutMs 60000 · maxAttempts 3 · maxTitleBytes 80。取值越界会回落到默认值,不会抛错。
兼容性
在 DSH desktop 0.1.7-rc.2(Windows)上测过。用到 llm(ctx.llm.stream),并订阅 session/event / session/disposed。没有 npm 依赖,没有构建步骤;因为是仅宿主侧,它不参与渲染进程那条「每个客户端入口都必须激活」的全有或全无启动门禁。
测试
Get-ChildItem test -Filter '*.test.mjs' | ForEach-Object { node $_.FullName; "exit=$LASTEXITCODE $($_.Name)" }
预期:47 pass / 0 fail。不要在禁止命名管道的 Windows 沙箱里用 node --test —— 运行器会以一条误导性的 # fail 1 失败。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
apherchin/dsh-rename-title-after-first-turn
主会话首轮结束后自动生成一次标题并冻结
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,270已汉化DSH
70.8
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。