跳到主要内容

Programs

Program 是一个 Policy 目录的不可变、内容寻址快照。

目录结构

Program 目录必须包含 policy.py

my-policy/
├── policy.py
└── model.json

policy.py 必须定义 make_policy(context)。其他文件是可选的,Policy 可以导入 或读取它们。

创建 Program

from evopolicygym import Program

program = Program.from_directory("my-policy/")

print(program.digest)
print(program.files)

from_directory() 读取一个稳定快照。之后修改 my-policy/ 不会改变 program

属性
digestSHA-256 内容标识,包含固定入口和 Policy ABI 版本。
entrypointpolicy.py:make_policy
policy_abi快照要求的 Policy ABI 版本。
files按确定顺序排列的相对文件路径。
file_count快照中的文件数。
total_bytes文件未压缩总大小。

快照限制

默认上限为 1,000 个文件、总计 64 MiB、单个文件 16 MiB。可使用 ProgramLimits 修改:

from evopolicygym import Program
from evopolicygym.program import ProgramLimits

program = Program.from_directory(
"my-policy/",
limits=ProgramLimits(
max_files=100,
max_total_bytes=8 * 1024 * 1024,
max_file_bytes=2 * 1024 * 1024,
),
)

源码必须来自真实目录。符号链接会被拒绝,.git__pycache__ 目录会被忽略。

读取或写出快照

source = program.read_bytes("policy.py")
program.write_to("saved-policy")

write_to() 要求目标目录尚不存在。

下一步