Skip to content

分层隔离与模块契约

本文定义分层目的、依赖方向、模块职责和对外暴露方式。

分层结构

层级目录责任
Wiringsrc/server.ts初始化依赖并装配系统
Platformsrc/feishu/*平台事件解析、平台交互处理
Platform-Agnostic Appsrc/core/*intent 分发、共享入口逻辑
Servicesservices/*线程、backend、权限、持久化、审批、审计
Packagespackages/*通道抽象、协议客户端、基础类型、输出适配

依赖方向

目录允许依赖禁止依赖
src/corepackages/*, services/*src/feishu, src/slack
src/feishusrc/core, packages/*, services/*src/slack
services/*packages/*src/*
packages/*同层内部services/*, src/*

核心模块职责

模块责任不负责
services/orchestratorthread、backend、turn、event pipeline、approval 恢复平台 payload 解析、平台 UI 细节
services/persistenceSQLite、repository、store业务编排
services/iam角色解析、命令授权平台认证
services/approval审批卡片数据、审批回调衔接平台消息接入
packages/channel-core通道抽象、intent router、统一 message/output 类型具体平台 UI
packages/channel-feishuFeishu adapter、输出适配、卡片构建线程管理、backend 选择
packages/channel-slackSlack 输出与 socket 基础能力共享业务编排
packages/codex-client / packages/acp-clientbackend 协议接入平台逻辑
packages/agent-coreBackendIdentity、基础 agent 类型、统一事件类型业务流程编排

对外暴露方式

规则说明
模块对外优先通过 index.ts 暴露收敛 import 入口
上层依赖稳定契约,不依赖内部 helper降低重构扩散面
平台层依赖共享服务,不反向污染共享层保持平台差异可替换

状态与身份约束

BackendIdentity

规则说明
transport 派生backendId 自动派生
原子传递不拆成 backendName/model/transport 分散传递
唯一持久源ThreadRecord.backend
不可变创建后冻结

线程状态

对象作用域说明
ThreadRecordchat 级线程持久状态与 backend 身份
UserThreadBindinguser 级当前 thread 指针,不携带 backend 元数据
RuntimeConfigper-turn每次 turn 运行配置
UserRecord全局用户角色状态

扩展规则

目标正确做法错误做法
新增平台新建平台 handler 与 output adapter,复用 services 与 packages在平台层重写线程/审批/后端管理
新增 backend扩展 backend registry / factory / unified event 映射让平台层感知 transport 差异
新增业务能力挂到现有 Path A / Path B旁路调用 backend 或平台 SDK