VSeed Agent Context (vseed 子包综述)
本文档面向后续 agent-code 与开发者,提供 VSeed 子包的架构、流程与关键模块的一页式上下文。
1. 目标与定位
VSeed 的目标是让 LLM 生成的 VSeed DSL 在上下文驱动下稳定落地为可渲染的 VChart / VTable Spec,从而支持智能生成与编辑图表。它本质是一个 Spec Builder:
- 输入:语义化 DSL(
VSeed DSL) - 输出:
VChart或VTable可渲染 Spec - 核心过程:
AdvancedPipeline+SpecPipeline
参考:
apps/website/docs/zh-CN/vseed/development/architecture.mdapps/website/docs/zh-CN/vseed/development/designPhilosophy/vseed.md
2. 核心流程(两段式 Pipeline)
2.1 Pipeline 总览
VSeed 将构建过程拆成两段,保证“可序列化中间态”和“不可序列化渲染态”分离:
-
AdvancedPipeline
- 输入:
VSeed DSL - 输出:
AdvancedVSeed(中间态 DSL,可序列化) - 负责:数据重塑、默认推断、主题/样式、分析配置、编码建模
- 输入:
-
SpecPipeline
- 输入:
AdvancedVSeed - 输出:
Spec(VChart / VTable 直接渲染配置,不可序列化) - 负责:将中间态细化为具体图表/表格 Spec
- 输入:
入口流程:
Builder.build()→buildAdvanced()→buildSpec()- 源码:
packages/vseed/src/builder/builder/build.tspackages/vseed/src/builder/builder/buildAdvanced.tspackages/vseed/src/builder/builder/buildSpec.ts
2.2 Pipeline 执行机制
execPipeline(pipeline, context, initialValue):按顺序 reduce 执行,每个 Pipe 返回 Partial 结果。- Pipe 类型:
(result, context) => result,无共享状态,依赖 context。 - 源码:
packages/vseed/src/pipeline/utils/pipeline.ts
3. Builder 机制
Builder 是核心协调器:
- 管理
vseed、advancedVSeed、spec、performance、locale - 支持:
prepare()(执行 dynamicFilter)、buildAdvanced()、buildSpec()、build() - 通过注册表选择不同 chartType 对应的 pipelines
源码:
packages/vseed/src/builder/builder/builder.ts
3.1 注册与扩展
- 注册所有内置类型与主题:
registerAll()packages/vseed/src/builder/register/all.ts
- 注册特定图表类型:
registerLine()等packages/vseed/src/builder/register/chartType/*
- 扩展 Pipe:
updateAdvanced()/updateSpec()packages/vseed/src/builder/register/custom.ts
- 主题注册:
registerLightTheme()/registerDarkTheme()/registerCustomTheme()packages/vseed/src/builder/register/theme/*
4. DSL / 类型体系
4.1 VSeed DSL
VSeed是 union 类型,覆盖所有图表/表格 chartType。- 入口类型:
packages/vseed/src/types/vseed.ts
4.2 AdvancedVSeed
AdvancedVSeed 是中间态 DSL,字段更丰富,含 encoding、reshape 信息、主题/样式/分析信息:
- 源码:
packages/vseed/src/types/advancedVSeed.ts
4.3 Spec Pipeline 类型
Spec pipeline 支持多种输出:
VChartSpecPipelinePivotChartSpecPipelineListTableSpecPipelinePivotTableSpecPipeline
源码:packages/vseed/src/types/pipeline/spec/spec.ts
5. 数据重塑(Data Reshape)
核心模块:将任意维度/指标组合转换为适配图表的可视化编码结构。
5.1 foldMeasures(指标折叠)
- 把多指标折叠为单指标
- 生成
foldInfo(含统计信息) - 保证“一条数据 = 一个图元”的映射
源码:packages/vseed/src/dataReshape/foldMeasures.ts
5.2 unfoldDimensions(维度合并)
- 合并多个维度为一个新维度(映射到视觉通道)
- 依赖 fold 后的数据保证无冲突
- 生成
unfoldInfo,包含颜色编码映射
源码:packages/vseed/src/dataReshape/unfoldDimensions.ts
5.3 dataReshapeByEncoding
- 组合调用:
foldMeasures+unfoldDimensions - 是“任意维度/指标 → 固定编码结构”的关键入口
源码:packages/vseed/src/dataReshape/dataReshapeByEncoding.ts
6. AdvancedPipeline 结构(示例)
以 line 为例(图表类 advanced pipeline):
page → initAdvancedVSeed → defaultMeasures → defaultDimensions → defaultMeasureId
→ encodingAdapter(...) → pivotAdapter(...) → sortXBandAxis → sortLegend
→ lineConfig → theme → markStyle → annotation
源码:packages/vseed/src/pipeline/advanced/chart/pipeline/line.ts
表格类(table / pivotTable) advanced pipeline:
page → initAdvancedVSeed → defaultMeasures → defaultDimensions → cellStyle
→ records → tableConfig / pivotTableConfig → theme
源码:
packages/vseed/src/pipeline/advanced/table/pipeline/table.tspackages/vseed/src/pipeline/advanced/table/pipeline/pivotTable.ts
7. SpecPipeline 结构(示例)
7.1 Line Spec Pipeline
- 支持 pivotAdapter:普通图表与透视图表分支
- 通过 pipe 组合实现 feature 复用
源码:packages/vseed/src/pipeline/spec/chart/pipeline/line.ts
7.2 Table Spec Pipeline
- table:columns / style / theme / cell
- pivotTable:rows / columns / indicators / theme / cell
源码:
packages/vseed/src/pipeline/spec/table/pipeline/table.tspackages/vseed/src/pipeline/spec/table/pipeline/pivotTable.ts
8. 动态过滤(Dynamic Filter)
VSeed 支持在 DSL 中写动态过滤逻辑(code),在 build 前执行。
Builder.prepare()会:- 定位 DSL 中所有
dynamicFilter - 深拷贝相关路径
- 注入
__row_index - 执行 code,写回
filter.result
- 定位 DSL 中所有
源码:packages/vseed/src/builder/builder/prepare.ts
9. Pipeline 设计原则(与实现约束)
- 功能拆分为“原子 Pipe”,避免大而全的 if/else
- 组合式 pipeline 构建图表类型
- 适配器模式(如 pivotAdapter)承接条件分支
详见:
apps/website/docs/zh-CN/vseed/development/designPhilosophy/pipeline/pipelineDesign.mdapps/website/docs/zh-CN/vseed/development/designPhilosophy/pipeline/advancedPipeline.mdapps/website/docs/zh-CN/vseed/development/designPhilosophy/pipeline/specPipeline.md
10. Agent 开发建议(面向新增功能)
-
新增图表类型:
- 补齐
types/chartType/* - 新建
advancedpipeline +specpipeline builder/register/chartType/*注册
- 补齐
-
新增功能:
- 优先设计独立 Pipe
- 避免在 Pipe 内进行大分支
- 若存在条件流程,优先用 Adapter 组合
-
新增 DSL 字段:
- 先更新
types与 zod 校验 - 在 advanced pipeline 中完成默认推断与 reshape
- 在 spec pipeline 中映射到具体 spec
- 先更新
11. 快速入口参考
- API 入口:
packages/vseed/src/index.ts - 注册所有能力:
registerAll() - 快速开始:
apps/website/docs/zh-CN/vseed/guide/quickStart.mdx