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 指引