site logo

Marico's space

在 Hot Dev 中使用个人和团队记忆构建 AI 智能体

前端技术 2026-05-26 18:47:22 7

最近折腾了 Hot Dev 框架,顺手做了一个带记忆功能的 AI 聊天机器人 demo,踩了几个"记忆作用域"的坑,这篇把问题说清楚。

Hot Chat 是一个 Web 聊天示例,用大概 15 分钟就能跑起来。它同时跑了两个 AI 智能体:一个个人模式(Personal Mode)智能体,记忆跟着用户走;一个团队模式(Team Mode)智能体,记忆跟着频道走。

UI 层用的是 Next.js + TypeScript,通过 @hot-dev/sdk(软件开发工具包)连接 Hot 后端。智能体层构建在 hot.dev/hot-ai-agent 之上,这是一个可复用的 Hot 包,封装了传输层、命令解析、运行时存储、渲染、流式响应和 MCP(模型上下文协议)辅助工具。Hot Dev 本身是 Apache 2.0 开源的,所以这篇文章里涉及的代码你都能直接阅读。

Try It

跑 demo 之前,如果没有安装 hot CLI,先 安装 Hot

git clone https://github.com/hot-dev/hot-demos
cd hot-demos/hot-chat
hot dev --open # terminal 1: both agents
cp .env.example .env # terminal 2: the UI
# Hot App -> API Keys -> New Key; paste it into HOT_API_KEY.
# Then add your ANTHROPIC_API_KEY (https://console.anthropic.com/) to .env.
npm install && npm run dev
Enter fullscreen mode Exit fullscreen mode

打开 http://localhost:3000。工具栏可以随时切换两个智能体,不需要重启。

.env 里设置好 ANTHROPIC_API_KEY 才能看到真实的、带记忆的流式回复。没有这个 key,UI 也能加载,但助手回复会退化成一个简单提示"LLM 已禁用"的桩函数。整个 harness 基于 hot-ai 构建,所以在自己的应用里可以换成其他 LLM 提供商。

完整教程看 hot.dev/docs/demos/hot-chat

Two Agents, One Project

Hot Chat 在一个 Hot 项目里跑两个智能体。表面上它们几乎一样:同样的聊天 UI,同样的斜杠命令,同样的流式回复。

区别在于记忆的作用域划分方式。

个人模式是身份优先。不管你在哪个会话、哪个标签页、哪台设备上聊天,告诉智能体的内容都跟随着你自己。输入 /remember 我更喜欢从阻断项开始的发布更新,关掉标签页,明天换台设备登录,问 /recall,同样的记录还在。

这种模式适合个人助手、日志应用、用户级别的 Copilot,以及记忆属于人而非会话的场景。

团队模式是会话优先。记忆以频道为作用域,两个人在同一个房间里聊天会共享同一个记忆视图,而两个频道之间保持独立。输入"我们决定先发文档再上线",再输入"CI 是唯一的阻断项",然后 /ask 现在有什么在阻断上线?,智能体会引用匹配的记录并标注来源。

这种模式适合团队聊天机器人、客服收件箱和共享工作空间。

概念 团队模式 个人模式
会话 频道或线程 每人一个临时上下文
身份 发帖的人 持久记忆的所有者
记忆 作用域在会话 作用域在用户

The Hot Chat web UI showing a streaming reply from the Team Mode agent with the Personal/Team mode toggle visible in the toolbar

Hot Chat 聊天中。工具栏可以随时在个人模式和团队模式之间切换。

Inside the UI

Hot Chat 的 UI 是刻意做得很通用的。它看起来像个正经聊天产品,而不是框架演示。因为体验本身就是重点:

  • 快捷提示块让你不用学语法就能探索各种模式。试试Recall preferencesDaily briefDecisionsAsk the team
  • 流式回复是边生成边渲染的。斜杠命令的回复也走流式,和 LLM(大语言模型)回复的方式完全一样,所以 UI 层不需要知道消息是走哪条路径产生的。
  • 附件功能支持拖入一个小的 notes.md 文件或截图。智能体把文件名和类型存为元数据,可以扩展为解析文件内容。
  • 身份控制显示智能体收到的确切 session_iduser_id,格式和 Slack 或 Telegram 适配器生成的一样。
  • 智能体图谱在 Hot Dev App 里展示每个斜杠命令作为独立的事件处理器节点,不用钻进中心调度函数就能看清智能体结构。

