飞书工程实施 Agent 集群与 ML 闭环验证方案
本方案旨在针对飞书生态(多维表格 Bitable、飞书文档 Docx、飞书审批),构建一个专门的 Feishu Implementation Agent Swarm(飞书工程实施 Agent 集群)。通过多 Agent 协同分工,验证“自然语言搭建 → 运行 → 用户微调 → 遥测采集 → 机器学习反馈闭环”的全生命周期。
一、 飞书 Agent 集群(Swarm)角色定义与拓扑
单兵 Agent 无法兼顾“需求理解、严格代码生成、实时事件监听、元数据差异计算和模型微调”。我们设计了由 5 个垂直 Agent 组成的协同网络:
┌─────────────────────────┐
│ 用户(飞书/Web) │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ 1. 飞书架构师 Agent │ (需求拆解与 DSL 生成)
└────────────┬────────────┘
│
┌───────────────────────┴───────────────────────┐
▼ ▼
┌─────────────────────────┐ ┌─────────────────────────┐
│ 2. 飞书 CLI 执行 Agent │ │ 3. 门户与文档排版 Agent │
│ (操作 lark-base/approval)│ │ (操作 lark-markdown) │
└─────────────────────────┘ └─────────────────────────┘
│ │
└───────────────────────┬───────────────────────┘
│ (应用上线运行)
▼
┌─────────────────────────┐
│ 用户手动微调应用 │
└────────────┬────────────┘
│ (触发 Webhook 事件)
▼
┌─────────────────────────┐
│ 4. 遥测与事件监听 Agent │ (实时捕获、过滤、合并)
└────────────┬────────────┘
│ (生成快照差异)
▼
┌─────────────────────────┐
│ 5. 差异对齐与演进 Agent │ (计算 Diff,生成 DPO 语料)
└─────────────────────────┘
1.1 核心角色与分工表
Agent 角色
专精领域
核心调用工具 (Lark CLI Skills)
输入 → 输出
1. 飞书架构师 Agent
(Lark Architect)
业务建模、需求分析、ER 关系梳理
无(纯脑力与规划)
自然语言 → 飞书统一 DSL
2. 飞书 CLI 执行 Agent
(Lark CLI Operator)
严谨的命令行执行、多维表格与审批流搭建
lark-base, lark-calendar, lark-vc
统一 DSL → 飞书 Bitable & Approval 物理实体
3. 门户与文档排版 Agent
(Lark UI/Doc Designer)
美化飞书文档、富文本 Block 排版、大盘配置
lark-markdown, lark-sheets
统一 DSL → 优雅的飞书文档门户
4. 遥测与事件监听 Agent
(Lark Telemetry Listener)
监听飞书开放平台事件、过滤误操作、Session 合并
lark-event (WebSocket / Webhook)
飞书 Webhook 原始事件 → 用户净修改日志
5. 差异对齐与演进 Agent
(Lark Alignment & Evolver)
结构化 AST 差异计算、Prompt 生成、模型微调
本地 Diff 引擎、DPO 训练 Pipeline
原始 DSL + 净修改日志 → 偏好数据集 / 向量库 RAG 注入
二、 全生命周期五步闭环流程(The 5-Step Loop)
第一步:搭建(Provisioning)
用户输入: “我需要一个请假审批应用,员工提交请假申请(姓名、时间、事由),3天以内组长审批,3天以上总监审批。”
架构师 Agent 拆解业务实体,输出标准 Unified DSL。
CLI 执行 Agent 解析 DSL,并发调用以下 CLI 指令创建底座:
# 1. 创建多维表格底座
lark-cli base +create --title "请假管理系统"
# 2. 建立请假表
lark-cli base table create --app-token "bascnX..." --table-name "请假申请表"
# 3. 建立字段 (姓名、开始时间、结束时间、请假天数、请假事由、状态)
门户排版 Agent 随后启动,通过 lark-cli docs +create 生成一个精美的说明文档,并将多维表格的“表单视图(Form View)”以 Block 的形式嵌入到文档中,提供一个统一入口:
lark-cli docs +create --api-version v2 --doc-format markdown --content $'# 请假大盘\n\n 请使用下方表单提交申请:\n{{bitable_form_block_id}}'
第二步:运行(Execution)
应用交付用户使用。员工开始在多维表格表单中填写数据,触发飞书内置审批流或由 Agent 监听事件进行外部自动化流转。
第三步:用户微调(User Refinement / Human-in-the-Loop)
场景: 用户在使用过程中,发现默认的“请假事由”是个单行文本框(TEXT),导致员工填写事由时写得太简短。
用户手动微调: 用户直接在飞书多维表格的 UI 界面上,点击字段设置,将“请假事由”修改为了多行文本(TEXTAREA),并新增了一个“紧急程度”的单选字段(SELECT,选项:普通、紧急)。
第四步:数据采集(Telemetry Collection)
传统的低代码平台难以捕获这种纯 SaaS 端的修改。我们利用 遥测与事件监听 Agent 来攻克这一技术断层:
┌────────────────┐ ┌─────────────────────┐ ┌───────────────────────┐
│ 用户在飞书界面 │ ───────> │ 飞书开放平台事件 │ ───────> │ 遥测 Agent │
│ 手动修改字段属性│ │ (Bitable.Field.Upd) │ │ - 过滤 15 分钟内的重复噪音│
└────────────────┘ └─────────────────────┘ │ - 合并为 Single Session│
└──────────┬────────────┘
│
▼
┌───────────────────────┐
│ 输出:用户净修改 Schema│
└───────────────────────┘
事件订阅: 遥测 Agent 通过 WebSocket 或 Webhook 订阅飞书的 bitable.table.field.updated_v1 和 bitable.table.field.created_v1 事件。
噪音过滤: 用户在微调时可能会反复修改(如先改成单选,又改成多选,最后改回单选)。遥测 Agent 引入 15分钟滑窗机制:对同一个多维表格的修改事件进行 Session 聚合,只保留该 Session 结束时的“最终状态差异”。
第五步:机器学习反馈闭环(ML Alignment Loop)
差异对齐与演进 Agent 介入,计算 AST 级别的差异,并执行两层进化。
1. 差异计算(AST Diff):
初始模型配置 (Schema
init
):
{"field_name": "请假事由", "type": "TEXT"}
用户修改后的最新配置 (Schema
live
):
{"field_name": "请假事由", "type": "TEXTAREA"}
差异结果 (Delta):
{"action": "UPDATE_FIELD", "field": "请假事由", "from": "TEXT", "to": "TEXTAREA"}
2. 偏好对齐训练数据(DPO Pair Generation):
演进 Agent 自动将这次调整转化为大模型可以直接学习的 DPO (Direct Preference Optimization) 训练对:
D={(x
prompt
,y
bad
,y
good
)}
x
prompt
(Context): 用户需要一个请假审批应用,包含姓名、时间、请假事由...
y
bad
(AI 曾犯的错): 生成单行文本 {"field_name": "请假事由", "type": "TEXT"}。
y
good
(用户教 AI 改正的结果): 生成多行文本 {"field_name": "请假事由", "type": "TEXTAREA"}。
将此数据集打包送入微调 Pipeline,使大模型底座在下次面对类似“事由、描述、备注”等字段时,原生生成率直接从 TEXT 进化为 TEXTAREA。
三、 闭环验证 PoC 实施路线图(3周极速 PoC 方案)
为了快速验证该闭环的可行性,我们无需一开始就搭建庞大的 Agent 集群系统,而是可以编写一个最小可行性 PoC 脚本。
【Week 1: 双向通路打通】 ───> 【Week 2: 遥测与 Diff 运行】 ───> 【Week 3: DPO/RAG 闭环进化】
Week 1: 双向通路打通(Setup -> Run)
任务:
部署 lark-cli 并完成 OAuth 授权,让 Agent 拥有操作多维表格的权限。
编写 架构师 Agent 和 CLI 执行 Agent 的最小逻辑:输入“帮我建一个简易 CRM 系统(包含客户名、联系电话、备注)”,Agent 自动运行 lark-cli base 并在用户的飞书中生成这个表格。
Week 2: 遥测与 Diff 运行(Refine -> Collect)
任务:
在腾讯云/阿里云上部署一个极简的 Webhook 接收端(作为遥测 Agent),订阅当前测试多维表格的变更事件。
让人类用户在飞书界面中把“联系电话”的字段格式从“文本(TEXT)”修改为“电话号码格式(PHONE)”。
验证 Webhook 能否准确捕捉这一变化,并自动计算出 Diff。
Week 3: 闭环进化(ML Feedback)
任务:
ICL (上下文学习) 演进验证: 将差异("联系电话" 应该用 "PHONE" 类型)作为 Few-Shot Prompt 动态插入到 架构师 Agent 的 System Prompt 中。
验证测试: 再次用自然语言让 AI 建一个“供应商管理系统,需要姓名、联系电话”。
预期结果: 此时 Agent 在完全没有经过代码重写的前提下,由于吸收了微调上下文,在新建表格时,自动将“联系电话”设置为了 PHONE 类型。
四、 核心技术攻坚细节
4.1 飞书 CLI 的“输入注入(Prompt Injection)”防护
由于 lark-cli 直接在宿主机的 Terminal 中运行,如果大模型生成的字段名包含恶意 shell 命令(如:lark-cli base table create --table-name "; rm -rf / ;"),会引发巨大的安全灾难。
攻坚策略:
CLI 执行 Agent 绝不直接拼接 shell 字符串。
必须使用 CLI 的 lark-cli ... --params '{"json_key": "val"}' 的强类型 JSON 参数传递方式,并在中间件强制对非法 Shell 字符(如 ;, &, |, `)进行正则拦截。
4.2 遥测过滤:合并非人为动作
在自动化流运行中,可能有“飞书机器人”在频繁往 Bitable 里写入或更新记录。遥测 Agent 必须能够区分 “用户在设计态微调表结构(User Schema Change)” 和 “数据运行时写入(Runtime Data Update)”。
攻坚策略:
仅监听 bitable.table.field.*(字段结构变化事件)和 bitable.table.view.*(视图结构变化事件)。
忽略 bitable.table.record.*(具体数据记录变化事件),实现“设计态”与“运行态”的数据彻底隔离。
