冻结 GameArtifactManifest/GameSourceArchive 契约和 V34 pending/committed 状态记录,增加专用 writer 的全量回读物化校验,并让 Runtime API 在消费和发布前对账 committed、GamePackage checksum 与实际 engineBundle hash。隔离 staging 已验证真实消费拒绝未提交版本;源码桶权限仍保持 fail-closed,正式金标不切换。
71 lines
5.5 KiB
YAML
71 lines
5.5 KiB
YAML
# tier2/config/infra.yaml —— tier2 基建数据面端点 + 凭据(运行时读;内网入仓)
|
||
# ════════════════════════════════════════════════════════════════════════════
|
||
# 【这份解决什么问题】
|
||
# tier2 P4 服务化(Agent Service / create_app)与落库要连三套内网基建:Redis(session 状态 +
|
||
# MessageBus)、MySQL(源工程版本 manifest 表)、MinIO(源文件全文 S3 兼容 OSS)。这些端点 + 口令
|
||
# 按创始人铁律(2026-06-18:内网阶段所有决策 + 密钥进项目文档、内网 Tailscale 凭据允许入仓)
|
||
# 集中落在一份配置文件里、运行时读;代码从配置取,绝不把端点/口令硬编码进 .py。
|
||
#
|
||
# 【凭据出处】
|
||
# 值誊自 docs/内网凭据与端点.md「基建数据面(mini-infra 100.64.0.8)」段(2026-06-24 从容器 env 抠出
|
||
# 落档)。该档是 single source of truth;此处是给 tier2 运行时读的副本。若凭据轮换,先改那份档,
|
||
# 再同步本文件(横切一致性主人 = 创始人 + 6c6g 文档线负责对账)。
|
||
#
|
||
# 【运行时读 + 三级回落】(口径对齐 worker/genconfig.py)
|
||
# service/infra_config.py 的 get(section, key, default) 每次调用按以下顺序取值,任一级取到即用:
|
||
# ① env 单点覆盖:TIER2_INFRA__<SECTION>__<KEY>(全大写、双下划线分隔)——临时压一个值不必改文件
|
||
# (例:换 Redis 端口 export TIER2_INFRA__REDIS__PORT=6380)。
|
||
# ② 本 YAML 的 section.key。
|
||
# ③ 调用方传入的 default(连本文件都缺该 key 时的最后防线)。
|
||
# 读文件 / 解析 YAML / env 转型的任何异常都不抛、不中断(best-effort):读不到或脏 → 落调用方 default。
|
||
#
|
||
# 【安全口径】内网 Tailscale 段(100.64.0.x),口令明文入仓是创始人明确授权的内网阶段做法(见上)。
|
||
# 一旦 tier2 走出内网 / 上公网,口令必须迁出仓库改走密钥管理 —— 这条作为 followup 长期挂在 P4 收口单。
|
||
# ════════════════════════════════════════════════════════════════════════════
|
||
|
||
# ── Redis:Agent Service(create_app)的 session 状态持久化 + MessageBus 跨会话事件总线 ──
|
||
# AgentScope 2.0.2 的 RedisStorage(host/port/db/password) 与 RedisMessageBus(host/port/db/password)
|
||
# 都只有 Redis 实现(无 in-memory/SQLite 版本),生产必须配 Redis。源码核验:
|
||
# storage/_redis_storage.py:77 RedisStorage.__init__(host, port, db, password, ...)
|
||
# message_bus/_redis_message_bus.py:44 RedisMessageBus.__init__(host, port, db, password, ...)
|
||
# Redis 需 AUTH(NOAUTH 已实证),故必须带 password。storage 与 message_bus 故意解耦,可走不同 db
|
||
# 隔离键空间(本配置默认同实例:storage→db 0,message_bus→db 1;按需调)。
|
||
redis:
|
||
host: "100.64.0.8" # mini-infra Tailscale IP
|
||
port: 6379
|
||
password: "9ea28f5d28d68b09bfd7ccfc31216a52" # requirepass(NOAUTH 已实证,必带)
|
||
storage_db: 0 # RedisStorage 用的逻辑库(session/agent/team 记录)
|
||
message_bus_db: 1 # RedisMessageBus 用的逻辑库(事件日志/inbox/run-lock;与 storage 隔离)
|
||
|
||
# ── MySQL:tier2 落库源工程版本表(manifest)——P4 第二装载(U2)用 ──
|
||
# 现状:Agent Service(U1)本身不直接连 MySQL(它的 session 状态走 Redis);MySQL 是 U2 落库面用的
|
||
# (源工程版本 manifest + 寻址)。先在此登记端点/口令,U2 的 store 实现从这里读、不重复抠凭据。
|
||
mysql:
|
||
host: "100.64.0.8"
|
||
port: 3306
|
||
user: "root"
|
||
password: "ZRH3jwYLOrntBcTAw29MW9BP"
|
||
database: "tier2" # tier2 专用库(与 game-cloud 业务库隔离;U2 建表前先 CREATE DATABASE)
|
||
|
||
# ── MinIO(S3 兼容 OSS):tier2 落库源文件全文 —— P4 第二装载(U2)用 ──
|
||
# key 约定:tier2-src/<game_id>/<version_id>/<工程内相对路径>(见凭据档)。与 ragflow 共用实例,
|
||
# tier2 另开 bucket(tier2-src)隔离。现状同 MySQL:U1 不直接用,U2 落库面读它。
|
||
minio:
|
||
endpoint: "100.64.0.8:9000" # S3 API 端点(控制台在 9001)
|
||
access_key: "ragflow" # root 即 ragflow(与 ragflow 共用实例)
|
||
secret_key: "6c4b77b2f055c8a66e00e3c38ef3d818c166951d478cc7cc"
|
||
bucket: "tier2-src" # tier2 源文件全文桶(U2 落库前先 mb 建桶)
|
||
kb_bucket: "cheap-kb" # 便宜档知识件外置知识包桶(W-CFG-KB;与 tier2-src 隔离、另立)
|
||
secure: false # 内网 http(非 https)
|
||
|
||
# ── 游戏内容制品:专用最小权限写入身份(不复用上面的 MinIO root)──
|
||
# 只允许 Put/Get 和 List 两个桶的 tenants/ 前缀,并允许读取桶区域;无 ListAll/Delete/建桶/策略管理权。
|
||
# 上传器只读本分区,缺失即拒绝联网。凭据权威副本见 docs/内网凭据与端点.md。
|
||
game_artifact_minio:
|
||
endpoint: "100.64.0.8:9000"
|
||
access_key: "game-artifact-writer"
|
||
secret_key: "4aa0a3f0036aac13cded3942c056df2c270b99cb7962624b"
|
||
artifact_bucket: "game-artifacts"
|
||
evidence_bucket: "game-evidence"
|
||
secure: false # 当前 Tailscale 内网;公网/生产必须切 TLS
|