Skip to content

dsh-greeter

Verified

dsh-greeter · v0.3.0 · MIT · Web UI

DeepSeek Harness 新会话自动开场:新建会话后助手主动打招呼,开场白由模型按人设生成;可在插件页调开关/延迟/提示词。

Install

dsh plugin add dsh-greeter

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Tags

Creators

Readme

dsh-greeter

给 DeepSeek Harness(dsh)用的新会话自动开场插件: 新建会话后不用你先说话,助手会自己开口打招呼;开场白由模型按你的人设生成,不是硬编码文本。

为什么需要它

DSH 的会话是请求驱动的:新建一个会话只会写一条 header,没有用户输入就不会产生任何 turn, 模型根本没有机会说话。写在 AGENTS.md 里的开场规则,也只能等你说了第一句之后才生效。

本插件监听宿主侧的 agent/created 事件,在真正的新会话上主动投递一条消息唤醒驱动器, 于是招呼是模型生成的真招呼。

安装

方式一:插件页(推荐) 侧栏 →「插件」→ 搜索 dsh-greeter → 安装 → 重启 DSH。

方式二:命令行

dsh plugin install dsh-greeter

装完后在侧栏「插件」页找到 dsh-greeter,打开详情页即可配置。

配置

插件详情页里可以直接调,改完下一次新会话就生效,不用重启:

参数 说明
自动打招呼 总开关。关掉后一次模型调用都不产生
延迟(毫秒) 0 = 会话一建立就开口;留一点窗口给手快先打字的自己(延迟期间你打了字,这次开场自动取消,不产生消耗)
开场提示词 投给模型的第一条输入(不是最终台词,模型会照它定调)

⚠ token 消耗:开启后每次新会话都会消耗一次模型调用(token)——开场白是模型 现场生成的,不是硬编码文本。怕费 token 就把总开关关掉。

也可以手改 ~/.dsh/dsh-greeter.json:

{
  "enabled": true,
  "delayMs": 1000,
  "text": "(系统提示:新会话已开始,请按你的角色设定主动打个招呼。)"
}

关于 mode 字段(已删除)

早期版本有一个 mode: "system" 选项(session.append() 直接往会话日志写一条 user/message,不唤醒模型)。它会在 turn/start 之前抢占 DSH 系统提示 (system/message)必须占据的 surface head 位置,导致会话日志被判定为损坏、 上下文丢失。该模式已彻底删除,插件现在只有一种行为(投递消息叫醒模型)。

老配置文件里残留的 mode 字段会被静默忽略(不报错、不生效,下次保存时自动消失)。

安全阀

以下情况一律不打招呼,绝不打扰你:

  • 只处理 startup 来源;恢复会话 / fork / 清空 / 压缩全部跳过
  • 子会话(subagent)跳过
  • 会话里已经有你的消息 → 让位给你
  • 待发队列里已经有内容 → 不插队
  • 同一会话只打一次招呼
  • 投递前再检查一遍(延迟窗口内你可能已经开口)
  • 插件卸载时清掉待触发的定时器(关掉插件就真的不会再开口)

兼容性

  • 需要 DSH 桌面版或 dsh CLI。
  • 插件是 bundle 形式(dsh.bundle.patch),会被装进 profile 的组合包层。
  • 宿主半侧零第三方依赖,只用 Node 内置模块;浏览器半侧通过 __ModuleLoader__ 挂配置面板。

开发与自测

node test/greeter.test.mjs

覆盖配置读写、坏值回落、各跳过分支、延迟与卸载清理、面板渲染等。改动 lib/*.js 后需重启 DSH。

许可证

MIT