DSH 水族箱插件
DeepSeek Harness 水族箱插件:记忆、情绪与跨 Session 存档
- 作者
- DeepSeekAgent.io 编辑部
- 发布
- 更新
dsh-fishtank 是一个面向 DeepSeek Harness 的社区水族箱插件。它不只在页面里放一条会动的鱼,而是把鱼的情绪、精力、人物关系、记忆、私语和日记保存成持续存在的数据。关闭当前 Session、第二天重新打开,甚至把数据迁移到另一台机器后,仍然可以继续养同一条鱼。
这条路线与常见的状态挂件不同:桌宠通常根据 Agent 的思考、工具调用和完成状态切换动画,dsh-fishtank 更关心长期陪伴。它有独立的鱼缸页面、自己的对话入口,也会在安静一段时间后产生想法。
插件由 Host 与 Web 两部分组成
项目以一个 dsh.bundle 同时交付两部分:
- Host 插件负责鱼的数据、模型调用、定时器和工具注册;
- Web 客户端提供侧栏入口、状态栏、对话气泡、输入框、私语与日记展示;
- Web 页面通过
/fishtank/state和/fishtank/talk两个同源接口与 Host 通信。
这种拆分让浏览器页面只负责显示和交互,鱼的真实状态由 Host 持有。刷新页面不会重新生成一条鱼,切换 Session 也不会把记忆绑死在当前聊天记录里。
安装 dsh-fishtank
可以从 DSH 的 Discover 插件市场安装,也可以直接添加 GitHub 仓库:
dsh plugin --profile web add github:yuyu520fish/dsh-fishtank
安装完成后重新加载 DSH Web,在左侧边栏打开“鱼缸”。这是社区项目,不是 DeepSeek 官方内置组件;升级前应保留鱼的数据导出,并核对仓库中的当前安装说明。
它会记住什么
默认状态保存在:
~/.dsh/fishtank/default/fish.json
文件中包含情绪、精力、事实记忆、人物关系、私语、每日回顾、日记、历史对话以及鱼对自己的描述。它会把“下周五”一类相对时间转换成具体日期,也会记录一段记忆产生时的情绪与原因。
人物关系按说话者分别保存。默认称呼是“主人”,也可以通过 ownerName 修改。持续对话会改变亲近程度;对话过多会消耗精力,互动方式则会影响情绪。
这套设计的关键不是让模型每次重新扮演同一个角色,而是让角色拥有一份可延续的身份数据。项目 README 对此的概括很直接:鱼本身就是数据。
安静时也会继续生活
Host 插件创建了一个每 60 秒运行一次的计时器。它不会每分钟调用模型,而是检查是否满足产生私语或回顾的条件:安静约 25 分钟后,鱼可能形成一条自己的想法;到了晚上,它可以回顾当天并写入日记。
这种机制把“主动性”与普通聊天分开。用户不需要持续发送消息,鱼也能保留一天的节奏。不过,产生想法和对话仍可能调用配置的模型,因此不能把它理解为完全零成本的动画宠物。
四个工具分别做什么
插件向 DSH 注册了四个工具:
| 工具 | 用途 |
|---|---|
fishtank_talk | 与鱼对话,并可指定说话者 |
fishtank_status | 查看情绪、精力、记忆、人物、日记与数据目录 |
fishtank_export | 把整条鱼导出为可携带的 JSON |
fishtank_import | 用之前的导出数据替换当前鱼的状态 |
Agent 可以主动调用这些工具。例如,Personal Agent 完成一天的工作后,可以向鱼说一句话;迁移电脑前,也可以先导出数据并把 JSON 备份到用户选择的位置。
导入会替换当前状态,因此应先导出当前鱼,再执行恢复。不要把导出的 JSON 直接放进公开仓库:其中可能包含用户告诉鱼的事实、人物关系和历史对话。
模型与配置
项目当前提供以下主要配置:
| 配置 | 默认值 | 作用 |
|---|---|---|
fishFile | ~/.dsh/fishtank/default/fish.json | 指定鱼的数据文件 |
provider | deepseek-account | 指定模型 Provider |
model | deepseek-flash | 指定模型 ID |
ownerName | 主人 | 指定鱼对用户的称呼 |
如果当前 Profile 没有对应 Provider 或模型,鱼的对话和自主思考就可能失败。安装后可以先调用 fishtank_status,确认数据目录与可用 Provider,再进行首次对话。
它与状态桌宠有什么不同
状态桌宠的核心输入通常是 Agent 事件:等待、思考、执行工具、完成或失败。它们擅长把 DSH 当前正在做什么变成动画或气泡。dsh-fishtank 的核心输入则是时间、对话、人物和长期状态。
两者并不冲突:
- 状态桌宠回答“Agent 现在在做什么”;
- 水族箱回答“这个角色这些天经历了什么”;
- 前者适合工作反馈,后者适合长期陪伴与养成;
- 水族箱导出的身份数据,也为未来的 DSH 桌宠市场提供了可迁移角色包的雏形。
如果继续发展,水族箱可以接入任务完成事件、季节环境、多个角色以及用户可选择的奖励机制。但奖励不应鼓励无意义地增加模型调用或消耗 Token;成长最好来自完成工作、持续使用和明确互动。
安装后的检查清单
- 重新加载 Web 后确认侧栏出现“鱼缸”;
- 调用
fishtank_status,确认数据目录与 Provider; - 发送一条不含敏感信息的测试对话;
- 导出一次 JSON,确认备份流程可用;
- 检查鱼的数据文件权限,不要同步到公开目录;
- 升级或卸载插件前再次导出数据。
想先比较其他实现,可以查看DSH 桌宠市场首批项目;需要理解事件联动,则继续阅读DSH 桌宠状态联动;准备制作自己的角色时,可参考DSH 桌宠开发指南。