首页
/ AutoGPT Platform Compass AI 触发器块实战:用语音与会议转写事件驱动自动化工作流

AutoGPT Platform Compass AI 触发器块实战:用语音与会议转写事件驱动自动化工作流

2026-09-06 18:33:41作者:邵娇湘

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

工作原理

从文档与源码综合来看,该块遵循事件驱动而非"手动填入数据"的运行模式:

  1. Compass AI 完成一次语音/会议转写后,通过 Webhook 把转写事件推送到 AutoGPT Platform;
  2. Platform 的 Webhook 接入层校验并解析事件,将 payload 封装成该块声明的 Input.payload(类型为 TranscriptionDataModel,在编辑器中隐藏,不需要用户填写);
  3. 触发块执行 run(),从 input_data.payload.transcription 取出转写全文并以字符串形式输出(yield 为 "transcription" 输出);
  4. 下游块拿到这段文本后即可继续处理——可用于分析、存储,或作为 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.pyprovider 指明连接的第三方服务,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 触发块服务于不同分支;也可以把同一个触发块复制到多张图中,每张图接收同一事件的不同处理逻辑。

相关仓库资源

想进一步深入这套事件触发机制,可以从以下仓库路径继续阅读:

一句话总结:Compass AI Trigger 把"语音/会议转写完成"这个外部事件变成了 AutoGPT Platform 工作流的启动信号——只需把它放到画布开头、连接好下游处理块、配置好 Compass 侧的 Webhook,你的 Agent 就能持续"收听"并自动响应每一次对话与会议。

登录后查看全文
热门项目推荐
相关项目推荐