Agent Genesis
做什么
可类比在线 OJ,但提交物为多轮工具调用的 Agent。进程间通信用 gRPC¹,服务接口多用 protobuf² 描述。安全模型为双沙箱:裁判与选手分处隔离容器。下文分产品边界、沙箱、题目制品、Python/Go 工具栈。
产品目标:流水线化工具型 Agent 的训练与评测;出题方用 SDK 定义评测与制品,提交方在隔离环境跑 agent、隐藏用例判分。核心在长程工具调用与 judge–user 对拍,而非单次 stdin/stdout。
产品与数据边界
策略上分离「题型与 SDK 契约」(可向社区开放)与「决定性隐藏测试与判分逻辑」(保留在评测后端)。对用户可见的运行日志与 verdict 需脱敏,避免机密用例或内部路径经 stdout 泄漏,以在开放协作与评分公信力之间取得平衡。
沙箱与评测架构
双沙箱:每用例一对 judge/user 容器,经 gRPC 通信。全局限并发。依赖可烘焙进 Docker³ 镜像;镜像池用 LRU⁴ 降低冷启动。可选 gRPC 扩展包部署。
题目与 SDK 工作流
题目以插件化目录组织:元数据、用例生成、环境状态机、裁判入口、用户侧 API 适配、注册与同步脚本职责分离。制品可打包为 artifact 上传,并维护可见性清单(公开文件与受保护文件)。Evaluator 可插拔以适配不同任务类型。核心能力由 PyPI 包 agent-genesis(Apache-2.0)提供,与本地开发、远端注册与版本修订工作流对齐。
工具调用层 Python 与 Go
Python 侧异步工具调用,asyncio 限并发。Go 侧 openai-go 对接 OpenAI 兼容网关⁵,含 Batch、BatchRace、编排运行时等;多 tool 用 goroutine 并行。
扩展与运维向能力
预留 worker 轮询、任务回收、抢占式实例上长评测等扩展。置于反向代理后需配可信代理与限流,校验 X-Forwarded-For⁶ 等头以防伪造并保留真实客户端信息。
术语与注释
- gRPC:基于 HTTP/2 的 RPC 框架,常用 protobuf 定义服务,适合评测进程与选手进程之间结构化、低延迟调用。
- Protocol Buffers(protobuf):接口与消息的二进制序列化格式,配合 gRPC 生成各语言桩代码。
- Docker:容器运行时,把应用与依赖打包为镜像,实现进程与文件系统隔离,便于沙箱化判题。
- LRU:最近最少使用淘汰策略;镜像池用 LRU 复用模板镜像,减少冷启动。
- OpenAI 兼容 API:HTTP+JSON 形态与 /v1/chat/completions 等路径,便于同一客户端切换模型供应商。
- X-Forwarded-For:反向代理追加的客户端 IP 链;需在服务端配置可信代理范围以防头部伪造。