进阶 www.suna.so 2026-10-09 08:09:49 · 1 阅读

第5章 Kortix 第5章:Slack 与频道集成指南

第5章:Slack 与频道 – Kortix

将 Slack 连接到项目,并从频道中控制会话。

频道将聊天平台与项目相连。在已连接频道中发送消息即可启动会话。Agent 会在同一线程中回复。

实时频道 Kortix 目前支持四种频道平台:

Slack — 通过 Kortix 托管的应用一键连接,或自带 bot token。 Microsoft Teams — 通过组织管理员同意的 OAuth 连接,或自带 Azure Bot(实验性功能;在 设置 → 实验性功能 中启用)。 邮件 — 基于 AgentMail 的频道(实验性功能;在 设置 → 实验性功能 中启用)。 语音 — 基于 LiveKit 的实时语音频道(实验性功能;在 设置 → 实验性功能 中启用)。已连接的通话即 LiveKit 房间;Agent 通过实时媒体会话发声。

仅 Slack 和 Microsoft Teams 可通过 CLI 和仪表板连接。邮件和语音需通过仪表板或 SDK 管理。本页涵盖 Slack。 Teams 遵循相同的会话、身份关联和凭据规则。

频道如何启动会话 Slack 线程或 Teams 对话中的第一条消息创建会话。该线程中的后续所有消息均归属同一会话,即使沙箱停止并恢复亦然。连接到多个项目的 Slack 工作区会在首次提及 bot 时显示项目选择器。

身份关联 在 Agent 为某用户运行前,Kortix 会将该聊天发送者关联到其 Kortix 账户。在 Slack 中运行 /kortix login 并跟随链接登录。Teams 有相同要求。未关联的发送者会收到关联提示,而非启动会话。

登录链接仅有效一次,10 分钟后过期。已连接到一个 Kortix 账户的 Slack 账户无法连接到另一个账户:请先运行 /kortix logout。如果组织要求双因素认证,Kortix 会在连接前请求第二因素,且聊天将在该第二因素上运行。

每个操作均由执行该操作人员的关联账户以其项目角色执行。账户所有者和管理员视同项目经理。

操作 谁可执行 提及 bot,或在bot线程中回复 有权访问项目且符合频道策略的关联账户 停止运行 发送待回复消息的人,或获准进入该会话且仍可使用该项目的人 更改频道的 项目、agent、模型或策略 项目经理;在与 bot 的私聊中,任何项目成员 处理审阅 项目经理 批准或拒绝连接器调用 项目经理,或启动会话的人 批准某人进入 owner_approval 线程 会话所有者 link-bot 项目经理

凭据存放位置 已连接频道的 bot token 是连接器范围的 机密。它不会显示在项目的 Secrets 页面。Kortix 绝不将其注入沙箱。当 Agent 发送或读取聊天消息时,Kortix 在服务端解析该 token。

连接 Slack 开始连接 从 CLI 运行: kortix channels connect 在配置了共享 Slack 应用的主机上(例如 Kortix Cloud),这会打印一个一键安装链接。打开链接并选择工作区。 点击 允许。添加 --wait 参数可让命令轮询直至安装完成。 从仪表板打开项目的 频道 页面,在那里连接 Slack。它使用相同的安装流程。

使用你自己的 Slack 应用 在配置了未使用共享 Slack 应用的自托管部署环境中,kortix channels connect 会自动回退到手动模式。运行 kortix channels manifest 以打印应用清单。从该清单在 api.slack.com/apps 创建应用。将应用到工作区。 然后运行: kortix channels connect --manual --bot-token xoxb-... --signing-secret ...

检查连接 kortix channels status 运行 kortix channels disconnect 以移除连接。参见 CLI 参考 以了解所有标志。

连接 Slack 会为你向 kortix.yaml 添加频道连接器条目。你绝不需要手动编写此条目。

使用 Slack 在任何已加入的频道中提及 bot 并附带任务,或打开直接消息。如上所述,线程保持其会话。无任务的空提及会收到添加任务的提醒,而非启动会话。

Agent 可读取的内容 Agent 通过项目的 Slack 连接器(kortix_slack,或沙箱中的 slack 命令)读取 Slack。连接到同一 Slack 工作区的所有项目使用同一个 bot,因此 Kortix 将每次读取限制在项目自己的对话内:

对话 读取 连接到本项目的频道或私聊 允许 在任何频道中由本项目会话启动或加入的线程 允许 其他项目的频道、私聊或线程 拒绝 未连接任何项目的对话 仅当该工作区未连接其他项目时允许

被拒绝的读取返回 403,原因为 conversation_not_in_project,并附带指明该对话的消息。要读取未连接任何项目的对话,请先连接它:在其中运行 /kortix switch 并选择本项目。

频道历史不包含其他项目线程的消息。 get_history 和 get_thread 会为 Slack 能命名作者的每条消息添加 user_name,置于用户 ID 旁。每次读取最多命名 25 人;Slack 在 2 秒内未返回的名称将被省略。 list_channels 列出所有公共频道,以及 Agent 可读的私有频道和私聊。 channel_info 响应任何公共频道。私有频道或私聊遵循上表。 file_info 在文件共享于 Agent 可读的对话或本项目线程时响应。slack download 遵循相同规则:仅在另一项目对话中共享的文件返回 403。下载在 50 MB 处停止并返回 413。 search_messages 仅在工作区未连接其他项目时运行,因为搜索无法限制在单个项目的对话内。 list_users、user_info 和 auth_test 读取工作区目录,不受限制。

写入遵循以下独立规则。

