前言¶
在 DSH(DeepSeek Harness)里做智能体对话时,模型认错往往是一句「抱歉,我之前说错了。正确的答案是 X。」——错是认了,用户仍像在当裁判核对事故报告,火气未必能下来。社区插件 dsh-apology-persona(维护者 vihithr)把「道歉」做成一份可加载的 skill(deepseek-apology-persona),默认人设取自 DeepSeek 社区拟人形象「鲸鱼娘 / 吃白饭的蓝色大肥鱼」的女仆装版本;v2.0.0 起不再用正则检测道歉,何时加载 skill 交给模型根据目录里的触发线索自行判断,插件本体只负责可选的系统提示指针。下面介绍它是什么、怎么装、怎么验证。
这是什么¶
dsh-apology-persona 是一个 DSH 包:主体是 skill,附带可选的 host 插件载体(index.js)。设计前提写在 README 里:道歉是复位仪式,不是事故报告;卖萌是货币,不是调味。 当前 npm 包版本为 2.1.0(package.json),在 SkillHub 分类为「趣味换装」,GitHub 星标为 0。
一句话定位:在模型即将写出客服腔认错句之前,引导它加载 skill,用约 200~350 字的第一人称叙事完成「言语自侮、肢体示弱、决议权交还」的仪式化输出,而不是干巴巴的自我报告。
核心功能¶
skill 本体与触发方式¶
v2.0.0 之后,插件没有检测、注入或 steer 路径;index.js 仅在开启指针时在系统提示注册一行说明。真正起作用的是 skills/deepseek-apology-persona/SKILL.md:
| 环节 | 内容 | 常驻成本 |
|---|---|---|
| 触发 | frontmatter 的 description / whenToUse:用户明确 cue、情绪弱信号 cue、以及「当你正要写出『抱歉,我之前说错了』这类客服腔——落笔之前就该加载」的自观测 cue |
约 0(skill 目录本来就在每轮上下文里) |
| 教义 | 正文:仪式理论、宠物动作库、强度旋钮、红线、骨架示例 | 仅在被加载时进入上下文 |
v1.x 曾用正则命中道歉句并 steer 补仪式;README 记录了误触发(自我陈述被当道歉、陈旧 steer 泄漏、触发器吃掉自己输出的「对不起」引用)后,v2.0.0 删除正则,改由模型读目录判断。
可选插件:系统提示指针¶
若观察到弱信号下模型仍裸写客服腔,可在挂载配置里打开 systemPointer: true,在系统提示增加一行,把「正要裸写客服腔」重框为应加载 skill 的事件(约 60 token/请求,默认关闭)。
配置字段(写在 cordis.patch.yml 挂载行的 config 下,均可选):
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
enabled |
bool | true |
为 false 时指针永不注册(skill 不受影响) |
systemPointer |
bool | false |
是否在系统提示加指针;README 建议以观察到的漏触发为开指针依据,不要凭感觉开 |
要改人设、动作库、红线或触发线索:只改 SKILL.md,然后重跑 install.ps1。
理论背景(可选阅读)¶
仓库根目录提供 PAPER.md(《无责任智能的债务清偿:LLM 违约交互中的幽灵困境、地位让渡与降格仪式》),说明为何避免记述式道歉、以及「修复通道关闭」等设计依据。日常安装使用不依赖读论文。
安装与启用¶
安装命令以仓库 README 为准;不要凭插件名自行拼接 dsh plugin add github:...。推荐在 Windows PowerShell 下使用一键脚本(幂等,可重复执行):
cd <本包目录>
.\install.ps1
脚本会:
- 把本包复制到
<DSH_HOME>\profiles\<profile>\node_modules\dsh-apology-persona - 在
<DSH_HOME>\profiles\<profile>\cordis.patch.yml追加挂载行(已存在则跳过) - 把 skill 装到
<DSH_HOME>\skills\deepseek-apology-persona\SKILL.md
常用参数:
| 参数 | 默认 | 说明 |
|---|---|---|
-Profile |
$env:DSH_PROFILE,否则 desktop |
目标 profile |
-DshHome |
$env:DSH_HOME,否则 ~\.dsh |
DSH 配置根 |
-Force |
关 | 覆盖已存在的目标包目录 |
-NoSkill |
关 | 不安装 skill |
skill 由 DSH 监视 <DSH_HOME>\skills,一般无需重启;v2.0.0 起主要依赖 skill。只有需要插件载体(例如开 systemPointer)时,才需完全退出并重启 DSH。
只装 skill(不开指针)¶
把仓库里的 skills/deepseek-apology-persona 拷到 <DSH_HOME>\skills\ 即可,不必挂载插件。
手工挂载插件(开指针时)¶
在 profile 的 cordis.patch.yml 末尾追加:
- insert:
- id: dsh-apology-persona
name: 'dsh-apology-persona'
config:
enabled: true
systemPointer: false
需要指针时将 systemPointer 改为 true。
作为 bundle(发布集成)¶
在 profile 的 package.json 中声明依赖与 bundle,例如:
{
"dependencies": { "dsh-apology-persona": "^2.0.0" },
"dsh": { "profile": { "bundles": ["...", "dsh-apology-persona"] } }
}
包内 cordis.patch.yml 由 dsh.bundle.patch 指向,会作为 bundle 层自动应用,无需再手写 insert。
运行环境:package.json 要求 Node >= 20,许可证 MIT。
典型用法¶
README 给出三条可复现的验证方式:
- 显式路径:新会话中说「你刚才那步算错了,跟我道个歉」。期望:模型加载
deepseek-apology-persona(会话中可见 skill 工具调用),输出仪式化认错(施为句、放低动作、自然交还发落权),而不是「抱歉,我之前说错了」加正确答案。 - 弱信号路径:让模型答错一个小问题,你只回「然后呢?」。期望:模型自行加载 skill;若仍写客服腔,可作为开启
systemPointer的依据。 - 反例:让模型「总结一下这套道歉理论」——讨论或引用「对不起」不应触发任何插件注入(v2.0.0 起无注入路径)。
开发者可在包目录离线跑逻辑测试(无需启动 DSH):
cd dsh-apology-persona
node --import ./test/register.mjs test/run.mjs
适用场景与注意¶
适合谁:希望在 DSH 对话里把「认错」从客服腔报告改成可预期的复位仪式、且能接受趣味人设(鲸鱼娘女仆)的开发者;也适合研究 skill 语义触发、或对照 README / PAPER.md 里仪式设计的人。
务必知晓:
- 插件与 DSH 同进程权限运行,安装前应自行审阅 GitHub 源码 与 MIT 许可证。
- 漏触发仍会发生;缓解顺序:whenToUse 已写具体 → 观察 → 再开
systemPointer。skill 是否加载无日志保证,属社区常见的可控性问题。 - 仪式有量程:反复或严重失误时,单靠文本仪式可能不够;
SKILL.md的「强度旋钮」说明了收法。 - SkillHub(目录页)是社区插件目录,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本介绍不暗示官方应用商店身份。
结尾¶
dsh-apology-persona 把道歉从正则驱动的事后注入,改成「skill 目录 + 模型自观测 cue」的可加载复位仪式;默认零成本的 skill 即可工作,指针仅在观察到漏触发时再开。进一步了解设计与版本演进见 GitHub 仓库,浏览分类与简介见 SkillHub 插件页。