games-development-ai/docs/内网凭据与端点.md
zizi 9945e2aa9a docs(tier2): 部署档补 B1 控制面真驱配方 + 凭据/chat 体口径 + setsid 起服务铁律
团队共享(创始人「记录部署位置/端点」铁律):
- B1 control_plane 跑一款到门绿落库的 detached 命令 + game_id=session_id 评门口径;
- 凭据注册体 {data:{...}} / chat input.content 须内容块列表(smoke 实证定稿);
- 起常驻服务必 setsid 脱离 ssh 会话(nohup 会挂通道致启动被 timeout 打断)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 08:00:39 +00:00

7.7 KiB
Raw Blame History

内网凭据与端点authoritative · 内网阶段密钥/端点单一事实源)

创始人铁律2026-06-18内网阶段,所有决策 + 密钥都进项目文档,不靠环境变量。 内网Tailscale地址/密钥/token 允许入仓CLAUDE.md 已授权:"内网,地址和密码可入仓")。需要 key 一律查本档——别再反复找创始人要。 本档 = 内网密钥/端点单一事实源。e2e / 生成产线 / 部署 / 量测 需 key 的地方都读这里。


new-api 网关(生成主线 LLM 网关)

  • NEWAPI_KEY(调网关的 tokensk-84GAintLi0YPG92nGh3fxdIYn6sB7NuOGw0FN491qu1h8NXT
  • NEWAPI_BASE_URLhttp://100.64.0.8:3000mini-infra
    • ⚠️ baseUrl 坑JavaSpring AI侧用 host 根、不带 /v1http://100.64.0.8:3000,经 stripV1Suffix;Pythonopenaibase_url 要带 /v1。见 .agents/skills/saa-graph-orchestration.md §3
  • 协议端点(同一 baseUrl、统一 NEWAPI_KEY、协议由调用方选)
    • OpenAI 兼容:POST {baseUrl}/v1/chat/completions
    • Anthropic 原生:POST {baseUrl}/v1/messagesthinking 分离MiniMax-M3「用对它」走这条
    • 接入铁律2026-06-22 纠正旧口径):统一出口 = new-api 网关baseUrl + NEWAPI_KEY),统一计费 / 密钥 / 审计;协议与 SDK 不锁——OpenAI 兼容 / Anthropic 原生 / 厂商 SDK 均可,只要 baseUrl 落 new-api、key 用 NEWAPI_KEY作废「唯一 OpenAI 兼容出口 / 绝不直连厂商 SDK」旧表述new-api 只是统一端点,不锁协议)。
  • 用途SaaFullGraphE2eTest-Dsaa.e2e=1/ 生成产线 / gameDefinition 路 cutover ≥60% 量测003-U1 第一步)都用它。
  • 上游 channel keysnew-api 配的各 provider key,非调网关 tokengame-cloud/huijing-server/src/main/resources/application.yamlchannels.*.api-key(行 ~207-290

机器Tailscale 内网)

机器 ssh 别名 Tailscale IP 角色
6c6g本机 100.64.0.9 常驻大脑(文档/计划/评审);禁 chromeexit 144
mini-desktop mini-desktop 100.64.0.7 权威构建 / e2e 门x86 同构);staging repo /root/game-staging/repo
mini-infra mini-infra 100.64.0.8 基建new-api:3000 / PostgreSQL / Redis / Gitea / Docker
lili-mac lili-mac 100.64.0.10 Mac 开发执行线(非常驻,会休眠)

Git 远程

  • Aliyun Giteassh://git@101.200.34.71:2222clone/fetch/push 默认走它)

基建数据面mini-infra 100.64.0.8 · Docker · 2026-06-24 从容器 env 抠出落档)

tier2 P4 服务化/落库要用:Agent Service 的 MessageBus/session 走 Redis;第二装载落库 manifest 进 MySQL、源文件全文进 MinIO(S3 兼容 OSS)。

服务 端点(Tailscale) 凭据 用途
Redis 100.64.0.8:6379 requirepass = 9ea28f5d28d68b09bfd7ccfc31216a52 tier2 Agent Service MessageBus / session 状态(create_app)
MySQL 100.64.0.8:3306 root / ZRH3jwYLOrntBcTAw29MW9BP tier2 落库源工程版本表(manifest);game-cloud 业务库
MinIO(S3 兼容 OSS) 100.64.0.8:9000(控制台 9001) ragflow / 6c4b77b2f055c8a66e00e3c38ef3d818c166951d478cc7cc tier2 落库源文件全文(key=tier2-src/<game_id>/<version_id>/<相对路径>)
PostgreSQL 100.64.0.8:5433(外)→5432(内) (按需补;new-api/ragflow 用)

Redis 需 AUTH(NOAUTH 已实证);MinIO root 即 ragflow(与 ragflow 共用实例,tier2 另开 bucket 如 tier2-src 隔离)。这些是内网 Tailscale 凭据、按铁律入仓。