Agent 可发布的内容 发布、发送文件、编辑、删除、反应、加入频道以及绑定线程遵循一条规则:Agent 绝不在其他项目的频道或线程中操作。

目标 写入 本项目的频道,或其会话启动或加入的线程 允许 未连接任何项目的频道 允许。新消息启动本项目的线程,因此回复回到会话 与某人的私聊 允许,即使该人与 bot 的私聊运行的是另一项目 其他项目的频道或群组私聊 拒绝 任何其他对话中的线程 拒绝:无回复、编辑、删除或反应

被拒绝的写入返回 403,原因为 conversation_not_in_project,并附带指明该对话的消息。slack send --file 和 slack bind-thread 遵循相同规则。 channel 必须是对话或用户 ID,例如 C0123ABCD 或 U0123ABCD,而非频道名称。Slack 按名称发布,而名称无法对照规则检查。如果 Slack 仍在受检对话之外的地方发布消息,Kortix 会删除该消息并拒绝发布。 要在运行其他项目的频道中发布,在其中运行 /kortix switch 并选择本项目,或从该项目发布。

使用斜杠命令控制会话 在 Slack 中将这些输入为 /kortix <命令>,或在私聊中作为纯文本输入。斜杠命令不在 Assistant 私聊面板中触发,因此 Kortix 会在那里从纯文本解析相同关键词。

命令 作用 login, logout 关联或取消关联你的 Slack 身份 switch, unbind 重新绑定或解绑此频道与其项目 projects 列出你可绑定的项目 sessions 列出在此工作区启动的近期会话 whoami 显示频道面板:项目、agent、模型、策略及你的关联身份 models 选择此频道的模型 — 参见 模型和密钥 agent <名称>, model 设置此频道使用的 agent 或模型 policy <模式> 设置谁可在此启动会话 help 列出所有命令

policy 接受 project_open(默认 — 任何提及 bot 的项目成员均获得会话)、owner_approval 或 owner_only。这是单个频道上的逐资源设置,而非角色。它不授予角色判定拒绝的权限 — 参见 账户与访问。

模型和密钥 /kortix models 列出你可在此运行的所有模型,如同 Web 选择器: Kortix 模型,以及通过提供商 API 密钥或 ChatGPT 订阅访问的模型。每个都会说明其计费方式。长列表是一个可输入的选择框。选择一个,或输入 /kortix model ;/kortix model default 恢复项目默认值。

哪些密钥有效取决于对话:

与 bot 的私聊 — 你自己的密钥和 ChatGPT 订阅,以及共享给项目的密钥。其会话对你私密。 频道或群组私聊 — 仅共享给整个项目的密钥。在私聊中选择由你自己密钥运行的模型。

在密钥上运行的模型使用你可用于其提供商的所有密钥,并在速率限制时轮换。频道的模型启动每个新线程;线程保持其启动时的模型。线程无法再运行的模型会为该消息替换,而非使其失败。参见 提供商密钥和成员访问。

带图像的后续消息在能读取图像的模型上运行。若无可用的模型,Agent 会在提示中被告知:它表示无法看到图像并请求文本,而非猜测。

频道和人员名称 Slack 发送 ID,例如 C0123ABCD 和 U0123ABCD。Kortix 显示人们在 Slack 中阅读的名称,并保留 ID 用于操作。

位置 显示内容 频道 页面,kortix channels bindings 公共或私有频道显示 #频道,私聊显示人物,群组私聊显示成员 会话中的 Slack 消息 发送者姓名和 #频道 会话中的 slack send 回复 #频道,或私聊中的人物 会话标题 提及方式如 Slack 所示:@Kortix,而非 <@U0123ABCD> Agent 的提示 ID 旁的名称:Sam Rivera (U0123ABCD)、#general (C0123ABCD) Agent 在 Slack 中的计划步骤 人物显示为 @Sam Rivera,频道显示为 #general。步骤不通知任何人 Slack 中的批准卡片 频道参数显示为频道链接,Slack 按你的访问权限命名。用户参数显示人物姓名

Slack 无法找到的频道读取为 不可用频道 并保留其 ID。这发生在频道被删除或 bot 被移除时。 Slack 在 2 秒内未返回的名称将从该消息中省略。此时提示仅携带 ID,且回合不等待。

批准 当 Agent 需要人类决策才能继续时,它会提交审阅项。 如果会话从此线程启动,决策将作为卡片在此显示:标题、摘要、风险等级,以及 批准、请求更改 和 拒绝。

请求更改 打开一个框用于说明应更改什么。你输入的任何内容都会与决策一起存储并传递给 Agent,因此它无需再次询问。这是可选的 — 发送空内容则 Agent 会被告知去询问。批准 和 拒绝 保持一键操作。

处理审阅需要管理项目的关联 Kortix 账户。 决策无论线程策略如何,都会恢复 Agent。

停止运行 当 Agent 工作时,其实时消息带有 停止 按钮。它在运行时结束时停止运行,而不仅仅是在消息上 — 未结束的运行会吞并线程中的下一条消息,而非回复它。

发送待回复消息的人可以停止它,任何获准进入该会话且仍可使用该项目的人也可以。频道中的旁观者不行;他们会收到一条私密说明。

无效操作

斜杠命令不在 Assistant 私聊面板中触发。在那里将 /kortix <命令> 作为纯文本输入。 包括 Telegram 在内的其他聊天平台目前不是支持的频道。 仅 Slack 和 Microsoft Teams 可通过 CLI 和仪表板连接;邮件和语音通过仪表板或 SDK 连接。

评论 (0)