# 源码目录 项目保持一个 TypeScript package: ```text llm-to-agent/ ├── src/ │ ├── kernel/ │ ├── extensions/ │ │ ├── shared/ │ │ ├── cli/ │ │ ├── web/ │ │ └── desktop/ │ ├── products/ │ └── main.ts ├── docs/ ├── tests/ ├── tooling/ ├── package.json └── tsconfig.json ``` ## 目录职责 - `kernel/`:只保存 Extension 运行机制。 - `extensions/shared/`:跨产品使用的具体能力。 - `extensions/cli|web|desktop/`:三条产品线各自的输入、展示和平台集成。 - `products/`:静态选择每个产品启用哪些 Extension,不写业务逻辑。 - `tests/`:只保存跨 Extension、跨进程或跨版本测试;普通测试跟随源码。 - `tooling/`:构建、开发和发布辅助。 Extension 的具体划分见 [Extension 目录](extensions.md)。 ## 放置规则 - 业务概念和流程进入 Extension,不为了复用方便放进 Kernel。 - 产品私有实现不能互相依赖,真实复用出现后再提升到 `shared/`。 - 目录和文件只在真实代码出现时创建,不预建占位层级。 - 当前保持单包;只有构建、平台依赖、独立分发或进程隔离造成实际问题时才拆包。