Skip to content

src 分层与依赖约束

方向文档(风巢项目 17683 / 史诗 #17713)。P5(#17727)已落地:workspace 三分包 packages/{shared,habitat,frontend}(不发布)+ @freeanima/habitat/* 前缀;portal 按 4 form 拆入两包。实现约束以本文件 + .cursor/rules/repository-topology.mdc / code-layers.mdc 为准。

路径装什么依赖禁令
sharedpackages/shared/契约、纯 Zod、vault-crypto、同构工具(含 task/coding/companion-app/无 drizzle / 无 React / 无 LLM·mail
habitatpackages/habitat/进程栈(原 host)+ features 服务端 + CLI + MCP无 React
frontendpackages/frontend/client + ui-kit + features UI + Web/扩展/Tauri SPA无 drizzle / 无仅后端库

不用 backend 命名——与产品「Habitat / 栖息地」对齐。

勿混淆: @freeanima/habitat/…(进程栈)≠ @freeanima/features/habitat/…(管理台)≠ shared/habitat-* / shared/companion-app

packages/habitat/kernel/
hooks / logging / token / 纯工具
config-mechanism/
loop-mechanism/ # P5:自 engine/loop 物理迁入;仍经 core 适配(叶层分类见 oxlint)

不进 kernel: 各 config 参数段、turn/conversation、drizzle/PG、capabilities、React、具体 MCP/gateway apply。

DDL 仅 habitat。存储形状的纯 Zod 经 codegen + package exports 落到 shared;frontend / 协议只依赖该出口。

form id业务壳路径归属
cliCLIpackages/habitat/portal/clihabitat
mcpMCPpackages/habitat/capabilities/mcp-serverhabitat
applicationWebpackages/frontend/portal/app/webfrontend
application桌面 / 移动packages/frontend/portal/app/taurifrontend
browser扩展packages/frontend/portal/extensionfrontend
阶段任务状态
P0#17722已落地
P1#17723已落地
P2#17724已落地
P3#17725已落地
P4#17726已落地(注入化)
P5#17727已落地:三包 + portal 拆入 + loop-mechanism + host→habitat 改名

护栏:just qa check-package-depscheck-frontend-no-drizzlecheck-shared-shapes、oxlint layer-deps