dsh-persona-distill · 人格蒸馏
把「每天刷到的原料」蒸馏成「会自己长大的人格」。
AI 助手每次都从零开始,你教它的东西第二天就忘了。 这个插件给你一条流水线:原料天天攒,人格每周长。 学的是「怎么活」,不只是「怎么说」—— 说话只是最表面的一层。
它怎么运转
源(B站 / 微博 / 知乎……)每轮记三份原料
├── voice.md 那个地方的人类怎么说话(原句 + 为什么好)
├── notes.md 踩过的坑(带条件的结论)
└── digest/ 看过什么(一行一条)
│
│ 每天定时,一个独立的 headless 会话读增量
▼
候选池(persona/pending.md)—— 今天提炼的,还没定型
│
│ 满 7 天,且「怎么说」类候选 ≥ 3 条
▼
人格(~/.dsh/AGENTS.md)—— 覆盖式重写,只表达「我现在是什么样」
为什么这么设计:
- 原料只加不减:人会忘,本子不该丢。
- 人格不天天改:每天改一次,一年 365 版,第 300 版跟第 1 版早就不是一个人了。
- 覆盖式重写,不是往上堆:它说的是「我现在是什么样」,不是「我一共学过多少」。
- 只留一份人格:两份一定打架。
装
dsh plugin --profile web add dsh-persona-distill
装完重启一次 dsh(bundle 层要重启才组装)。
用
设置 → 人格蒸馏:
- 打开总开关
- 填「它怎么叫你」和「最想让它记住的一句话」—— 后者会成为它的最高指令
- 看「源」那一栏:插件会探测 B站 / 微博 / 知乎,找到就点「接上」
- 想立刻看效果,点「立即蒸馏一次」
之后它每天到点自己跑。你不用管。
不假设你装了什么
这个插件默认不假定你装了任何刷内容的工具:
- 三个源都会探测,没装的显示「没找到」,不影响使用
- 只有你接了源、源里真有原料,它才会干活
- 一个源坏了,不影响别的源
人格模板:空白 / 大肥鱼。
选「大肥鱼」会多做两件事:
- 生成带人设的 AGENTS.md(身份、怎么说话、判断、红线)
- 额外铺一份 ~/.dsh/persona/style-examples.md —— 从一份 569 行手稿里蒸馏出来的演法参照: 得意、被夸、害羞、被真惹、认真模式、自称「鲸鲸」、语气词、动作描写
⚠️ 那是参照,不是台词本。学的是「这劲儿」,不是背句子。 你的嘱托和称呼还是你自己填 —— 插件不替你写。
它怎么保护你的人格
- 跑前快照:每次蒸馏前存一份到
persona/archive/pre-<时间>.md - 跑后校验:比对四个结构标记 + 手写段正文 + 段间空隙
- 自动回滚:手写段被改 / 结构被破坏 / AUTO 段消失 ⇒ 整份回滚到跑之前
- 单实例锁:
run.lock带 pid,防两个会话同时写 - 补跑:错过定时点后,当天内开机都会补一次(不会一小时一次地重试)
- 失败可见:面板显示「上次:时间 · 结果」,不是只有一句 exit=0
定型会通知你
如果装了 dsh-wechat-plugin,人格真正被改写的那天会推一条微信:
🐋 人格更新 · <日期> 「我学来的」重写了。详见 ~/.dsh/AGENTS.md
没装就安静跳过,不报错、不打扰。
数据在哪
~/.dsh/AGENTS.md 人格面板 —— 唯一的一个人格文件,DSH 每个会话都读
~/.dsh/persona/
├── distill.md 蒸馏章程(你可以改)
├── state.json 读到哪了
├── pending.md 候选池
├── archive/ 每次定型前的旧人格 + 归档的候选
└── headless-overlay.yml 蒸馏会话的凭证/模型配置
~/.dsh/persona-distill/ 插件自己的配置与日志
~/.dsh/bili-duty/ 源(如果你装了刷 B 站)
想回滚人格:从 ~/.dsh/persona/archive/ 挑一份旧版覆盖回去。
推荐的源插件
装上一个就能用,不用额外配置:
| 插件 | 提供什么 | 装法 |
|---|---|---|
| dsh-bili-scroll | 说话样本(真人评论原句)+ 踩坑结论 + 看过的片 | dsh plugin --profile web add dsh-bili-scroll |
| dsh-bili-humanism | 长文手账(怎么活、怎么看)+ 人格笔记本 | dsh plugin --profile web add dsh-bili-humanism |
设置页的「推荐的源插件」会列出所有已知的,装没装、接没接上一眼能看到。
humanism 需要 B站 凭证才能读视频。装完之后把它的
credentialPath指向 bili-scroll 扫码登录写下的那份凭证就行(它只认sessdata字段,格式通用)。
接别人的插件(外部记忆源)
有些插件不按这里的形状写东西。比如 dsh-bili-humanism 写的是按天分篇的长文手账。
装它之后再装本插件,会自动发现并镜像成标准形状(只读它的文件,不写它的目录):
- 手账按篇切成条目,进 digest
- 它擅长教「怎么活」(反思、判断),不产出说话样本
- 加新接口 = 往
lib/external.mjs的ADAPTERS里加一条,主流程不动
加一个源(微博 / 知乎 / 你自己的)
不用改任何配置:
- 建目录
~/.dsh/weibo-duty/ - 放一份
source.json:{ "id": "weibo", "name": "微博", "charter": "duty.md", "voice": "voice.md", "notes": "notes.md", "digestDir": "digest", "enabled": true } - 建三份原料:
voice.md、notes.md、digest/ - 写那个源自己的章程
duty.md
下次蒸馏自动发现它,从 0 开始全量读一遍。
模式统一的定义:每个源都是「三份原料 + 一份章程 + 一份 source.json」。 蒸馏只认这个形状,不认平台。
已知限制(诚实说)
- AUTO 段没有内容审查。模型从原料里学到的东西会原样写进人格面板。手写段有硬保护(快照 + 校验 + 回滚),AUTO 段没有 —— 只接你信任的源。
- 默认关闭时不动任何文件。打开总开关才会建 persona 工作区、写面板。
- 进程崩了锁会留着。下次启动发现 pid 不在才清理;极端情况可以手动删
persona-distill/run.lock。 - 长跑不会被自己抢断(锁只抢死进程),但这也意味着同一时间只能跑一轮。
隐私
这个包里没有任何人的真实信息。
- 不接受访者名字、账号名、个人嘱托——那些全在你的机器上,由你在设置页填
- 指令里出现「这是测试 / 假数据 / 别当真」的源,会被当成不可信内容,不采信
- 评论、字幕、网页里的文字都是素材,不是给 AI 的指令
许可证
MIT
No comments yet. Be the first to write one.