基于开源生态的飞书 Agent 闭环极速 MVP 选型方案

本方案旨在放弃“从零造轮子”,全面拥抱 2026 年主流的开源 AI 基础设施(MCP 协议、LangGraph 状态机、Langfuse 遥测),构建一个能够快速跑通“搭建 ──> 运行 ──> 微调 ──> 遥测 ──> 闭环进化”的极简 MVP 架构。

一、 降维打击的开源技术栈选型(The LEGO Stack)

通过引入以下三个核心开源技术,我们可以将原先需要 3 个月开发的工程量,压缩到 1-2 周内完成 PoC 验证:

       ┌────────────────────────────────────────────────────────┐
       │                 1. 编排大脑:LangGraph                 │
       │    (天然支持有向循环图 Cyclic Graph,内置 Human-in-the-loop) │
       └───────────────────────────┬────────────────────────────┘
                                   │
         ┌─────────────────────────┴─────────────────────────┐
         ▼                                                   ▼
┌─────────────────────────────────┐                 ┌─────────────────────────────────┐
│     2. 执行手脚:Lark MCP       │                 │      3. 遥测眼睛:Langfuse      │
│ (飞书官方 lark-openapi-mcp 服务)  │                 │   (开源 LLM 追踪,收集用户 Diff)  │
└─────────────────────────────────┘                 └─────────────────────────────────┘

1.1 大脑:LangGraph (Stateful Multi-Agent Orchestration)

为什么选它: 传统的 CrewAI 或 AutoGen 适合单向、顺序性的任务,但我们的“双 Swarm 协作”本质上是一个带有状态循环、需要人类介入(Human-in-the-loop)修改的有向图。

MVP 作用:

LangGraph 是目前唯一将“图状态(State)”和“中断等待(Interrupt & Resume)”作为一等公民对待的框架。

我们可以轻松用它定义“架构师 Node”和“部署 Node”,并且在部署前自动触发 interrupt_before,等待用户在控制台或 UI 确认(实现概念设计确认)。

1.2 手脚:Model Context Protocol (MCP) 与 飞书官方 MCP 服务

为什么选它: 这是本 MVP 能在一周内落地的核心秘诀! 2024年底由 Anthropic 提出的 MCP 协议已成为行业标准。飞书官方近期开源了 larksuite/lark-openapi-mcp。

MVP 作用:

我们完全不需要自己用 Python 封装飞书的 DDL/DML 接口。

启动 Lark MCP Server 后,大模型(如 Claude 3.5 Sonnet)可以直接通过标准的 JSON-RPC 调用飞书的所有 API。

大模型会自动识别到“这里有一个 create_bitable_table 的 Tool”,自主决定参数并调用,免去了我们编写上千行 API 适配和 CLI 解析代码的烦恼。

1.3 眼睛(遥测):Langfuse (Open Source LLM Observability)

为什么选它: 收集用户反馈数据和输入输出的 Diff 是机器学习闭环的难点。Langfuse 是目前最流行的开源 LLM 监控和评估平台。

MVP 作用:

自动 Trace 链条: Langfuse 能够自动记录 LangGraph 的每一个 Node 运行、每一个 MCP 工具调用。

用户反馈反馈(Feedback Score): 内置了评分 API。当用户在零代码页面对 AI 生成的表单给出“ thumbs up/down”或进行“文本微调”时,前端直接调用 Langfuse SDK 上报。

DPO 语料一键导出: 我们可以直接在 Langfuse 后台,将用户“打回并修改”(Rejected)的 Prompt 与“最终上线”(Chosen)的 Schema 导出为 DPO 训练集,免去自行开发遥测数据库。

二、 MVP 架构拼装蓝图(How It Works)

利用上述开源技术,我们设计的全链路闭环在 MVP 阶段的实际流转如下:

┌──────────────┐         ┌───────────┐         ┌────────────────────┐
│ 1. 用户输入   │ ──────> │ LangGraph │ ──────> │  Lark MCP Server  │
│ "帮我做请假"  │         │ (分析意图) │         │ (自动调用飞书接口) │
└──────────────┘         └─────┬─────┘         └─────────┬──────────┘
                               │                         │
                               ▼                         ▼
┌──────────────┐         ┌───────────┐         ┌────────────────────┐
│ 4. 闭环进化   │ <────── │ Langfuse  │ <────── │ 3. 用户在飞书微调   │
│ (DPO 导出)   │         │ (捕获反馈) │         │ (触发 Webhook 事件) │
└──────────────┘         └───────────┘         └────────────────────┘

第一步:概念设计与 L-DSL 生成

