增加不可变源码检出、两阶段 finalize/activate、Runtime 同源对象读取与 iframe 安全边界,并用 fail-closed CI 门固定契约。Git 仅提交平台实现、契约、迁移和 SoT,不包含具体游戏源码、素材、bundle 或验收证据。
99 lines
7.1 KiB
YAML
99 lines
7.1 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
|
||
|
||
# ── 游戏引擎无关源归档:独立最小权限身份(不复用 game_artifact_minio)──
|
||
# 只允许 game-sources/tenants/* 的 Get/Put/List 与分片恢复;无 Delete/建桶/策略管理权。
|
||
# source CLI 只读取本分区,缺失即拒绝联网,避免通过环境变量回退到制品 writer。
|
||
game_source_minio:
|
||
endpoint: "100.64.0.8:9000"
|
||
access_key: "game-source-writer"
|
||
secret_key: "f059ab4593ba7a679a7dbc2ac22305106fabfe2917f98ffacb4a6d67ef0ab0df"
|
||
source_bucket: "game-sources"
|
||
secure: false # 当前 Tailscale 内网;公网/生产必须切 TLS
|
||
|
||
# ── 游戏内容受信任控制面:Agent 只经 HMAC prepare/finalize/activate 写 Project/Runtime ──
|
||
# endpoint 指向 mini-desktop 上 game-cloud 的 admin-api;独立密钥只签原始 JSON body,不复用用户 Token。
|
||
# 客户端禁止跨 origin 重定向并对连接/读取统一使用 15 秒硬超时。
|
||
game_content_control:
|
||
endpoint: "http://100.64.0.7:48090/admin-api/aigc/game-content"
|
||
secret: "acfe0d5af3da62470f0cf2af4820f1e3fedbe76c81dd905ca847cf2480bf97b9"
|
||
timeout_s: 15
|
||
|
||
# ── 游戏内容 staging 业务库:Agent checkout/commit 的 committed 权威 ──
|
||
# 仅供 mini-desktop 上的隔离链路验收;127.0.0.1 是远端宿主自身,不能从开发机误连。
|
||
# CLI 必须显式传 --mysql-section game_content_staging_mysql,默认分区缺失时继续 fail-closed。
|
||
game_content_staging_mysql:
|
||
host: "127.0.0.1"
|
||
port: 13306
|
||
user: "root"
|
||
password: "yg1qq6-9RBur-tiil6DKxHtQ"
|
||
database: "ruoyi-vue-pro"
|