| title | Aevatar 项目拆分策略(2026-02-21) |
|---|---|
| status | active |
| owner | eanzhao |
- 按能力域拆分构建与发布边界,降低跨域耦合。
- 保持当前架构原则:分层、统一 CQRS/Projection、插件化扩展。
- 为后续物理拆仓(multi-repo)提供可执行迁移路径。
当前已在单仓内完成可执行分片:
| 分片 | 文件 | 范围 |
|---|---|---|
| Foundation | aevatar.foundation.slnf |
Foundation.* + Foundation 单测 |
| AI | aevatar.ai.slnf |
AI.* |
| CQRS | aevatar.cqrs.slnf |
CQRS.* + Foundation.Projection + CQRS 单测 |
| Workflow | aevatar.workflow.slnf |
workflow/* + workflow/extensions/* + Workflow 单测 |
| Capabilities | aevatar.capabilities.slnf |
Configuration/Capabilities/Bootstrap/Host Api/Tools |
可复现验证:
bash tools/ci/solution_split_guards.shbash tools/ci/solution_split_test_guards.shbash tools/ci/slow_test_guards.sh- 逐个构建上述 5 个
.slnf(全部通过)
%%{init: {"maxTextSize": 100000, "flowchart": {"useMaxWidth": false, "nodeSpacing": 10, "rankSpacing": 50}, "themeVariables": {"fontSize": "10px"}}}%%
flowchart LR
P["aevatar.platform"] --> A["aevatar.ai"]
P --> W["aevatar.workflow"]
A --> W
P --> H["aevatar.hosts"]
A --> H
W --> H
建议仓库边界:
aevatar.platformAevatar.Foundation.*,Aevatar.CQRS.*,Aevatar.Capabilities,Aevatar.Foundation.Runtime.Hosting,Aevatar.Configurationaevatar.aiAevatar.AI.*(含 provider/tool/projection)aevatar.workflowsrc/workflow/*+src/workflow/extensions/*aevatar.hostsAevatar.Bootstrap,Aevatar.Mainnet.Host.Api,Aevatar.Workflow.Host.Api,tools/*,demos/*
- 逻辑分片:新增/修复
.slnf,支持分域独立构建。 - 增加分片守卫脚本:
tools/ci/solution_split_guards.sh。 - 增加分片测试守卫脚本:
tools/ci/solution_split_test_guards.sh(Foundation/CQRS/Workflow)。 - 将分钟级脚本自治演化 E2E 拆到独立项目
test/Aevatar.Integration.Slow.Tests,并新增tools/ci/slow_test_guards.sh。
- 拆
Aevatar.Bootstrap的 provider/tool 直接依赖(改为扩展装配包)。 - 保留
Bootstrap作为纯宿主编排层,不直接引用具体LLM/MCP/Skills实现包。
退出标准:
Aevatar.Bootstrap.csproj不再直接引用具体 AI provider/tool 工程。- Mainnet/Workflow Host 通过显式扩展包装配 provider/tool。
- 解耦
Workflow.Projection -> AI.Projection的硬引用(改为可选扩展注入)。 Workflow仅依赖Projection抽象与自身 read model 约束。
退出标准:
Aevatar.Workflow.Projection.csproj无Aevatar.AI.Projection直接引用。- AI 投影增强可按扩展模块方式接入。
- 逐步将跨仓依赖从
ProjectReference切换为版本化PackageReference。 - 建立发布顺序:
platform -> ai/workflow -> hosts。
退出标准:
- 每个仓库可在无源码级
ProjectReference前提下独立 build/test。 - 发布管线支持按仓增量发布。
- 真正拆仓(Git 级分离),保留一个顶层集成仓用于 e2e。
- 集成仓仅承载 host 组合测试与回归。
Workflow不反向依赖Extensions具体实现。Host不承载业务编排,能力组合只经 Infrastructure/Application 暴露。- CQRS/Projection 仍为单一主链路,禁止并行第二套读侧实现。
- 中间层不维护进程内事实态映射(
actor/run/session -> context)。 - 默认全量回归保持快速可用;分钟级慢测必须走独立慢测入口,不回流到默认
aevatar.slnx主链路。