4. 与你的智能体对话
智能体只有一个,但触达它的方式有好几种。本章会讲完五个内建通道、一段对话如何被组织成会话,以及你日常会反复用到的四个动作:发送、附加、打断、恢复。
4.1 五个通道
| 通道 | 适合 | 在哪里配置 |
|---|---|---|
| CLI | 快速本地对话、脚本、调试 | 装好 hermit 后开箱即用 |
| Web | 浏览器日常使用、上传文件、浏览历史 | hermit web start 启动 |
| Telegram | 移动端、随时随地 | 第 17 章 · 通道 |
| Discord | 社群使用、群组服务器 | 第 17 章 · 通道 |
| Slack | 团队使用、Thread、内部工具 | 第 17 章 · 通道 |
五个通道触达的是同一个智能体 —— 同一份记忆、同一组技能、同一份配置。唯一不同的,只是对话在你屏幕上呈现的样子。
4.2 什么是会话
每一段对话都是一个会话:一串带 ID、参与者和状态的消息流。当你第一次通过某个对话上下文(一个 Telegram 聊天、一个 Slack thread、一次交互式 CLI 调用……)给智能体发消息时,会话会自动创建。
会话是持久化的。你可以关闭一个、走开,过段时间再回来 —— 智能体会从你离开的地方接着说。智能体的长期记忆跨会话存在,但单个会话的滚动条历史只属于那个会话。
4.3 CLI 通道
hermit chat --agent main
你会看到一个提示符。打字、回车,智能体以流式方式回复。常用参数:
hermit chat --agent main --session <id> # 恢复指定会话
hermit chat --agent main --resume # 恢复最近一次会话
在 chat 内,按 Ctrl-C 一次可以打断当前回复(智能体会中途停下,但会话保持打开)。按两次退出。
4.4 Web 通道
hermit web start
打开它打印出的 URL(默认 http://localhost:4310;它对接的网关监听在 http://localhost:4000)。在侧栏选一个智能体,挑或新建一个会话,然后输入消息。
Web 通道比 CLI 多几样东西:
- 文件附件 —— 把文件拖进聊天窗口,即可上传到智能体的工作区。
- 会话列表 —— 你参与过的每个会话,带预览。
- 带 Markdown 渲染的流式输出 —— 代码块、表格、链接都能正确渲染。
- 工具调用记录 —— 你可以展开某一步,看到智能体到底调用了什么工具、收到了什么返回。
4.5 Telegram、Discord、Slack
要让这些通道工作,智能体的 owner 需要先接入一个 bot token(第 17 章 · 通道)。
接入之后:
- 私聊bot 会开启一个与你私人对话绑定的会话。
- 群组 / 频道消息会创建一个包含所有发过言成员的群会话(取决于访问策略,见 第 13 章 · 访问级别)。
- 在 thread 里回复,会让你留在那个 thread 自己的会话里。
如果你刚连上 bot,第一条消息发出去之后智能体没回 —— 你可能站在 访问级别 不对的那一边。让 owner 把你加为成员。
4.6 你会一直做的四件事
发送 —— 直接打字。
附加 —— 在 Web UI 中拖入文件,或在 Telegram/Slack/Discord 用平台原生的附件方式上传。智能体能在工作区里看到这个文件,可以打开、编辑或引用。
打断 —— 智能体有时会跑偏。要让它停下:
- CLI:回复过程中按 Ctrl-C。
- Web:点击流式消息旁的 Stop 按钮。
- Telegram/Discord/Slack:发一句”stop”或”等一下”之类的跟进消息 —— runner 会接受这种”转向消息”,把它插入到下一步前。聊天通道上没有硬中断。
恢复 —— 大多数通道自动恢复(你给同一个 Telegram 聊天发消息 → 就在同一个会话里)。CLI 用 --resume 或 --session <id>。
4.7 角色差异
同一个通道,对不同的人显示出来的内容可能不一样:
- Owner 能看到该智能体的每一个会话。
- User 只能看到自己参与的会话。
- Guest 只能看到他们参与的那个会话,而且智能体对他们的工具集会被缩减(不能执行命令、不能改文件 —— 见 第 5 章 中的能力对照表)。
如果你登录后没看到本来应该有的会话,通常是你的角色不允许看。
4.8 How-to 配方
4.8.1 恢复昨天没说完的会话
场景 —— 你昨天在 CLI 聊到一半合上电脑,今天想接着聊。
做法
CLI:
hermit chat --agent main --resume
直接落回那个智能体最近一次的会话。
Web:在 Web UI 中打开智能体;最近的会话就在侧栏顶部。
Telegram/Slack/Discord:在同一个聊天或 thread 里发新消息即可。runner 会自动把会话再续上。
验证 —— 智能体的第一句回复引用了昨天对话里的某个细节。
4.8.2 同一个通道里开一个全新会话
场景 —— 你正在 Telegram 私聊里与智能体对话,想干净地切换话题,不想把上一个 thread 的上下文拖过来。
做法
- Telegram / Discord:跟智能体说”我们重新开始” —— 它不会自动开新会话,但为了干净,可以让 owner 通过 Web UI 或 CLI 把当前会话关掉。之后的新消息会开启新会话。
- Web:在侧栏点 New session。
- CLI:退出(Ctrl-C 两次),再次执行
hermit chat --agent main,不带--resume。
验证 —— 新会话没有滚动条历史,智能体不会引用旧的上下文(但它仍可能记得长期记忆里的东西,这是设计,而不是 bug —— 见 第 6 章 · 记忆)。
4.8.3 发送一个文件,然后让智能体读
场景 —— 你想让智能体读一份你磁盘上的 CSV。
做法
Web(最方便):把文件拖进聊天窗口,然后输入你的问题。
CLI:先把文件复制到智能体的工作区路径下(第 10 章 · 文件与工作区),然后在消息里按文件名引用。
Telegram/Slack/Discord:在聊天中把文件作为附件发出。adapter 会把它写入工作区,智能体会收到”文件已到达”的通知。
验证 —— 问”<文件名> 里有哪些列?” —— 智能体应该回出真实的表头。
4.8.4 打断一个跑偏的回复
场景 —— 智能体已经开始做错事(写错文件、走错推理路径),你想在它结束之前拦住它。
做法
- CLI/Web:回复流式输出的过程中点 stop。
- 聊天通道:发一行简短的纠正。runner 会把它作为转向消息排队 —— 在智能体下一步之前插入对话,智能体会读到这条纠正然后转向。
验证 —— 智能体下一句回复显式承认了方向的改变。
4.9 指引
- 接入新通道:第 17 章 · 通道。
- 管理谁能使用这个智能体:第 12 章 · 邀请他人。
- 为什么智能体在会话之间会 / 不会忘事:第 6 章 · 记忆。