# 源码目录 项目保持一个 TypeScript package: ```text llm-to-agent/ ├── src/ │ ├── kernel/ │ ├── extensions/ │ │ ├── catalog.ts │ │ ├── shared/ │ │ ├── cli/ │ │ ├── web/ │ │ └── desktop/ │ ├── products/ │ └── main.ts ├── docs/ ├── tests/ ├── tooling/ ├── package.json └── tsconfig.json ``` ## 目录职责 - `kernel/`:Extension 生命周期、能力注册和事实事件; - `extensions/catalog.ts`:已经实现的跨 Extension ID、Hook 和 Event; - `extensions/shared/`:跨产品使用的能力和 Provider; - `extensions/cli|web|desktop/`:产品输入、展示和平台集成; - `products/`:静态选择产品启用的 Extension,不写业务逻辑; - `tests/`:跨 Extension、跨进程或跨版本测试; - `tooling/`:构建、开发和发布辅助。 Extension 的最终职责见 [Extension 规划](extensions.md)。 ## 放置规则 - 源码目录只在对应能力开始实现时创建; - Extension 内部文件和目录不设统一模板; - 业务概念和流程进入 Extension,不进入 Kernel; - 产品私有实现不能互相依赖; - Provider 只通过公开契约和扩展点接入能力所有者; - 普通复用代码不因此升级为 Extension; - 当前保持单包,只有独立构建、发布或进程隔离时才拆包。