File contents BFE 代码库研发流程
本 Skill 适用于在 bfe/ 目录中新增或修改 BFE 功能(例如 AI Gateway 的多 API-Key 会话亲和性、限流、计费、路由、协议支持等)的完整研发流程。
触发语
当用户提出以下类型请求时启用本流程:
“我要实现 xxx 功能”
“请帮我完成 xxx 的代码与测试”
“请在 BFE 中增加/修改 xxx”
执行原则
分阶段暂停确认 :本流程将研发拆分为多个 Phase。每个 Phase 执行完毕后,必须暂停并等待用户确认“可以继续”后,再进入下一个 Phase。不要在未获得用户确认的情况下自动推进到下一阶段。
Git 提交前确认 :在任何 git commit、git push 或其他会改变 Git 仓库状态的操作之前,必须先向用户说明变更内容并取得明确同意。禁止自动执行 Git 提交或推送。
Git push 默认目标为 origin :如果获得用户授权执行 git push,默认推送到 origin 远程仓库,而不是 upstream。除非用户明确指定其他 remote,否则不使用 upstream。
研发阶段
Phase 0. 需求澄清与范围界定
让用户明确:
功能目标(一句话描述)
验收标准(必须通过的测试/行为)
影响范围(是否改配置协议、是否改 Redis/状态、是否影响既有请求路径)
判断是否为“非平凡改动”(多文件、有架构选择、用户偏好影响实现):
是 → 调用 EnterPlanMode,先出设计文档/plan 再执行。
否 → 直接进入 Phase 1。
完成本阶段后暂停,等待用户确认后再进入下一阶段。
Phase 1. 修改 modifications 文档
BFE 侧的改动必须在 bfe/docs/zh_cn/modifications/ 留下修改说明,便于后续维护与审计。
在 bfe/docs/zh_cn/modifications/ 下新建日期化目录,例如:bfe/docs/zh_cn/modifications/2026-08-26-ai-key-session-affinity/
在该目录下创建 design-changes.md,包含:
背景与目标
主要改动点(数据结构、模块行为、新增字段)
配置影响
兼容性说明
如已有同主题目录,则更新其中的文档,不要重复创建。
完成本阶段后暂停,等待用户确认后再进入下一阶段。
Phase 2. 更新 configuration 文档
如果改动涉及配置文件(cluster_conf.data、mod_*.conf、bfe.conf 等),必须同步更新中英文配置文档:
中文:bfe/docs/zh_cn/configuration/
英文:bfe/docs/en_us/configuration/
更新原则:
新增字段要说明类型、默认值、是否必填、示例。
修改字段要说明前后行为差异。
两个语言目录尽量保持内容一致。
完成本阶段后暂停,等待用户确认后再进入下一阶段。
Phase 3. 更新 sys_design 文档
如果改动涉及系统设计、协议交互或状态存储,需要更新 bfe/docs/zh_cn/sys_design/:
查找现有相关文档(例如 multi_api_key.md)。
在文档中新增/修改对应章节,说明:
方案选型
数据流
状态存储(如 Redis key 格式、TTL)
边界情况与优化
如需新增独立文档,直接创建 .md 文件,并在相关文档中建立链接。
完成本阶段后暂停,等待用户确认后再进入下一阶段。
Phase 4. 代码实现
阅读相关源码,确认:
配置结构体(bfe_config/bfe_cluster_conf/cluster_conf/)
模块加载与处理逻辑(bfe_modules/mod_*)
反向代理与 Key 选择逻辑(bfe_server/reverseproxy.go 及相关测试)
做最小改动,优先匹配现有代码风格:
不引入未使用的依赖。
不修改与本次需求无关的逻辑。
关键实现完成后,先跑模块级单元测试:cd bfe
go test ./bfe_server/... ./bfe_modules/<相关模块>/...
完成本阶段后暂停,等待用户确认后再进入下一阶段。
Phase 5. 编写集成测试设计文档
BFE 的集成测试设计文档位于 bfe/tests/integration/测试设计文档/。在写测试代码之前,先补充对应场景的设计文档,便于后续维护与评审。
在 bfe/tests/integration/测试设计文档/ 下新建 scenario 目录,命名规范:scenario-SC<序号>-<简短中文描述>
编写 场景说明.md,包含:
场景背景与目的
运行模式
涉及的 BFE 配置文件
测试 Cluster 与关键配置(AIConf、KeyPolicy、路由表等)
测试例列表
每个测试例的详细说明(目的、前置条件、请求构造、执行步骤、预期结果、清理)
公共基础设施
与其他场景的依赖关系
为每个测试例编写独立的 TC-<序号>-<测试例名称>.md,结构与现有 TC 文档保持一致。
更新 bfe/tests/integration/测试设计文档/测试场景总体说明.md:
在“场景清单”中新增一行;
在“场景与测试例对应关系”中新增该 scenario 的 TC 列表。
完成本阶段后暂停,等待用户确认后再进入下一阶段。
Phase 6. 编写集成测试代码
BFE 的集成测试代码位于 bfe/tests/integration/implementation/。
选择最接近的现有 scenario 作为模板(例如需要 Redis 的可参考 scenario-SC07-ai-rate-limit-redis-key)。
新建 scenario 目录,命名规范:scenario-SC<序号>-<简短英文描述>
复制模板后,修改 testdata/ 中的:
server_data_conf/host_rule.data:host
server_data_conf/route_rule.data:cluster
cluster_conf/gslb.data:cluster 名称
mod_ai_route/ai_route.data:apikey owner / route binding
mod_ai_token_auth/mod_ai_token_auth.conf、mod_ai_rate_limit/mod_ai_rate_limit.conf 等
编写 _test.go,覆盖:
正常路径
功能开关开启/关闭对比
边界场景(单 Key、多 ClientKeyId、BFE 重启后状态保持、错误码/降级)
运行集成测试:cd bfe
go test ./tests/integration/implementation/scenario-SC<xx>-<描述>/... -v
完成本阶段后暂停,等待用户确认后再进入下一阶段。
Phase 7. 回归验证
运行本次新增 scenario 的测试。
运行与被改动模块相关的既有 scenario:
多 API-Key 轮换:scenario-SC02-multi-api-key
Redis 限流:scenario-SC07-ai-rate-limit-redis-key
运行相关单元测试:go test ./bfe_server/... ./bfe_modules/mod_ai_route/... ./bfe_modules/mod_ai_token_auth/...
如有失败,优先修复;修复后再次回归,直到全部通过。
完成本阶段后暂停,等待用户确认后再进入下一阶段。
Phase 8. 收尾与总结
检查是否有注释/文档描述的是旧行为,及时同步更新。
向用户汇报:
改动了哪些文件
新增/修改了哪些测试
验证结果
仍存在的风险或待决策点(如有)
Git 提交前必须人工确认 :如果用户要求或流程需要执行 git commit、git push 等 Git 操作,必须先向用户清晰说明本次提交内容(包含文件清单与主要变更摘要),并取得明确同意后再执行。禁止在未获授权的情况下自动提交或推送。获得授权后,git push 默认推送到 origin,不要推送到 upstream,除非用户明确指定。
常见陷阱
cluster 名称不一致 :route_rule.data、gslb.data、ai_route 中的 cluster 名称必须一致,否则 BFE 启动会报 no backend conf。
ApikeyRouteTableBindings 遗漏 :新增 client apiKey 时,必须在 mod_ai_route/ai_route.data 的 ApikeyRouteTableBindings 中为其绑定路由表。
Redis 绑定 key 格式 :确认代码中实际使用的 key 格式(如 bfe:ai:key_affinity:<cluster>:<client_key_id>)。
单 Key 优化 :如果实现了“单 Key 不走 Redis”,需要同时避免读和写,否则集成测试里 Exists 会误判。
BFE 端口冲突 :集成测试里 processEnv.StartBFE 会自动分配端口,不要手动写死。
推荐命令速查
# 模块单元测试
cd bfe
go test ./bfe_server/... ./bfe_modules/mod_ai_route/... ./bfe_modules/mod_ai_token_auth/...
# 单个集成测试场景(详细日志)
go test ./tests/integration/implementation/scenario-SC<xx>-<描述>/... -v
# 相关场景回归
go test ./tests/integration/implementation/scenario-SC02-multi-api-key/...
go test ./tests/integration/implementation/scenario-SC07-ai-rate-limit-redis-key/...
1 --- 2 name: bfe-rd-workflow 3 description: 引导用户在 bfe 代码库中完成一次完整的功能研发流程,包括需求对齐、文档修改、代码实现、集成测试与回归验证。 4 --- 5 6 # BFE 代码库研发流程 7 8 本 Skill 适用于在 `bfe/` 目录中新增或修改 BFE 功能(例如 AI Gateway 的多 API-Key 会话亲和性、限流、计费、路由、协议支持等)的完整研发流程。 9 10 ## 触发语 11 12 当用户提出以下类型请求时启用本流程: 13 14 - “我要实现 xxx 功能” 15 - “请帮我完成 xxx 的代码与测试” 16 - “请在 BFE 中增加/修改 xxx” 17 18 ## 执行原则 19 20 1. **分阶段暂停确认**:本流程将研发拆分为多个 Phase。每个 Phase 执行完毕后,必须暂停并等待用户确认“可以继续”后,再进入下一个 Phase。不要在未获得用户确认的情况下自动推进到下一阶段。 21 2. **Git 提交前确认**:在任何 `git commit`、`git push` 或其他会改变 Git 仓库状态的操作之前,必须先向用户说明变更内容并取得明确同意。禁止自动执行 Git 提交或推送。 22 3. **Git push 默认目标为 origin**:如果获得用户授权执行 `git push`,默认推送到 `origin` 远程仓库,而不是 `upstream`。除非用户明确指定其他 remote,否则不使用 `upstream`。 23 24 ## 研发阶段 25 26 ### Phase 0. 需求澄清与范围界定 27 28 1. 让用户明确: 29 - 功能目标(一句话描述) 30 - 验收标准(必须通过的测试/行为) 31 - 影响范围(是否改配置协议、是否改 Redis/状态、是否影响既有请求路径) 32 2. 判断是否为“非平凡改动”(多文件、有架构选择、用户偏好影响实现): 33 - 是 → 调用 `EnterPlanMode`,先出设计文档/plan 再执行。 34 - 否 → 直接进入 Phase 1。 35 36 完成本阶段后暂停,等待用户确认后再进入下一阶段。 37 38 ### Phase 1. 修改 modifications 文档 39 40 BFE 侧的改动必须在 `bfe/docs/zh_cn/modifications/` 留下修改说明,便于后续维护与审计。 41 42 1. 在 `bfe/docs/zh_cn/modifications/` 下新建日期化目录,例如: 43 ``` 44 bfe/docs/zh_cn/modifications/2026-08-26-ai-key-session-affinity/ 45 ``` 46 2. 在该目录下创建 `design-changes.md`,包含: 47 - 背景与目标 48 - 主要改动点(数据结构、模块行为、新增字段) 49 - 配置影响 50 - 兼容性说明 51 3. 如已有同主题目录,则更新其中的文档,不要重复创建。 52 53 完成本阶段后暂停,等待用户确认后再进入下一阶段。 54 55 ### Phase 2. 更新 configuration 文档 56 57 如果改动涉及配置文件(`cluster_conf.data`、`mod_*.conf`、`bfe.conf` 等),必须同步更新中英文配置文档: 58 59 1. 中文:`bfe/docs/zh_cn/configuration/` 60 2. 英文:`bfe/docs/en_us/configuration/` 61 62 更新原则: 63 64 - 新增字段要说明类型、默认值、是否必填、示例。 65 - 修改字段要说明前后行为差异。 66 - 两个语言目录尽量保持内容一致。 67 68 完成本阶段后暂停,等待用户确认后再进入下一阶段。 69 70 ### Phase 3. 更新 sys_design 文档 71 72 如果改动涉及系统设计、协议交互或状态存储,需要更新 `bfe/docs/zh_cn/sys_design/`: 73 74 1. 查找现有相关文档(例如 `multi_api_key.md`)。 75 2. 在文档中新增/修改对应章节,说明: 76 - 方案选型 77 - 数据流 78 - 状态存储(如 Redis key 格式、TTL) 79 - 边界情况与优化 80 3. 如需新增独立文档,直接创建 `.md` 文件,并在相关文档中建立链接。 81 82 完成本阶段后暂停,等待用户确认后再进入下一阶段。 83 84 ### Phase 4. 代码实现 85 86 1. 阅读相关源码,确认: 87 - 配置结构体(`bfe_config/bfe_cluster_conf/cluster_conf/`) 88 - 模块加载与处理逻辑(`bfe_modules/mod_*`) 89 - 反向代理与 Key 选择逻辑(`bfe_server/reverseproxy.go` 及相关测试) 90 2. 做最小改动,优先匹配现有代码风格: 91 - 不引入未使用的依赖。 92 - 不修改与本次需求无关的逻辑。 93 3. 关键实现完成后,先跑模块级单元测试: 94 ```bash 95 cd bfe 96 go test ./bfe_server/... ./bfe_modules/<相关模块>/... 97 ``` 98 99 完成本阶段后暂停,等待用户确认后再进入下一阶段。 100 101 ### Phase 5. 编写集成测试设计文档 102 103 BFE 的集成测试设计文档位于 `bfe/tests/integration/测试设计文档/`。在写测试代码之前,先补充对应场景的设计文档,便于后续维护与评审。 104 105 1. 在 `bfe/tests/integration/测试设计文档/` 下新建 scenario 目录,命名规范: 106 ``` 107 scenario-SC<序号>-<简短中文描述> 108 ``` 109 2. 编写 `场景说明.md`,包含: 110 - 场景背景与目的 111 - 运行模式 112 - 涉及的 BFE 配置文件 113 - 测试 Cluster 与关键配置(AIConf、KeyPolicy、路由表等) 114 - 测试例列表 115 - 每个测试例的详细说明(目的、前置条件、请求构造、执行步骤、预期结果、清理) 116 - 公共基础设施 117 - 与其他场景的依赖关系 118 3. 为每个测试例编写独立的 `TC-<序号>-<测试例名称>.md`,结构与现有 TC 文档保持一致。 119 4. 更新 `bfe/tests/integration/测试设计文档/测试场景总体说明.md`: 120 - 在“场景清单”中新增一行; 121 - 在“场景与测试例对应关系”中新增该 scenario 的 TC 列表。 122 123 完成本阶段后暂停,等待用户确认后再进入下一阶段。 124 125 ### Phase 6. 编写集成测试代码 126 127 BFE 的集成测试代码位于 `bfe/tests/integration/implementation/`。 128 129 1. 选择最接近的现有 scenario 作为模板(例如需要 Redis 的可参考 `scenario-SC07-ai-rate-limit-redis-key`)。 130 2. 新建 scenario 目录,命名规范: 131 ``` 132 scenario-SC<序号>-<简短英文描述> 133 ``` 134 3. 复制模板后,修改 `testdata/` 中的: 135 - `server_data_conf/host_rule.data`:host 136 - `server_data_conf/route_rule.data`:cluster 137 - `cluster_conf/gslb.data`:cluster 名称 138 - `mod_ai_route/ai_route.data`:apikey owner / route binding 139 - `mod_ai_token_auth/mod_ai_token_auth.conf`、`mod_ai_rate_limit/mod_ai_rate_limit.conf` 等 140 4. 编写 `_test.go`,覆盖: 141 - 正常路径 142 - 功能开关开启/关闭对比 143 - 边界场景(单 Key、多 ClientKeyId、BFE 重启后状态保持、错误码/降级) 144 5. 运行集成测试: 145 ```bash 146 cd bfe 147 go test ./tests/integration/implementation/scenario-SC<xx>-<描述>/... -v 148 ``` 149 150 完成本阶段后暂停,等待用户确认后再进入下一阶段。 151 152 ### Phase 7. 回归验证 153 154 1. 运行本次新增 scenario 的测试。 155 2. 运行与被改动模块相关的既有 scenario: 156 - 多 API-Key 轮换:`scenario-SC02-multi-api-key` 157 - Redis 限流:`scenario-SC07-ai-rate-limit-redis-key` 158 3. 运行相关单元测试: 159 ```bash 160 go test ./bfe_server/... ./bfe_modules/mod_ai_route/... ./bfe_modules/mod_ai_token_auth/... 161 ``` 162 4. 如有失败,优先修复;修复后再次回归,直到全部通过。 163 164 完成本阶段后暂停,等待用户确认后再进入下一阶段。 165 166 ### Phase 8. 收尾与总结 167 168 1. 检查是否有注释/文档描述的是旧行为,及时同步更新。 169 2. 向用户汇报: 170 - 改动了哪些文件 171 - 新增/修改了哪些测试 172 - 验证结果 173 - 仍存在的风险或待决策点(如有) 174 175 3. **Git 提交前必须人工确认**:如果用户要求或流程需要执行 `git commit`、`git push` 等 Git 操作,必须先向用户清晰说明本次提交内容(包含文件清单与主要变更摘要),并取得明确同意后再执行。禁止在未获授权的情况下自动提交或推送。获得授权后,`git push` 默认推送到 `origin`,不要推送到 `upstream`,除非用户明确指定。 176 177 ## 常见陷阱 178 179 - **cluster 名称不一致**:`route_rule.data`、`gslb.data`、ai_route 中的 cluster 名称必须一致,否则 BFE 启动会报 `no backend conf`。 180 - **ApikeyRouteTableBindings 遗漏**:新增 client apiKey 时,必须在 `mod_ai_route/ai_route.data` 的 `ApikeyRouteTableBindings` 中为其绑定路由表。 181 - **Redis 绑定 key 格式**:确认代码中实际使用的 key 格式(如 `bfe:ai:key_affinity:<cluster>:<client_key_id>`)。 182 - **单 Key 优化**:如果实现了“单 Key 不走 Redis”,需要同时避免读和写,否则集成测试里 `Exists` 会误判。 183 - **BFE 端口冲突**:集成测试里 `processEnv.StartBFE` 会自动分配端口,不要手动写死。 184 185 ## 推荐命令速查 186 187 ```bash 188 # 模块单元测试 189 cd bfe 190 go test ./bfe_server/... ./bfe_modules/mod_ai_route/... ./bfe_modules/mod_ai_token_auth/... 191 192 # 单个集成测试场景(详细日志) 193 go test ./tests/integration/implementation/scenario-SC<xx>-<描述>/... -v 194 195 # 相关场景回归 196 go test ./tests/integration/implementation/scenario-SC02-multi-api-key/... 197 go test ./tests/integration/implementation/scenario-SC07-ai-rate-limit-redis-key/... 198 ```
bfenetworks/bfe/tree/main/skills/bfe-rd-workflow commit b0e8524212
Frequently asked questions How do I install the Bfe Rd Workflow skill? Run npx skillmds@latest add bfenetworks/bfe-rd-workflow in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Bfe Rd Workflow skill do? 引导用户在 bfe 代码库中完成一次完整的功能研发流程,包括需求对齐、文档修改、代码实现、集成测试与回归验证。 It is listed under Productivity on SkillMD.
Is Bfe Rd Workflow safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Bfe Rd Workflow? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Bfe Rd Workflow free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Bfe Rd Workflow? bfenetworks (@bfenetworks) published this skill. Their other Agent Skills are listed on their SkillMD profile.