AutoGPT Platform Compass AI 触发器块实战:用语音与会议转写事件驱动自动化工作流
AutoGPT Platform 提供了图形化的 Agent 构建界面,支持把"事件"作为工作流的起点。Compass AI Trigger 正是这样一类触发器(Trigger)块:它订阅 Compass AI 产出的转写(transcription)事件,一旦事件到达就把转写内容送入工作流,供后续的总结、分析、存储或语音指令处理等环节消费。本文以 docs/integrations/block-integrations/compass/triggers.md 为主线,结合仓库中该块的真实源码与 Webhook 接入实现,完整讲解它的功能定位、输出字段、触发链路与典型使用场景,帮助你直接在 AutoGPT Platform 中搭建一条"听"得到的工作流。
Compass AI 触发器块是什么
功能定位
按照 Compass 集成文档的定义,Compass AI Trigger 是一个"用于从 Compass AI 转写事件触发工作流的块"(Blocks for triggering workflows from Compass AI transcription events)。它的作用是:输出 Compass AI 转写的内容,让下游块能拿到由 Compass AI 生成的语音输入或会议记录文本。
这一能力在源码层面由 CompassAITriggerBlock 实现,代码位于 backend/blocks/compass/triggers.py:
class CompassAITriggerBlock(Block):
class Input(BlockSchemaInput):
payload: TranscriptionDataModel = SchemaField(hidden=True)
class Output(BlockSchemaOutput):
transcription: str = SchemaField(
description="The contents of the compass transcription."
)
def __init__(self):
super().__init__(
id="9464a020-ed1d-49e1-990f-7f2ac924a2b7",
description="This block will output the contents of the compass transcription.",
categories={BlockCategory.HARDWARE},
input_schema=CompassAITriggerBlock.Input,
output_schema=CompassAITriggerBlock.Output,
webhook_config=BlockManualWebhookConfig(
provider=ProviderName.COMPASS,
webhook_type=CompassWebhookType.TRANSCRIPTION,
),
...
)
async def run(self, input_data: Input, **kwargs) -> BlockOutput:
yield "transcription", input_data.payload.transcription
工作原理
从文档与源码综合来看,该块遵循事件驱动而非"手动填入数据"的运行模式:
- Compass AI 完成一次语音/会议转写后,通过 Webhook 把转写事件推送到 AutoGPT Platform;
- Platform 的 Webhook 接入层校验并解析事件,将 payload 封装成该块声明的
Input.payload(类型为TranscriptionDataModel,在编辑器中隐藏,不需要用户填写); - 触发块执行
run(),从input_data.payload.transcription取出转写全文并以字符串形式输出(yield 为"transcription"输出); - 下游块拿到这段文本后即可继续处理——可用于分析、存储,或作为 LLM 块的输入做进一步加工。
正是这种"事件到达即执行"的模式,让工作流无需轮询、无需用户手工触发,Compass AI 每次转写完成都会自动拉起一条流水线。
触发数据模型与输出说明
Compass AI 转写的内部数据结构
在转写事件进入块之前,平台已经把它规范化成了 TranscriptionDataModel,与 Webhook 解析逻辑一一对应。该模型定义于 backend/blocks/compass/triggers.py:
class Transcription(BaseModel):
text: str # 单个发言片段文本
speaker: str # 发言人标识
end: float # 片段结束时间(相对音频/会话开始,单位秒)
start: float # 片段开始时间
duration: float # 片段持续时长
class TranscriptionDataModel(BaseModel):
date: str # 转写发生的日期
transcription: str # 完整的转写文本
transcriptions: list[Transcription] # 按说话片段拆分的时间轴
可以看出,Compass 的转写不仅提供了全文(transcription),还保留了按发言片段切分的时间轴(transcriptions,含发言人、起止时间与时长)。对当前触发块而言,它对外暴露的是聚合后的完整文本;而时间轴字段仍保留在数据模型中,为后续需要按说话人/时间段切分的进阶处理预留了空间。
输出字段
触发块对外只暴露一个核心输出,下表与 Compass 集成文档一致:
| 输出 | 说明 | 类型 |
|---|---|---|
| error | 操作失败时的错误信息 | str |
| transcription | Compass 转写的内容 | str |
结合源码实现看:run() 当前只通过 yield "transcription", ... 产出成功路径的转写文本(triggers.py#L60-L61);error 输出则在事件解析或块执行异常时由平台错误处理机制填充,用于将失败信息继续传递到工作流中做容错分支。
从事件到块的完整触发链路(源码级)
想要真正用好这个触发器,理解它背后的 Webhook 接入机制会大有帮助。该块在 triggers.py 中通过 BlockManualWebhookConfig 声明了它与 Webhook 的绑定关系:
webhook_config=BlockManualWebhookConfig(
provider=ProviderName.COMPASS,
webhook_type=CompassWebhookType.TRANSCRIPTION,
)
provider=ProviderName.COMPASS:声明该块订阅的是 Compass 服务商的事件。ProviderName.COMPASS = "compass",定义于 integrations/providers.py。webhook_type=CompassWebhookType.TRANSCRIPTION:指出具体事件类型。CompassWebhookType定义于 integrations/webhooks/compass.py:
class CompassWebhookType(StrEnum):
TRANSCRIPTION = "transcription"
TASK = "task"
目前平台侧的 CompassWebhookManager 只把 transcription 作为当前实际生效的类型(源码注释 "currently the only type",见 compass.py#L32),这也解释了为什么现在仓库中只有一个 Compass 触发器块。
BlockManualWebhookConfig 是 Webhook 触发类块的通用配置模型,其字段语义定义于 backend/blocks/_base.py:provider 指明连接的第三方服务,webhook_type 是供对应 WebhooksManager 识别的类型标识(例如 GitHub 有仓库级与组织级两类 hook)。"Manual" 的含义是:该 Webhook 需要在服务商侧手工配置好回调地址,而非通过服务商 API 自动创建。
Webhook 事件如何被接收与校验
Compass 的 Webhook 接收端由 integrations/webhooks/compass.py 中的 CompassWebhookManager 实现,它继承自 ManualWebhookManagerBase,核心逻辑是 validate_payload:
@classmethod
async def validate_payload(
cls,
webhook: integrations.Webhook,
request: Request,
credentials: Credentials | None,
) -> tuple[dict, str]:
payload = await request.json()
event_type = CompassWebhookType.TRANSCRIPTION # currently the only type
return payload, event_type
即:每当有 Webhook 请求到达,管理器读取请求 JSON 作为 payload,并返回对应的事件类型;随后平台会依据事件类型把 payload 路由到配置了 CompassWebhookType.TRANSCRIPTION 的块实例上(也就是图中放置的 Compass AI Trigger 块实例),将其填充为 Input.payload 后执行。可结合 api/features/integrations/router.py 查看 Webhook 入站路由的完整入口。
典型使用场景
根据集成文档,该触发块特别适合以下三类工作流:
语音指令处理(Voice Command Processing) 把手机、录音设备或会议工具中的语音命令经 Compass AI 转写后作为工作流起点,例如"帮我创建待办""给 XX 发邮件"这类指令,触发块先把语音变成文本,再由 LLM 块解析指令意图并调用对应动作块执行。
会议自动化(Meeting Automation) 将会议录音交给 Compass AI 转写,每次转写完成后自动触发流程——从会议转写中提取行动项(action items)、待办责任人、结论摘要,并写入 Notion、Todoist 或企业微信/钉钉等下游系统。
转写内容分析(Transcription Analysis) 对转写文本做情绪倾向分析、主题聚类或关键信息抽取;也可以先做清洗与分句,再批量送入数据库或向量库,为后续检索与问答提供数据源。
这些场景在编辑器中的落地方式是一致的:在画布上放置 Compass AI Trigger 块,将它的 transcription 输出连到后续处理块的文本输入上,再在 Compass AI 侧把该块的 Webhook 地址配好即可。
在 AutoGPT Platform 中使用该块的要点
- 块归类:
CompassAITriggerBlock在注册时被归入BlockCategory.HARDWARE("Block that interacts with hardware.",见 backend/blocks/_base.py#L84),在块选择器中可按该分类检索定位。 - 输入无需手动填写:
payload输入带hidden=True,运行期由 Webhook 系统注入,画布上不可见,不会给用户造成配置负担。 - 身份凭证:Compass 作为服务商在 backend/blocks/compass/_config.py 中完成注册,使用
ProviderBuilder("compass"),支持api_key类型的认证(.with_supported_auth_types("api_key")),因此接收 Compass 事件通常需要在平台中为 Compass 服务配置 API Key 凭据。 - 多实例并发触发:由于事件是推送到具体块实例的,同一张图里可以放置多个 Compass 触发块服务于不同分支;也可以把同一个触发块复制到多张图中,每张图接收同一事件的不同处理逻辑。
相关仓库资源
想进一步深入这套事件触发机制,可以从以下仓库路径继续阅读:
- 触发块完整实现:backend/blocks/compass/triggers.py
- Compass 服务商注册(认证元数据):backend/blocks/compass/_config.py
- Compass Webhook 接收与校验管理器:backend/integrations/webhooks/compass.py
- 服务商枚举定义(
COMPASS = "compass"):backend/integrations/providers.py - Webhook 触发块的通用配置模型与块类别定义:backend/blocks/_base.py
- 本块官方文档:docs/integrations/block-integrations/compass/triggers.md
一句话总结:Compass AI Trigger 把"语音/会议转写完成"这个外部事件变成了 AutoGPT Platform 工作流的启动信号——只需把它放到画布开头、连接好下游处理块、配置好 Compass 侧的 Webhook,你的 Agent 就能持续"收听"并自动响应每一次对话与会议。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00