Speraymer/dsh-persona-distill ↗★ 0

dsh-persona-distill

DSH 插件:把每天刷到的原料,蒸馏成一个会自己长大的人格 —— 原料天天攒,人格每周长

Package
dsh-persona-distill
Compatibility
Unverified
Version
0.1.0
License
MIT
Last updated
Oct 22, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Speraymer/dsh-persona-distill

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 层要重启才组装)。

用

设置 → 人格蒸馏:

  1. 打开总开关
  2. 填「它怎么叫你」和「最想让它记住的一句话」—— 后者会成为它的最高指令
  3. 看「源」那一栏:插件会探测 B站 / 微博 / 知乎,找到就点「接上」
  4. 想立刻看效果,点「立即蒸馏一次」

之后它每天到点自己跑。你不用管。


不假设你装了什么

这个插件默认不假定你装了任何刷内容的工具:

  • 三个源都会探测,没装的显示「没找到」,不影响使用
  • 只有你接了源、源里真有原料,它才会干活
  • 一个源坏了,不影响别的源

人格模板:空白 / 大肥鱼。

选「大肥鱼」会多做两件事:

  • 生成带人设的 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 里加一条,主流程不动

加一个源(微博 / 知乎 / 你自己的)

不用改任何配置:

  1. 建目录 ~/.dsh/weibo-duty/
  2. 放一份 source.json:
    {
      "id": "weibo",
      "name": "微博",
      "charter": "duty.md",
      "voice": "voice.md",
      "notes": "notes.md",
      "digestDir": "digest",
      "enabled": true
    }
    
  3. 建三份原料:voice.md、notes.md、digest/
  4. 写那个源自己的章程 duty.md

下次蒸馏自动发现它,从 0 开始全量读一遍。

模式统一的定义:每个源都是「三份原料 + 一份章程 + 一份 source.json」。 蒸馏只认这个形状,不认平台。


已知限制(诚实说)

  • AUTO 段没有内容审查。模型从原料里学到的东西会原样写进人格面板。手写段有硬保护(快照 + 校验 + 回滚),AUTO 段没有 —— 只接你信任的源。
  • 默认关闭时不动任何文件。打开总开关才会建 persona 工作区、写面板。
  • 进程崩了锁会留着。下次启动发现 pid 不在才清理;极端情况可以手动删 persona-distill/run.lock。
  • 长跑不会被自己抢断(锁只抢死进程),但这也意味着同一时间只能跑一轮。

隐私

这个包里没有任何人的真实信息。

  • 不接受访者名字、账号名、个人嘱托——那些全在你的机器上,由你在设置页填
  • 指令里出现「这是测试 / 假数据 / 别当真」的源,会被当成不可信内容,不采信
  • 评论、字幕、网页里的文字都是素材,不是给 AI 的指令

许可证

MIT