前言¶
DeepSeek Harness(DSH)把对话能力拆成 Cordis 插件栈:模型、工具、会话状态各自挂扩展点。默认助手往往「有问必答、一条流到底、语气恒定」,和 IM 或角色 bot 里常见的「偶尔不回、分条出现、亲疏有别」不是同一套行为。
要在不改前端、不碰模型权重、不写外部文件的前提下,让会话侧多出这类节奏,需要在 agent/pre-step、会话投影和工具注册上动手。下面介绍社区插件 dsh-alive(维护者 Kaitox326,分类:趣味换装):它把五条机制收进一个 bundle,状态跟着 session 落盘,由 session 事件推导。
这是什么¶
dsh-alive 是面向 DSH 的「活人感」宿主插件:不回、分条节奏、状态外置、脏记忆、差序对待。它不替代人格 prompt 或长期记忆方案,而是在每轮进模型前做概率拦截、注入节奏与状态提示,并从用户消息里用规则抽少量「印象」。
项目地址:GitHub — Kaitox326/dsh-alive;社区目录页:skillhub.cn/plugins/Kaitox326/dsh-alive。DSH 生态是「一切皆插件」;目录站为社区独立站点,与 DeepSeek / 幻方无官方从属关系。
当前 package 版本为 0.1.0,许可证 MIT,要求 Node >= 22。
核心功能:五条机制落在哪¶
README 用一张表概括实现方式;下面按同一事实展开,便于对照配置项。
| 机制 | 落在哪 | 对应配置 |
|---|---|---|
| 不回 | agent/pre-step 返回 { kind: 'reject' },这一轮不进模型 |
silentChance |
| 分条 + 延迟 | 注入节奏指令;可选自带停顿工具 | paceHint / selfPaceTool |
| 状态外置 | sessionProjections 的 alive 状态:mood / energy / intimacy |
stateHint |
| 脏记忆 | 从用户消息里抽印象条目,不是档案 | maxImpressions |
| 差序对待 | intimacy 同时决定注入措辞和说话硬度 | 同上 |
不回是真的不回。 reject 之后这一轮不产生任何输出,消息留在 inbox,下次唤醒才处理。桌面端表现就是「没反应」,容易误以为插件异常。因此默认 silentChance 为 0,需自行开启;作者建议从 0.1 起试。超过 silentMaxChars(默认 6 字)一律回复,不装死。命中 PITY 的输入一律回复,与活人感开关无关。
分条在 DSH 里不是「发多条 IM 消息」:assistant 仍是一条 message 流式渲染。分条依赖模型在段落之间调用停顿工具,让文本一块块出现——与 dsh-chat-pace 同一路子,本插件复用节奏提示,没有另造 IM 语义。
脏记忆是规则抽取,不是模型总结。只认三种句式:「我叫 X」「我喜欢/讨厌 X」「我在 X 上班/上学」。抽到就存,内部最多留 8 条、注入时带 maxImpressions 条(默认 5)。复杂来龙去脉应交给 dsh-context 等长期记忆插件。
状态推导(README 已验证部分):普通消息 mood +0.02、被同情 −0.25、挨骂 −0.15、回复后 energy −0.03;插件自注入的消息在 reduce() 里被忽略。
安装与启用¶
在 DSH 内安装 bundle(路径换成你本机克隆或解压后的插件目录绝对路径;资料未给出 github:owner/repo 一键命令,勿凭名称拼接):
plugin_manager action=install_bundle target="<插件目录绝对路径>"
或命令行:
dsh plugin add <此目录绝对路径>
装完重启 DSH 桌面端。desktop profile 被 Electron 独占,改完不重启看不到效果,命令行也无法 --dump-config 替代桌面侧生效。
在 ~/.dsh/profiles/desktop/cordis.patch.yml 增加同 id 的覆盖,例如:
- id: dsh-alive
name: "dsh-alive"
config:
silentChance: 0.2
paceHint: true
selfPaceTool: false
stateHint: true
maxImpressions: 5
全部默认值(摘自 README):
| 键 | 默认 | 说明 |
|---|---|---|
enabled |
true |
总开关 |
silentChance |
0 |
不回的概率,默认关 |
silentMaxChars |
6 |
超过字数一律回 |
paceHint |
true |
注入节奏指令 |
paceToolName |
hold_for_followup |
指令里提到的工具名 |
selfPaceTool |
false |
自己注册停顿工具 |
stateHint |
true |
注入状态和记忆 |
maxImpressions |
5 |
最多带几条印象 |
与 dsh-chat-pace 的关系¶
dsh-chat-pace 已提供 hold_for_followup。若已安装,保持 selfPaceTool: false,节奏提示会指向该工具。若未安装,可将 selfPaceTool 设为 true,插件会注册同名工具。两个插件同时注册同名工具会报错,不可双开。
版本适配与扩展点¶
插件只使用三个宿主扩展点,写在 apply() 里,无全局补丁:
agent/pre-step— waterfall,decision为{ kind: 'enter' | 'reject' }sessionProjections.register/stateOf— 状态落盘(stateVersion: 1)ctx.tools.register+defineTool— 工具注册
README 记载已验证版本:@deepseek-ai/dsh-* 0.1.2-rc.1、@deepseek-ai/cordis 4.0.2、schemastery 3.18.2、zod 4.5.4。更高版本时作者说明:服务缺失不崩、pre-step 结构变更只改 apply() 内两处判断、状态带版本号、不依赖包内 lib/ 深层路径。
未验证:在真实 DSH 进程里加载;agent/pre-step 监听顺序、stateOf 返回值时机仅在类型层核对。第一次装完建议先发一条普通消息,看日志里 alive 是否报错。
适用场景与注意¶
适合:希望在 DSH 桌面会话里试「概率不回 + 节奏提示 + 轻量印象 + 亲疏语气」,且能接受默认助手行为被改写的开发者或玩家向配置。
不适合:需要可靠长期记忆、复杂人设档案,或不能接受某轮完全无输出的场景(请保持 silentChance: 0)。
插件以当前 DSH 进程权限运行;安装前请自行阅读 源码与 LICENSE,确认行为与合规要求。
结尾¶
dsh-alive 把活人感的五条机制收敛到一个 Cordis bundle:不改前端、不碰模型、状态随 session 落盘。配置集中在 cordis.patch.yml 覆盖项;与 dsh-chat-pace 分工明确,避免重复注册 hold_for_followup。
- 目录页:https://www.skillhub.cn/plugins/Kaitox326/dsh-alive
- GitHub:https://github.com/Kaitox326/dsh-alive