fischer-agentkit/docs/brainstorms/2026-06-24-bitable-module-r...

215 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 多维表格Bitable伴生服务需求文档
- **日期**2026-06-24
- **状态**:已对齐,待规划
- **范围分级**Deep — feature
- **后续**:交由 `/ce-plan` 做实现规划
---
## 1. 问题与机会
AgentKit 当前缺少一个**统一的持久化结构化数据落地载体**。当出现以下需求时,没有合适的地方承接数据:
- 多系统数据汇总(需把多个来源的结构化数据合并到一处)
- 本地 Excel 上传后持久化(当前 Excel 仅能单向导出或解析为文本进 RAG无法作为可编辑的结构化表留存
- 外部数据采集(爬虫/API 抓取的结果需要按字段落地为可查询、可视图、可分析的表)
现状Excel 导出是单向的(`src/agentkit/documents/renderers/excel_renderer.py`Excel 解析只转文本进知识库(`src/agentkit/memory/document_loader.py``MultiSourceRetriever` 只做读侧多源检索,`SharedWorkspace` 是带 TTL 的临时 KV。**没有任何模块能把异构数据源的结构化数据持久化为可编辑、可视图、可计算的多维表格。**
机会:引入多维表格伴生服务,作为 AgentKit 异构数据的统一落地载体。Agent 作为数据的主要作者(采集写入),用户在落地后的表上精修、配视图、做分析。这既补齐了结构化数据持久化的缺口,又让 Agent 获得"数据编排者"的战略能力。
## 2. 主要使用者与核心价值
| 维度 | 决策 |
|------|------|
| **形态** | 混合模式——Agent 采集 + 用户精修 |
| **Agent 角色** | 数据作者执行三类采集Excel/数据库/爬虫API按字段写入多维表格 |
| **用户角色** | 数据精修者与分析者:在落地后的表上编辑用户列、配置视图、做分析 |
| **核心价值** | 异构数据源的统一持久化落地载体,其上承载视图、分析、公式、引用 |
**三类采集场景**(均为 Agent 驱动):
1. 上传 Excel 或提供在线 Excel 地址 → 读取内容 → 按字段写入多维表格
2. 指定数据库 → 根据数据表 → 生成多张多维表格数据表
3. 根据指令执行数据采集(爬虫或具体 API→ 获取到的数据按字段写入多维表格
## 3. 服务架构
**多维表格是 AgentKit 的伴生服务**
- **逻辑独立**:自有 API/CLI、自有领域模型表/字段/记录/视图/公式)、自有存储边界
- **当前共部署**:物理上与 AgentKit 同进程或同部署单元UI 级集成于 AgentKit 前端
- **调用边界**AgentKit ↔ 多维表格走 API/CLI**不做进程内紧耦合**
- **未来演进**:可零成本抽离为独立服务,只是部署变更,不改代码
- **存储边界**:当前共享 AgentKit 的 PostgreSQL使用**独立 schema** 隔离;未来抽离时迁移
> 设计含义:所有跨服务交互按"远程调用"心智设计即使当前是本地调用。字段所有权模型、upsert 语义、公式引擎都**内建在多维表格服务自身**,而非套在外部工具上。
## 4. 关键产品决策
### 4.1 写入语义:按主键 upsert + 字段所有权模型
Agent 重复采集时,按表的主键字段 upsert
- **匹配到的记录**:更新"数据列"Agent 管理的列),保留"用户列"
- **未匹配的记录**:新增
- **用户列**永不被 Agent 覆盖
**字段所有权**(每列标记为"数据列"或"用户列"
- **自动推断**:公式列、引用列、手动标注列 → 用户列Agent 采集写入的列 → 数据列
- **Agent 声明**Agent 采集时可显式声明列的所有权,覆盖自动推断
- 公式列天然是用户列(派生的,永不被覆盖)
### 4.2 公式与引用:身份核心,深度分阶段
公式列和引用列是"多维表格"身份的核心,**必须从 v1 存在**,但支持深度分阶段扩展:
- **v1**:基础公式(算术、字符串、简单聚合如 SUM/AVG/COUNT+ 基础引用lookup 到另一张表的字段)
- **v2+**:高级公式(日期、条件、跨表 rollup+ 函数库扩展
**公式重算策略**:异步重算 + "计算中"状态标记。Agent 写入数据列后,依赖该列的公式列进入"计算中"状态,由后台异步重算管道更新。避免同步重算阻塞写入,代价是短暂的不一致窗口(用户可见"计算中"标记)。
### 4.3 规模与存储:可演进
- **起步规模**:单表 < 10 万行总表 < 1000 部门级
- **架构目标**支持未来向大规模10万+演进
- **存储选型**规范化存储字段定义记录单元格分离+ 索引 + 分页**** JSONB 整表塞单行
- **大规模演进路径**v3列式存储分区物化视图异步重算管道
## 5. 能力范围与分阶段
用户提出的 6 项能力按复杂度与依赖关系分三阶段
| 能力 | 复杂度 | v1 | v2 | v3 |
|------|--------|----|----|----|
| 模块搭建服务骨架+领域模型+API | 基础 | | | |
| 数据采集落地Excel/DB/爬虫API 三类 | | | | |
| 多视图展示 | | 网格视图 | 看板/甘特/画廊 | 表单 |
| 分析计算 | 中高 | | 分组/透视 | 高级聚合 |
| 公式列+引用列 | | 基础公式+lookup | 高级公式+rollup | 函数库扩展 |
| 图片+附件 | 低中 | | | |
### v1核心闭环验证
验证"Agent 采集 持久化落地 用户查看/精修"的核心闭环
- 服务骨架领域模型/字段/记录/视图)、API/CLI独立 schema 存储
- 字段所有权模型 + 按主键 upsert 语义
- 三类采集落地Excel 上传/URL数据库导入爬虫/API 采集
- 网格视图表格视图支持排序/筛选/分页/单元格编辑
- 基础公式列算术字符串SUM/AVG/COUNT 等简单聚合
- 基础引用列lookup 到另一张表的字段
- 图片/附件字段类型复用现有文件上传能力
- 异步公式重算 + "计算中"状态
### v2多视图与分析
- 看板视图按分组字段分列展示
- 甘特视图按日期字段排时间线
- 画廊视图以图片/附件为主视觉的卡片展示
- 高级公式日期函数条件函数跨表 rollup
- 分析能力分组聚合透视表
### v3规模化与协作
- 表单视图以表单形式收集数据写入表
- 公式函数库扩展
- 大规模优化列式存储分区物化视图异步重算管道升级
- 多人实时协作
## 6. 方案探索与推荐
### 方案 1自建多维表格引擎分阶段交付
AgentKit 内构建原生 bitable 子系统规范化存储字段所有权模型原生内建公式引擎自建分阶段Agent 通过新增的 bitable API/CLI 写入
- **优点**完全可控与现有栈PG/Redis/Vue/FastAPI匹配字段所有权模型原生upsert 语义无摩擦
- **缺点**构建工作量最大公式引擎是硬骨头需长期维护
- **风险**公式引擎范围蔓延大规模重算性能
### 方案 2集成开源多维表格APITable/NocoDB作为子服务
部署开源 bitable 作为伴生服务AgentKit 通过其 API Agent 写入用户编辑在 bitable 原生 UI 完成上层叠加 upsert-保留用户列逻辑
- **优点**视图/公式/附件白送成熟最快获完整功能
- **缺点**AGPL 协议有传染性风险若商业化upsert-保留用户列需硬套外部 bitable 无字段所有权概念集成走 API 较松
- **风险**协议冲突外部模型与需求偏离
### 方案 3挑战者Agent 结构化数据底座优先UI 作为叠加层
反转优先级多维表格首先是 Agent 的持久化结构化工作记忆/输出底座用户侧多视图 UI 是读写底座的叠加层
- **优点**最大化 Agent 协同战略差异化底座可驱动表格 UI 之外的能力
- **缺点**用户主动建表流程次要底座抽象需更多架构思考
### 推荐:方案 1 自建 + 方案 3 底座心智
**理由**
1. 三类采集场景全是 Agent 驱动——本质是"Agent 作为数据作者"方案 3 心智天然契合但用户也要精修需方案 1 的完整引擎
2. upsert-保留用户列的字段所有权模型是定制的——外部 bitable 没有此概念硬套很痛AGPL 对可能商业化的产品是真实风险
3. 现有基础设施齐全PG + pgvector + Redis + SQLAlchemy 2 + Vue3 + Ant Design Vue自建边际成本可控
4. 伴生服务架构约束天然要求 API/CLI 边界——方案 1 自建反而最契合因为所有权模型内建在服务自身
5. 分阶段控制风险——v1 先验证核心闭环
**与方案 3 的融合**架构上以"Agent 的持久化结构化数据底座"心智设计领域模型使多维表格不仅是"一个表格功能"而是 Agent 的数据编排能力的载体这让底座未来可驱动表格 UI 之外的能力仪表盘报表Agent 记忆)。
## 7. 范围边界
### 本次范围内v1
- 多维表格伴生服务骨架领域模型API/CLI独立 schema 存储
- 字段所有权模型 + 按主键 upsert 语义
- 三类采集落地Excel/DB/爬虫API
- 网格视图
- 基础公式列 + 基础引用列lookup
- 图片/附件字段
- 异步公式重算
### 延后v2/v3
- 看板/甘特/画廊/表单视图
- 高级公式日期/条件/跨表 rollup+ 函数库扩展
- 分析能力分组/透视
- 大规模优化列式/分区/物化视图
- 多人实时协作
### 本产品身份之外
- 不做通用电子表格非单元格自由编辑是字段化记录模型
- 不做 ETL/数据管道平台采集是 Agent 驱动的按需执行非定时调度管道
- 不做 BI 仪表盘产品分析能力服务于表格内聚合非独立 BI
- 不替代知识库 RAG多维表格是结构化数据载体非非结构化文档检索
## 8. 假设与依赖
- **假设**Agent 已具备执行采集任务的能力爬虫/API 调用多维表格只承接"写入"环节不负责采集执行本身
- **假设**共享 PostgreSQL 的性能足以支撑 v1/v2 规模v3 大规模时再评估独立数据库或列式存储
- **依赖**现有文件上传能力`src/agentkit/server/routes/chat.py` 的上传端点、`data/uploads/` 存储可复用于附件字段
- **依赖**Agent 工具系统`src/agentkit/tools/base.py` `execute() -> dict` 契约可扩展新增 bitable 写入工具
- **假设**公式异步重算的"计算中"窗口秒级对用户可接受
## 9. 成功标准
**v1 验证成功的标志**
1. Agent 能把一份 Excel 上传的数据按字段写入多维表格并在网格视图中查看
2. Agent 能指定一个数据库表生成对应的多维表格
3. Agent 能执行一次 API 采集把返回数据按字段写入多维表格
4. 用户能在网格视图中编辑单元格新增公式列 `=SUM(数据列)`)、看到异步重算结果
5. Agent 对同一表重复采集时按主键 upsert 更新数据列用户的公式列和手动编辑保留不变
6. 多维表格服务通过 API/CLI AgentKit 调用无进程内紧耦合
## 10. 下一步
本需求文档交由 `/ce-plan` 做实现规划重点规划
- v1 的领域模型设计/字段/记录/视图/公式 的实体关系
- 独立 schema 的存储设计规范化表结构索引分页
- API/CLI 接口设计CRUD + 采集写入 + upsert + 公式重算触发
- 字段所有权模型的实现机制自动推断 + Agent 声明
- 异步重算管道设计
- Agent bitable 写入工具设计
- 前端网格视图组件选型与集成