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指定鱼的数据文件
providerdeepseek-account指定模型 Provider
modeldeepseek-flash指定模型 ID
ownerName主人指定鱼对用户的称呼

如果当前 Profile 没有对应 Provider 或模型,鱼的对话和自主思考就可能失败。安装后可以先调用 fishtank_status,确认数据目录与可用 Provider,再进行首次对话。

它与状态桌宠有什么不同

状态桌宠的核心输入通常是 Agent 事件:等待、思考、执行工具、完成或失败。它们擅长把 DSH 当前正在做什么变成动画或气泡。dsh-fishtank 的核心输入则是时间、对话、人物和长期状态。

两者并不冲突:

  • 状态桌宠回答“Agent 现在在做什么”;
  • 水族箱回答“这个角色这些天经历了什么”;
  • 前者适合工作反馈,后者适合长期陪伴与养成;
  • 水族箱导出的身份数据,也为未来的 DSH 桌宠市场提供了可迁移角色包的雏形。

如果继续发展,水族箱可以接入任务完成事件、季节环境、多个角色以及用户可选择的奖励机制。但奖励不应鼓励无意义地增加模型调用或消耗 Token;成长最好来自完成工作、持续使用和明确互动。

安装后的检查清单

  1. 重新加载 Web 后确认侧栏出现“鱼缸”;
  2. 调用 fishtank_status,确认数据目录与 Provider;
  3. 发送一条不含敏感信息的测试对话;
  4. 导出一次 JSON,确认备份流程可用;
  5. 检查鱼的数据文件权限,不要同步到公开目录;
  6. 升级或卸载插件前再次导出数据。

想先比较其他实现,可以查看DSH 桌宠市场首批项目;需要理解事件联动,则继续阅读DSH 桌宠状态联动;准备制作自己的角色时,可参考DSH 桌宠开发指南。

参考资料