跳转到内容

与智能体聊天

本指南介绍如何在空间中与智能体协作。

  1. 在侧边栏中打开空间
  2. 点击“空间”标题旁的 + 按钮
  3. 输入名称——这是必填项。名称为空会被拒绝,对话框保持打开
  4. 可选地从工作区添加智能体
  5. 如果工作区中有任何仓库,会出现仓库选择器。它一开始选中所有仓库;把它收窄到 该空间应当为其预配工作树的仓库(也可以只取消选中某一个)
  6. 确认

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?

被提及的智能体会被加入该空间,并带着该空间的上下文派发。参见 @提及智能体,了解名称是如何匹配的。