模块边界
本页是维护者判断代码归属的地图。拿不准时,保持协议转换显式,并避免把 provider-specific 行为混入通用 translation。
src/ingress/从 HTTP path 检测入站协议,解析入站 body,并在 routing 前规范化 request carrier。
src/protocol/Wire structs、enums 和协议专属 event payload。不做 provider routing 决策。
src/routing/匹配 request_protocol 和 model_pattern,选择 provider,并执行协议 guard 错误。
src/translation/协议 pair 之间的纯 request/response/stream 转换。
src/provider/*/requestProvider request preparation:模型改写、provider compatibility projection、序列化。
src/provider/*/transport上游 URL 构造、provider-owned auth headers、HTTP send。
src/upstream/读取 provider status、headers、非流式 body 和流式 byte carrier。
src/http_support/HTTP response reconstruction、content-type helpers、header filtering、byte stream carriers。
src/error/Domain error taxonomy 和紧凑的客户端错误投影。
src/observe/结构化日志、capture phases、hints 和隐私安全诊断。
| 问题 | 放在 |
|---|---|
| 是否解析客户端请求 path 或 body? | src/ingress/ |
| 是否定义协议 JSON wire shape? | src/protocol/ |
| 是否按协议/模型选择 provider? | src/routing/ 或 pipeline routing step |
| 是否把一种协议 payload 转成另一种协议 payload? | src/translation/ |
| 是否改写 provider model 或 provider-local request 字段? | src/provider/*/request |
| 是否添加 provider 认证头或构造上游 URL? | src/provider/*/transport |
| 是否过滤 headers 或重建 HTTP response? | src/http_support/ |
| 是否渲染客户端错误? | src/error/ |
| 是否写日志或 capture artifacts? | src/observe/ |
| 避免 | 原因 |
|---|---|
把 HTTP Response 传进 src/translation/ | Translation 应在 carrier 边界保持纯粹。 |
| 在 translation 中添加 provider auth 逻辑 | Auth 是 provider transport 行为,不是协议转换。 |
| 把 provider 名称当协议值使用 | Provider 名称是任意用户标签。 |
| 协议 guard mismatch 后静默 fallback | 匹配 route 但 request_protocol 不一致是配置错误。 |
| 为了方便记录 request body | Prompt、工具参数和输出都是私有数据。 |