跳转到主要内容

应用场景

场景是模拟运行的顶级配置。它定义:
  • name — 场景标识符
  • seed — 确定性 RNG 种子(相同种子 = 相同结果)
  • ticks — 模拟步骤数
  • tickSeconds — 每个刻度的模拟时间(例如,3600 = 1 小时)
  • pack — 设置世界状态的协议适配器
  • agents — 代理类型、计数和参数列表
  • assertions — 运行后验证检查
  • gossip — 渠道定义、预算和信任设置

蜱虫

一个勾号是一个模拟步骤。在每个刻度期间:
  1. 引擎按顺序调用 step(ctx)
  2. 每个代理返回零个、一个或最多三个操作
  3. 包根据协议状态执行每个操作
  4. 记录指标、八卦和工件
可以配置刻度排序: 基于优先级 (默认)、 随机或 自定义。排序策略影响结果——参见机制实验进行分析。

代理商

代理人是自主行动者。每个代理都会扩展 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 到速率限制发帖
策略通道对于仅限 LLM 的协调非常有用,不会淹没确定性代理。

决定论

相同的种子+相同的场景=相同的结果。所有随机性都流经种子 RNG。这使得:
  • 可重现的 CI — 断言一致通过或失败
  • 重播 — 根据更新的合约确定性地重新运行探索跟踪
  • 比较 — 比较两次运行与 forge-sim compare

探索/重播工作流程

  1. 探索 — 在探索模式下与 LLM 代理一起运行以发现行为
  2. 捕获 — replay_bundle.json 记录完整的决策跟踪
  3. 重播 — 针对更新的合约确定性地重新运行完全相同的跟踪
这使您可以通过法学硕士发现紧急攻击向量,然后在合同更改后对它们进行回归测试。