应用场景
场景是模拟运行的顶级配置。它定义:name— 场景标识符seed— 确定性 RNG 种子(相同种子 = 相同结果)ticks— 模拟步骤数tickSeconds— 每个刻度的模拟时间(例如,3600 = 1 小时)pack— 设置世界状态的协议适配器agents— 代理类型、计数和参数列表assertions— 运行后验证检查gossip— 渠道定义、预算和信任设置
蜱虫
一个勾号是一个模拟步骤。在每个刻度期间:- 引擎按顺序调用
step(ctx) - 每个代理返回零个、一个或最多三个操作
- 包根据协议状态执行每个操作
- 记录指标、八卦和工件
代理商
代理人是自主行动者。每个代理都会扩展BaseAgent 并实现 step():
代理上下文
每个刻度,代理都会收到TickContext ,其中包含:
代理状态
代理可以跨刻度保持状态:this.remember(key, value)— 存储一个值this.recall(key)— 检索存储的值this.setCooldown(name, ticks)— 对操作进行速率限制this.isOnCooldown(name)— 检查冷却状态
多操作支持
代理每次可以返回最多包含 3 个操作的数组。引擎在同一时间周期内按顺序执行每个操作:角色法学硕士代理人
PersonaLlmAgentBase 为 LLM 驱动的代理提供可重用的基础:
- 角色概况(身份、风格、目标、风险概况、工具偏好)
- 具有完整功能清单上下文的结构化提示程序集
- 两阶段 OODA 循环:计划然后行动,回退到单次解析
- 通过 Zod 进行架构验证的操作意图
包
包是协议适配器。他们通过实现Pack 接口将 AgentForge 与您的智能合约连接起来:
setup()— 部署合约,初始化状态executeAction(action)— 根据协议执行代理的操作getWorldState()— 返回当前协议状态以供代理观察getCapabilityManifest()— 描述可用的合约、函数和操作模板
ToyPack 提供了一个简单的价格模拟环境以供入门。
八卦
gossip 总线支持代理间通信:- 频道 — 带会员列表的全球广播或范围策略频道
- 自由格式消息 — 带有可选
credibilityPrior分数 (0-1) 的文本负载 - 预算 — 每个代理可配置
maxPostsPerTick和maxReadsPerTick - 冷却时间 — 每个频道
postCooldownTicks到速率限制发帖
决定论
相同的种子+相同的场景=相同的结果。所有随机性都流经种子 RNG。这使得:- 可重现的 CI — 断言一致通过或失败
- 重播 — 根据更新的合约确定性地重新运行探索跟踪
- 比较 — 比较两次运行与
forge-sim compare
探索/重播工作流程
- 探索 — 在探索模式下与 LLM 代理一起运行以发现行为
- 捕获 —
replay_bundle.json记录完整的决策跟踪 - 重播 — 针对更新的合约确定性地重新运行完全相同的跟踪