The Hot Dev Agent Graph view for the PersonalAgent demo showing each slash command as its own event handler node connected to the streaming reply outputs

每个命令一个事件处理器,没有中心调度。

What hot-ai-agent Brings

如果你之前搭过 AI 聊天智能体,大概写过这几块东西:

  • 斜杠命令解析器
  • 通过检索增强记忆来组织 LLM 调用的机制
  • 流式回复机制
  • 每个智能体的状态和统计存储
  • 每个请求的会话和身份绑定,让工具知道是谁在调用

大多数聊天智能体都在重复造这些轮子。

hot-ai-agent 把这一层抽象出来。具体来说,它提供:

  • 类型化的传输消息:一个统一的 IncomingMessage 结构,Web、Slack、Telegram 或其他适配器都可以翻译成这个格式。智能体代码里永远不需要针对传输类型做分支判断。
  • 斜杠命令解析/ask@MyBot what's up? 解析成 {name: "ask", arg: "what's up?"},同时把 Telegram 风格的 @MyBot 后缀剥离掉。
  • 基于记忆的聊天回合:标准的 recall -> persist user -> bind request -> stream -> persist assistant 生命周期封装在一个函数调用里。顺序很重要;如果搞反了,用户的新消息可能会污染他自己的检索结果。
  • 稳定的流式事件:每个智能体都会发出 <agent>:reply:start:delta:end 事件,标签名稳定且作用域明确。
  • 每个请求的会话绑定:当 LLM 工具在回合中途被调用时,已解析的会话和身份会被绑定到当前智能体请求上。
  • 每个智能体的存储和会话注册表:每个智能体有自己的状态、统计、错误记录和通知账本。定时任务可以按会话扩散,同时保持错误隔离。
  • MCP 接入:只要加一个注解就能把任意智能体函数暴露为 MCP 工具,这样 Claude Desktop、Cursor 和其他 MCP 客户端就能直接调用这个智能体。

它刻意不包含的东西:传输层的第三方包。没有内置 Slack、Telegram 或 Discord 的包。这些都在应用层,翻译成中性类型后传给智能体,这样 harness 就能保持可移植,依赖树也比较小。

Under the Hood, in One Snippet

当所有 harness 组件都就位之后,Hot 里的整个聊天风格事件处理器长这样:

remember-message
meta { agent: PersonalAgent, on-event: "personal-agent:remember",
}
fn (event) { d event.data sender identity-from-data(d) session session-from-data(d, sender) input base-input(d, session, sender, Str(or(d.text, ""))) ::chat-turn/run-chat-turn(turn-cfg, input)
}
Enter fullscreen mode Exit fullscreen mode

就这么长。解析出是谁在说话,组装输入,然后交给 run-chat-turn

RAG(检索增强生成)、持久化、顺序控制、流式响应、请求绑定、工具调度和错误处理全都在这一行调用背后。

在自己的智能体里加一个新的斜杠命令也是同样的模式:再加一个函数,再加一个 on-event 注解。

Where to Go Next

把 Hot Chat clone 下来,试着自己换 LLM 提供商、加斜杠命令,或者在同一个智能体上接第二个适配器。以下所有内容都是开源的,随便读。

  • 运行 Hot Chat: hot.dev/docs/demos/hot-chat
  • Hot Chat 源码: github.com/hot-dev/hot-demos/tree/main/hot-chat
  • hot-ai-agent 包: hot.dev/pkg/hot.dev/hot-ai-agent
  • hot-ai 包: hot.dev/pkg/hot.dev/hot-ai
  • @hot-dev/sdk(JS/TS): npmjs.com/package/@hot-dev/sdk
  • Hot Dev on GitHub(Apache 2.0): github.com/hot-dev/hot
  • 关注 Hot Dev: @hotdotdev on X

原文链接:https://dev.to/hotdotdev/build-ai-agents-with-personal-and-team-memory-in-hot-dev-5fne