与智能体聊天
本指南介绍如何在空间中与智能体协作。
创建空间
标题为“创建空间”的部分- 在侧边栏中打开空间
- 点击“空间”标题旁的 + 按钮
- 输入名称——这是必填项。名称为空会被拒绝,对话框保持打开
- 可选地从工作区添加智能体
- 如果工作区中有任何仓库,会出现仓库选择器。它一开始选中所有仓库;把它收窄到 该空间应当为其预配工作树的仓库(也可以只取消选中某一个)
- 确认
Control Center 会打开该空间,并在后台为每个选中的仓库开始预配一个写时复制工作树。
发送第一条消息
标题为“发送第一条消息”的部分在输入框中输入消息,然后按 Enter。智能体随即派发并开始流式输出回复。
如果空间仍在预配中,你的消息会被暂存而不是丢失——输入框会保留它,并在工作树就绪后 自动发送。
随着智能体工作,你会看到它的回合流式输出:推理片段、工具调用(文件读取、写入、 shell 命令)和回答文本,全都位于同一条智能体回合消息中。
引导运行中的智能体
标题为“引导运行中的智能体”的部分智能体工作时,普通的对话文本不会排队成一个新回合。它会变成输入框上方条带中的 一张排队引导卡片,并在下一个回合边界被注入当前运行。不会弹出提示——卡片本身就是 反馈。
有三种情况会改变这一行为:
- 包含 @提及 的消息始终作为消息发送,绝不会作为引导
- 以斜杠命令开头的消息始终按该命令处理
- 带附件的消息始终作为消息发送——引导队列只支持文本
- 如果所有进行中的运行都已结束,该文本会落回常规路径,作为普通消息发送
批准被阻止的操作
标题为“批准被阻止的操作”的部分当智能体撞上一个由其护栏把关的操作——一条破坏性命令、一个特权工具——服务器会
阻止该运行,并向每个已连接的客户端发布一条审批请求。如果你打开着该对话,请求会
在聊天中、输入框上方出现,形式与 ask_user 所用的编号选项卡片相同(拒绝、批准,
以及可选的批准八小时)。没有跳过这一说:被阻止的智能体正在等待一个决定。
如果你正在应用的别处,外壳中的置顶面板仍会列出有哪些事项在等待,因此你无需满应用 寻找该空间就能解除智能体的阻塞。当该空间的对话出现在屏幕上时,浮层会立即隐藏对应的 请求,因此你绝不会对同一个提示回答两次。
没有超时:被阻止的智能体会一直等待,直到有人做出决定。同一请求也会出现在收件箱的 关注栏和手机客户端上。
回答智能体的提问
标题为“回答智能体的提问”的部分当智能体需要某个偏好、某项缺失的需求,或遇到一个真正的分岔时,它必须调用
ask_user。把问题写成聊天消息会结束当前回合,你不得不重新提示。该工具会在对话中
渲染一张编号卡片——选项、可选的自由文本,或两者兼有——运行会等待你的回答。
点按单个选项即可将其发送(悬停时末尾的编号会变成箭头)。多选和手动输入的回答使用
继续(⌘↵ / Ctrl↵)。跳过会告诉智能体选取一个合理的默认值,并且不再
询问。
它与上面的审批卡片是两套不同的机制:审批问的是“我可以这样做吗?”,提问问的是 “你说的是这几个中的哪一个?”。在包括只读模式在内的所有模式中,内置运行器都支持 提问(它不会改动任何东西),并且刻意不把它包在审批提示里——在一个对话框前面再放 一个对话框,在没有审批人连接时会以失败关闭的方式处理。没有对话可供渲染的运行根本 拿不到这个工具。
停止智能体
标题为“停止智能体”的部分当有运行处于进行状态时,输入框的发送按钮会变成一个停止按钮。清空输入框并按下 它——这会停止该对话中所有正在运行的智能体。
空间标题栏中没有停止控件,也没有对应的键盘快捷键。当有多个运行同时进行、而你只想 停止其中一个时,打开该运行的活动标签页——它的标题栏带有针对该次运行的暂停/继续和 停止(停止会要求你确认)。可观测性 → 实时会列出工作区中每个正在运行的智能体, 并提供相同的控件。
已停止的运行会被标记为已停止。发送新消息即可再次派发。
使用斜杠命令
标题为“使用斜杠命令”的部分在输入框中输入 / 即可看到命令列表。以下命令会改变对话的行为:
| 命令 | 作用 |
|---|---|
/plan |
将空间切换到计划模式。单独一个 /plan 只是开启该模式;/plan <request> 会开启模式并把其余内容作为你的消息发送 |
/goal <text> |
记录该对话的工作目标 |
/loop <text> |
反复迭代某个任务,直到完成 |
/compact |
把较早的历史折叠成一份带锚点的摘要,并在压缩后的上下文上继续 |
/todo … |
查看和编辑该对话持久化的待办列表 |
技能会出现在同一个列表中,位于它们自己的 skill: 命名空间下,因此绝不会与上面的
命令冲突——名为 plan 或 compact 的技能仍然可用:
| 命令 | 它会运行什么 |
|---|---|
/skill:<name> |
安装在工作区中、或附加到该智能体上的技能 |
/skill:<repo>:<name> |
本空间中检出的某个仓库所自带的技能 |
仓库技能会带有其来源仓库的标记,因为仅凭一个名字看不出它编码的是哪个服务的约定,
而且两个仓库可能各自都带一个 testing。你不必输入前缀也能找到它:直接输入技能名
同样会匹配到带命名空间的条目。
智能体始终只携带它当前所在仓库的技能——参见 仓库范围内的技能。输入框不这样 限定:你可以指名调用任意仓库的技能。
/compact 和 /todo 由客户端拦截,绝不会作为消息持久化——转录中出现一行 /compact
会把下一次压缩的切点往回推一个回合。/plan 翻转空间所存储的模式,而不是以文本形式
传递。所以这三者都不是“你发给智能体的消息”;不要指望在历史记录中看到它们。
先要一份计划
标题为“先要一份计划”的部分在进行复杂改动之前,用 /plan、输入框工具栏上的模式下拉菜单或 Shift+Tab 把空间
切换到计划模式。随后智能体以只读方式调研,并交付一份类型化的计划,由你在任何工作
开始前批准。参见使用计划模式。
无需专用空间就能触达智能体
标题为“无需专用空间就能触达智能体”的部分你不必为每个智能体都建一个空间。在任意空间中:
@alice can you look at the failing tests in src/auth_test.dart?被提及的智能体会被加入该空间,并带着该空间的上下文派发。参见 @提及智能体,了解名称是如何匹配的。
相关指南
标题为“相关指南”的部分- 使用空间
- @提及智能体
- 使用计划模式
- 设置 Slack 集成,以便从 Slack 完成同样的操作