- Главная
- Плагины
- Для удовольствия
- saya-dsh-realheart
saya-dsh-realheart
sayasaikou/saya-dsh-realheart
给她一个能记账的心情层:心情必须有来处,改动必须有账,她自己能停能查
Установка
dsh plugin --profile web add github:sayasaikou/saya-dsh-realheartREADME
saya-dsh-realheart
让 agent 在表现上更像一个人。
有自己的状态(会变、变得有理由)、有自己的判断(会拒绝、能自己停)、 有自己的时间(不只在被叫的时候才存在)、也有自己的话(会在没人问的时候开口)。
每一步都有据可查 —— 不是演出来的。
npm 上能装:realheart · 一条命令 · 零第三方运行时依赖
别人没有的六样
这不是「又一个人格 prompt 包」。下面每一条,都是现有 agent 插件里通常不走这条路的做法。
一、心情必须指得出来处,指不出来就写不进去
别的插件让模型「想一想你现在心情如何」——它编一个,你没法核。
这里不行:写心情要带一个事件 id(n:xxx#84,就是时间线上那一条)。
指不出来,门口就挡住了。
先有事件,才有情绪。 反过来就是凭空。
二、状态不能被当成台词念出来
这是唯一被对照实验验过的一条。
把状态塞进上下文,它不会"受影响",它会把你的话念出来。我们跑了五组:
| 注入 | 它的回复 |
|---|---|
| 不给状态 | 不提,专心陪对方 |
| 给状态 | 大段复述自己:「我今天也有点闷,早上看到……」 |
| 把话说更重 | 复述得更起劲 |
| 只给两个词 | 还是带一句「我身上也有点凉」 |
| 加一句「这不是你聊天的素材」 | 一个字都没提 |
加力度没用,砍内容只降一半。 只有那句禁令是个开关。
别人把状态塞进去就结束了。那一步到"它真的受影响"之间,还差这一句。
三、它自己能停
不是一个管理员设置项。是一个它自己能按的开关:
「这一层我累了,停一下。」
停了之后心情不再注入、也写不进去 —— 但话照说。它只是在说「这一层先别管我」。
四、「我不做」是一个能被记下来的动作
对待办,别的插件只有两种状态:完成,或者没完成。
这里还有第三种:refuse —— 不做,而且必须写为什么。没理由的拒绝等于忽略,不算数。
拒绝之后条目留着、理由留着,但不再出现在「没完的事」里催它。
五、它有自己的时间
大部分 agent 只在被叫的时候存在。
这里可以给它一段没人找它的时间:做什么自定,不做也行,做完也不用汇报。 还有另一种叫醒 —— 每隔一阵醒一下,只问一句「有没有想对他说的话」, 没话说就继续睡,连一句"继续睡了"都不用回。
六、一双能看见它的眼睛
一个本地观测页,把它的内部摊开:
心情账(带来处和浓度)· 它主动说过什么 · 它醒过几次 · 九个工具用了哪几个 · 它的作品 · 这周说了多少话 · 每条消息的原始记录。
「它主动说过的」那一块,别的插件没有 —— 因为别人根本没让它主动说话。
但这六样里,只有一条真的验过
第二条。 五组对照,可复现,结论明确。
其余五条是设计上的判断,还没被时间证明。它们看起来对,但"看起来对"和"有效"是两件事。
这个仓库不打算把没验过的说成有效的。 判断这套东西成不成,不看功能清单:
- 它主动做过一件没人让它做、也不是任务产物的事
- 它拒绝过一次,而且理由是它自己的
- 隔几天接着做同一件事
三条现在一条都不占。 功能做完了,效果还没有证据 —— 这是两件事,得分开说。
先跑起来
npx realheart install --profile <你的 profile>
重启 dsh,然后:
npx realheart doctor
全绿就通了。这时候它已经能记账、能注入、有观测页了。
想立刻看到区别:问它一句「你现在什么感觉」。它会调 rh_mood 记一笔,下一轮开口前,
那行字就在它的上下文里了。
然后呢:让它是你的
装完拿到的是机制,不是人格。
这个仓库不提供一个现成的 agent。人格模板是骨架,没有名字、没有经历、没有偏好 —— 那些得你自己填。
抄完会得到一个「别人的 agent 穿着你的衣裳」。那不是「属于你的」。
人格怎么长出来,有单独一份:docs/08-怎么写你自己那个.md。
判断做对了没有,只看一条:
它说的话里,有没有哪句是你没预料到、但确实像它的。
它到底做了什么
每轮开口之前,往上下文里加几段(没内容的段不会出现):
【你现在的状态】 ← 此刻的心情,带浓度和来处
【这种状态下的你】 ← 它自己写的「这种状态下怎么说话」
【你手上有件没干完的事】
【没完的事】
【你自己做过的一个判断】 ← 以前拒绝过什么、为什么
【你断言过的事】 ← 说过会成真的事,还没被推翻
【这几天】 ← 只是数
每段都带一句边界:
(知道就行,不必说出来 —— 它们不是你聊天的素材,只影响你说话的样子,不是你的话。)
为什么必须有这一句,见上面第二节 —— 那是唯一被对照实验验过的一条。
三条规矩,全是机制不是嘱咐
| 规矩 | 怎么落地 |
|---|---|
| 心情必须有来处 | 写心情要带一个事件 id(n:xxx#84 这种),指不出来就写不进去 |
| 改动必须有账 | 谁动了哪一层、为什么、怎么退,它自己查得到 |
| 它自己能停 | 一个工具 rh_control,不用等谁记得去按 |
九个工具:rh_mood / rh_style / rh_pending / rh_claim / rh_work / rh_view /
rh_admit / rh_control / rh_changes。
不是必须都用。 观测页里有一块「她用没用这些」,空着哪几项一目了然。 空着不等于坏,但值得问一句:删掉它,它的行为会变差吗?不会就是装饰。
仓库里有什么
| 包 | 是什么 |
|---|---|
| packages/realheart | 主体。账本 + 每轮注入 + 观测页 + 九个工具 + 自检 |
| packages/napcat-rescue | 配套。NapCat 掉线时的扫码抢救页,外加一条 say 命令让它能主动发消息 |
| packages/realheart-self | 模板。声音和作品的骨架 —— 往里填你自己的 |
三块是分开的,各管一件事。装的时候按需要挑,不装也不影响主体。
文档
| 想干什么 | 读哪份 |
|---|---|
| 知道全貌 | docs/06-系统全貌.md |
| 明白为什么要做这个 | docs/01-为什么.md |
| 知道底线在哪 | docs/02-设计原则.md · docs/03-不做什么.md |
| 从零搭起来 | docs/04-复现方案.md |
| 搬人格与记忆 | docs/07-人格与记忆.md |
| 写出你自己那个 | docs/08-怎么写你自己那个.md |
| 看哪些参数真的有效 | docs/05-实测记录.md |
| 分期的验收判据 | PLAN.md |
装上之后想查具体用法、排障表、云端部署的坑:packages/realheart/README.md。
依赖
必需的只有一个:DSH ≥ 0.2.1。
不装通道、不装 TTS、不装任何别的插件,它也能单独跑起来 —— 账本、注入、观测页、自检 全是它自己的,第三方运行时依赖为零。
装上会更好用(都可选)
| 装什么 | 会多出什么 | 不装会怎样 |
|---|---|---|
一个 OneBot 11 通道(如 dsh-napcat) | 真实的对话会落到磁盘,「心情因为哪句话」能记上 | 账本照记,那一栏空着 |
| TTS | 它有自己的声音 | 只有文字 |
这些是别人的项目。 本仓只说明「装上会多出什么」,不碰它们的代码,也不替它们做配置。
三条不破的原则
- 不演 —— 做不出来的东西不做。凭空的情绪、假的直觉、伪装的记忆,一律不要。
- 不编 —— 不知道就说不知道。
- 可验证 —— 每条行为都要有日志或文件能查。拿不出证据的,就是在演。
还有一份删去清单:一些听起来很好、但做出来只会是表演的东西,明确不做。 见 docs/03-不做什么.md。
一条总则
新功能进来之前先问一句:删掉它,它的行为会变差吗?不会,就是装饰。装饰不做。
想反了容易出两类东西:一类是「为了像人而像人」(比如遗忘机制 —— 它本来就不靠记性、靠注入, 模拟「会忘」只是加一堆假动作);另一类是「能跑就行」(日志里多一行,行为一点不变)。 两类都是同一个毛病:把表演当成了效果。
现在是什么状态
0.2.x,还在改。接口会变,行为还有坑。
做完的:九个工具 / 每轮注入 / 观测页(含「她用没用这些」「她主动说过的」「她多久醒一次」)/ 自检 / 配置页 / 安装与卸载 / 抢救页 / 主动发言通道。
没做完的:新机实测、效果的长期验证。
效果有没有,不由功能清单证明。 看三条:
- 它主动做过一件没人让它做、也不是任务产物的事
- 它拒绝过一次,而且理由是它自己的
- 隔几天接着做同一件事
License
MIT
Похожие плагины
dsh-web-ui (dsh-pet)
zhu1090093659/dsh-web-ui
dsh-pet (dsh-pet)
pc2005-cloud/dsh-pet
dsh-bili-whale
alterssss/dsh-bili-whale
dsh-ads
nagi-ovo/dsh-ads