devfox_
← 产品CASE STUDY — 02

GrowthGym:
给补贴策略造一杆秤。

市面上的 growth agent 在让 LLM 编策略故事;GrowthGym 让策略上秤——自带真值的仿真环境、真算法工具层、四角色 Agent 流水线,和一条任何人都能复现的排行榜。

4.1×
IP 相对贪心提升
11 项
单元测试
23.4%
regret(含估计误差)
3×50k 用户
仿真规模
github.com/Ming-H/growth-gym ↗
01

为什么做这个

我做了九年增长算法——补贴、因果推断、计算广告。这个领域有个长期痛点:策略方法论没有开源参考实现。 论文里的 uplift 模型和整数规划落到业务里长什么样,网上找不到一个能跑的完整答案。

AI 火起来之后,痛点换了形态:大量「AI 增长 agent」项目让 LLM 编一份听起来漂亮的策略报告——没有真值、没有约束、没有后果,策略不上秤。 我想证明另一条路:LLM 负责编排,真算法负责求解,环境负责说真话。

02

三层架构

Gym 层——合成用户总体:5 个人群分段 × 饱和响应曲线(边际效益递减)× 观测噪声。pilot 实验返回带噪声的采样结果,策略必须扛过统计噪声;计分用期望值,结果精确可复现。

Tool 层——LLM 编排真算法而非替代真算法:T-learner uplift 建模(HistGradientBoosting 双模型)、PuLP + HiGHS 整数规划、统计功效计算、按 ACI 标准写的工具注册中心(入参错误返回自修复信息而非栈回溯)。

Agent 层——Strategist → Analyst → Optimizer → Evaluator 状态机。固定阶段的 workflow + 一条评审回环(Evaluator 打回最多一次):任务可拆就用 workflow,别为 autonomy 付不可控的代价。默认 heuristic 模式零 API key 可跑,LLM 模式把每个角色的决策换成模型调用,图结构不变。

03

排行榜说了什么

公平规则:所有非 oracle 策略只看 pilot 实验数据,从不见真值。3 个种子 × 50,000 用户 × 5 分段,预算 ¥180k——紧张到连「人人 ¥5」都发不起。

strategyincrGMV(¥)ROIbudget%regret%
random24,6981.0014%91.5
uniform0-0%100.0
greedy(pilot)53,7850.4665%81.3
ip(pilot)220,5921.2697%23.4
agent(full)220,5921.2697%23.4
oracle(true)287,9521.6597%0.0

三个读数:① IP 对贪心 4.1 倍——预算紧张 + 响应饱和时,逐段最优的贪心组合远劣于全局最优,这正是要上整数规划的理由;② agent 与 IP 同分——heuristic 模式下 Agent 就是「实验→估计→优化」的忠实编排;③ 23.4% regret 全部来自估计误差——oracle 与 IP 的唯一区别是真值 vs pilot 估计,改进空间摆在台面上,这正是增长团队每天面对的真实约束。

04

被排行榜抓住的 bug

开发期 IP 组一度低于贪心组。排查发现两层问题:① PuLP 的 prob += (expr, "name") 元组语法会把目标函数静默变成约束,求解器没有目标就返回任意可行解;② 修正后,macOS/arm64 上自带的 CBC 二进制在正确的模型上仍返回次优解并报告 Optimal。

最终解法:HiGHS(进程内)为主、CBC 兜底,并留下玩具用例的单测锁定正确性。这个故事的真正主角是「评估内建」——「IP 必须赢 greedy」这道防线真实抓住过这个 bug。没有它,这个 bug 会安静地活在仓库里。

05

什么值得偷

· 把「评估」做成仓库的一等公民:改任何代码,一条命令验证核心结论仍然成立。
· 公平比较规则显式写进排行榜:信息不对称的美化在这里是作弊。
· LLM 的位置想清楚再上:可分解的固定阶段用 workflow,评审回环给独立怀疑者,模型每代都在变,架构要能活过任何一版实现。