tier2 P4 服务化部署拓扑2026-06-24 首次部署成功落档 · 团队共享)

内部开发阶段 · 内网环境;为开发方便,端点 + 凭据明文记录(铁律授权)。下面是「服务跑在哪、怎么起、连什么」。

Agent Serviceagentscope 2.0.2 create_app)—— 跑在 mini-desktop

  • 端点:http://100.64.0.7:8200(Tailscale;本机 127.0.0.1:8200)。/docs/openapi.json 返 200。
  • 起服务:ssh mini-desktopcd /root/tier2-run/tier2/gen-worker && NEWAPI_KEY=<见 new-api 段> NO_PROXY=100.64.0.8 /root/.venvs/agentscope-tier2/bin/python -m service.app(无 CLI serve 命令,模块自调 uvicorn;默认 0.0.0.0:8200,TIER2_SERVICE_PORT 可改)。
  • REST 路由:/credential /agent /sessions /chat /sessions/{id}/stream(SSE 收事件)/workspace/mcp /workspace/skill /model /schedule
  • 后端:Redis(mini-infra:6379)做 session 状态 storage(db0)+ MessageBus(db1)——见上「基建数据面」。
  • 代码:dev/2.0.0 tier2/gen-worker/service/{app,infra_config,bootstrap}.py;基建配置 tier2/config/infra.yaml(运行时读)。

第二装载落库 BackendStore(TIER2_STORE=backend 切换)

  • manifest → MySQL tier2 库 · 表 tier2_source_project_version(幂等键 (game_id, source_hash);表首次 save 自建,建库 SQL tier2/config/schema/tier2_source_project_version.sql)。
  • 源文件全文 → MinIO 桶 tier2-src · key tier2-src/<game_id>/<version_id>/<工程内相对路径>
  • 已验:save→fetch 往返、main.js 内容字节一致(2026-06-24)。

B1 控制面有界 resume(service/control_plane.py)—— 真驱服务跑一款到门绿落库

  • 它是服务消费方:驱动上面的 :8200 服务,每回合等 SSE 末态(REPLY_END)→ 独立跑 run_gates 机器判门 → 门绿落库 / 否则带 verdict 反馈续修,直到门绿/预算耗尽。等价 CLI run_studio 的外层有界 resume,补服务态此前缺的那道循环。
  • 跑一款(detached,日志落 cp-smoke.log):
    ssh mini-desktop
    cd /root/tier2-run/tier2/gen-worker
    NEWAPI_KEY=<见 new-api 段> NO_PROXY=100.64.0.8 \
      setsid /root/.venvs/agentscope-tier2/bin/python -m service.control_plane <game_id> \
        --base-url http://127.0.0.1:8200 --brief "<一句话富游戏题面>" --max-resumes 3 \
        >/root/tier2-run/cp-smoke.log 2>&1 </dev/null &
    
  • 评门 game_id = 框架分配的 session_id(九工具按它管工程目录 game-runtime/games/_tier2-gen/<session_id>);控制面不靠内存 session 判收敛,靠每回合独立 run_gates。
  • 凭据体口径(2026-06-24 smoke 实证定稿):POST /credential/{data:{type:"anthropic_credential",api_key,base_url}}(凭据载荷嵌 data、无 model);POST /chat/input.content 必须是内容块列表 [{type:"text",text:...}]、不能是裸字符串。模型名在 session chat_model_config.model

运行环境(mini-desktop · 权威运行机)

  • venv:/root/.venvs/agentscope-tier2(agentscope[full]==2.0.2 + redis/pymysql/minio/httpx/esbuild/ws/phaser)。
  • 部署 worktree:/root/tier2-run(detached @ dev/2.0.0;同步新代码 = git fetch origin dev/2.0.0 && git checkout origin/dev/2.0.0)。
  • 装依赖:/root/.venvs/agentscope-tier2/bin/pip install -r tier2/gen-worker/requirements.txt(含 pymysql/minio)+ redis httpx
  • 起服务铁律(踩坑):经 ssh 起常驻服务,必须 setsid … >log 2>&1 </dev/null & 完全脱离会话——nohup … & 会让 ssh 通道挂住、timeout ssh 到点把启动一并打断(实测 service.log 空、:8200 不起)。起完用单独一条只读 ssh 轮询 /openapi.json=200 确认就绪。
  • 纪律:真玩门(run_gates / chrome / esbuild)只在 mini-desktop;6c6g 禁 chrome、只做静态校验。

历史 demo 服务:feie-005 富游戏静态服务在 mini-desktop:4180(python -m http.server 4180 --directory /root/tier2-run),供创始人亲玩;非生产、可随时关。


其余基建密钥Gitea 等)按需补入本档,别散落 env var 或只留在对话。决策同理——拍板进对应 plan / 本档,不留口头。