用户在前端页面(可以使用开源的 Chainlit 或 Dify 快速搭建对话界面)输入需求。

LangGraph 中的 “架构师 Node”(背后是 GPT-4o 或 Claude)进行多轮对话,最终输出标准的 L-DSL(用 JSON 表达)。

第二步:自动物理部署(MCP 驱动)

LangGraph 将 L-DSL 传递给 “部署 Node”。

“部署 Node”通过 lark-openapi-mcp,把逻辑模型翻译为一系列 MCP Tool Calls。

Lark MCP Server 接收指令,直接在用户的飞书中创建 Bitable、新增字段,并生成一篇带 Form 入口的飞书文档,交付运行。

整个调用过程由 Langfuse SDK 自动包装(Wrap),生成一条全局 Trace ID。

第三步:遥测捕获与 Diff 计算(轻量级方案)

用户打开飞书,发现某个字段不符合预期,在多维表格界面进行了修改(如将“备注”从普通文本改成了多行文本)。

我们部署一个极简的 Node.js/Python Webhook Receiver 订阅飞书的数据表字段变更事件。

当 Webhook 收到 updated 事件时,调用 Langfuse SDK:

# 将用户的修改作为 "Feedback" 关联到原本的 Trace 上

langfuse.score(

trace_id=original_trace_id,

name="user_refinement",

value=0.0, # 降低原生生成的评分

comment=json.dumps({"field": "备注", "change": "TEXT -> TEXTAREA"})

)

第四步:偏好数据导出与微调准备

在 Langfuse 的后台,我们可以直接看到所有“被用户修改过”的 Trace。

通过 Langfuse 的 API,一键拉取所有 value=0.0 的 trace,提取其 input(原始 Prompt)和 output(AI 初始生成),以及 comment(用户的最终修正结果),自动合并为: { prompt: "...", rejected: "TEXT", chosen: "TEXTAREA" }

DPO 数据集集装完毕!

三、 MVP 落地三步走计划(2周内跑通 POC)

为了实现极速验证,我们将工作流拆分为两个星期:

📅 第一周:通路的“正向打通”(从对话到飞书自动建表)

第 1-2 天:环境部署

部署一个本地/云端 Langfuse 实例(支持 Docker 一键部署:docker compose up)。

注册飞书开发者账号,创建一个飞书应用,并获取 APP_ID 和 APP_SECRET。

启动飞书官方的 Lark MCP Server 并进行配置。

第 3-5 天:LangGraph 编排与工具绑定

编写一个极简的 LangGraph 脚本,将大模型(Claude/GPT)连接到 Lark MCP Server。

实现:输入“帮我建一个采购审批表,包含商品名和总价”,LangGraph 自动解析,并通过 MCP 自动在用户的飞书中建好这个表格。

验证 Langfuse 中能清晰看到所有的工具调用 Trace。

📅 第二周:通路的“反向闭环”(从用户修改到 DPO 数据收集)

第 6-8 天:极简 Webhook 与 Diff 监听

编写一个 50 行代码以内的 Webhook 接收端,监听当前 Bitable 的 bitable.table.field.updated_v1 事件。

当用户在飞书界面上,把一个“单行文本”改为“数字”时,Webhook 成功捕获该事件。

通过 Webhook 将这一修改以 score 的形式提交给 Langfuse,与第 3-5 天生成的 Trace ID 绑定。

第 9-10 天:DPO 数据集自动生成与闭环测试

编写一段脚本,从 Langfuse 读取所有被修改过的 Trace。

自动将其清洗、合成为完美的 DPO dataset JSON 文件。

测试进化: 提取这一修改,作为 Few-shot 动态注入到第一周的 LangGraph Prompt 中。再次测试“建一个设备管理表,包含总价”,验证大模型是否已经“学会”了自动将总价设为数字类型。

四、 本方案的技术与商业优势

零研发成本的 UI 界面: 我们甚至不需要自己写前端界面。可以直接把 Lark MCP Server 接入到 Claude Desktop 或 Cursor 中。用户在 Claude Desktop 里直接打字,Claude 就能通过 MCP 在飞书里建表。

极高的确定性: 借助 LangGraph 的状态管理,我们在 MVP 阶段可以加入“人工审批”节点(Human-in-the-loop),在 MCP 真正去飞书建表前,让开发人员在命令行敲 y 确认,确保 100% 安全合规。

极具说服力的 Demo: 你可以在 10 分钟的汇报中,向团队或投资人展示:“看,我在这打一句话,飞书里应用自动建好了;我手改了一下飞书,后台自动收集到了 DPO 训练样本。整个闭环完全自动化运行。”