dsh-bili-fish:给 DSH 装一只会自己过日子的 AI

前言

在 DeepSeek Harness(DSH)里,助手通常只在你说话时出现,会话结束就「下线」。如果你希望助手有跨天的状态、能根据你当天的行为写点东西、而不是每次从零开始寒暄,就需要把「生活节律」和「持久状态」做成插件能力。

dsh-bili-fish(维护者 lll-77777777)走的就是这条路:在设定时间段里随机醒一次,翻一眼你今天的素材,写两篇日记,并维护好感度、心情、饱腹度等本地状态。主动 @ 主人的能力在姊妹插件 dsh-bili-scroll 里;本插件只做「养鱼」。

这是什么

一句话:DSH 插件,给助手一条「私人生活」——随机每日唤醒、双日记(一封给你、一本给自己)、跨会话的好感度、事件驱动的心情、会饿的肚子,以及可选的日记配图与周回顾。

数据默认落在本机 ~/.dsh/bili-fish/;写日记时由 dsh --profile headless 子会话调用模型,每次大约 1~2 万 token(视素材多少而定)。许可证 MIT,当前包版本 0.12.0;要求 DSH ≥ 0.1.7-rc.1、Node ≥ 22。

它每天做什么

下面按 README 里的流程说明日常行为,便于你对照日志和落盘文件。

  1. 生物钟:在「窗口开始~结束」之间随机选一个时刻醒来,不是定点闹钟。
  2. 掷骰子:默认 30% 概率「今天不想看」——醒一下、记一句为什么摆烂,不写日记。
  3. 写两本日记:素材可包括 B 站报告、当天你对它说过的话、记忆库检索结果、随机小事件等(各来源可在设置里开关)。产出:
    - 给主人的信:有细节、有情绪、会称呼你;
    - 自己的日记:不加滤镜。
  4. 结算好感度与心情:模型在文末追加 HTML 注释标记(如 <!--affection:+3|情绪|理由-->、<!--mood:pouty|65|为什么-->),插件剥掉标记、钳制数值后写入 state.json。
  5. 落盘:默认目录下会有 <日期>-for-owner.md、<日期>-self.md、<日期>-week.md,以及可选的 cover-<日期>.png。素材全空也会写一篇「空白日」。

好感度、心情与喂食

这三块是插件里可长期玩的状态,都在本地计算,不额外耗 token(写日记本身仍走 headless LLM)。

好感度:初始 50,范围 -100~100,跨会话不重置。分档会影响说话方式(例如 60+ 更黏人、75+ 会翻旧账、85+ 才直呼你的名字)。日记每天结算一次,受「每天最多动多少」限制;也可在设置页手动微调。

心情:不是单一标签,而是舒服度(-100~100)、躁动度(0~100)及至多三个成分;由多种事件推动(被夸、被冷落、深夜还在干活、饿、阴雨等),按人设加权,并随时间向底色回归。

喂食:饱腹度 0~100,默认每小时掉 4。可通过设置页、聊天里说「喂她一碗白饭」等方式操作;饿了会触发心情事件。若安装了 dsh-better-sidebar,右侧边栏有 🐟 喂食入口。

安装与启用

Web / CLI 安装命令如下(须与仓库 README 一致):

dsh plugin --profile web add github:lll-77777777/dsh-bili-fish
dsh web

桌面端(Electron):桌面窗口使用 desktop profile,命令行 dsh plugin 按设计不修改该 profile。在桌面端会话里让内置 plugin_manager 安装 dsh-bili-fish,装完后完全退出 DSH 再打开。然后打开 设置 → 养鱼:确认日记目录、生物钟窗口,点「现在写一篇」做验证。

必读:让 headless 能写日记

日记由 dsh --profile headless 子会话生成。headless profile 默认关闭模型凭据,不改配置时子进程常在数秒内退出,日志可能出现:

dsh: MISSING_CREDENTIAL: llm-deepseek: no API key for provider route "deepseek-official"

在 headless 的 cordis.patch.yml(Windows 为 %USERPROFILE%\.dsh\profiles\headless\cordis.patch.yml)中启用:

- id: deepseek-account
  disabled: false
- id: credentials
  disabled: false

改完后无需重启 DSH,新起的子进程会重新 compose profile。可用 headless 发一句 Reply with exactly: OK 验证是否返回 OK。这是装完后「日记永远写不出来」的常见原因。

设置项概览

在 设置 → 养鱼 中可配置(默认值以 README 为准):

分组 要点
生物钟 总开关、唤醒窗口(默认 21:00~23:30)、「不想看」概率(默认 30%)
日记 存储目录(默认 ~/.dsh/bili-fish/diary)、写完推微信、「现在写一篇」
好感度 / 心情 开关、每日变动上限、久不聊天掉好感(默认关)、心情跟作息等
素材 B 站报告、工作流水、记忆库、素材目录——四个独立开关;全关则写空白日
附加 配图、周回顾、随机小事、主动找主人、思考带心情等
早安 默认关;需自行开启才会推送
喂食 饱腹度、食物按钮、与 dsh-whale-widget 同步等

典型用法与 Agent 工具

装好后,日常主要是等生物钟触发,或用设置里的「现在写一篇」手动触发。聊天里可以喂食、与助手互动;好感与心情会随对话与日记结算变化。

插件还向 agent 暴露工具(名称以 README 为准):

工具 用途
fish_affection 读好感度;adjust 时传 delta / reason / mood
fish_mood 读、设、微调心情;event 注入事件;list 列出状态
fish_diary 读某天三篇日记(day 可省略为当天)
fish_feed 喂食,传食物 key(如 rice、fish、ramen)

HTTP 侧提供 GET /api/bili-fish/status 以及 POST /api/bili-fish/{run,affection,mood,feed,config,diary,morning,unread},供前端或脚本调用。

可选依赖与数据隐私

推荐配合 meow-memory 使用,否则写日记时缺少长期记忆衔接。其他可选插件包括:dsh-bili-scroll(B 站报告素材)、dsh-agnes-image(配图)、dsh-wechat-plugin(推微信)、dsh-whale-widget、dsh-better-sidebar 等;未安装时对应能力降级或改用设置页/聊天。

设置、好感、心情、饱腹度在 config.json、state.json,不外传。日记与封面在本地目录;推微信时由本机微信插件发出。当天会话原文从 ~/.dsh/sessions/**/*.jsonl.zstd 只读后作为素材发给模型;记忆库检索结果、配图场景描述也会发给对应服务。不要在会话里放不愿进模型的内容;不需要记忆库素材时关闭对应开关。

插件以当前 DSH 进程权限运行,安装前请自行查看 GitHub 源码 与 MIT 许可证。主要在 Windows 11 + 桌面版 DSH 上验证;macOS/Linux 可跑,但通知等可能降级,找不到 dsh 可执行文件时在设置里填 dshBin。多个 DSH 实例同时跑会争写 state.json,建议只保留一个实例。

卸载

dsh plugin --profile web remove dsh-bili-fish

再删除 ~/.dsh/bili-fish/(设置、状态、日记、日志)。桌面端也可在插件页卸载。

结尾

dsh-bili-fish 把「随机醒来、双日记、持久好感与心情、喂食」收进一个 DSH 插件,适合想在本地养一条有状态、能写日记的助手线的用户。社区目录页:SkillHub - dsh-bili-fish;仓库:github.com/lll-77777777/dsh-bili-fish。DSH 生态强调「一切皆插件」;SkillHub 为社区站点,与 DeepSeek / 幻方无官方从属关系。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye