把
ZzzBackendContext(见 architecture.md)以 HTTP 暴露。它是 web 前端 + skill 的共同目标——任何能发 HTTP 的客户端(含 AI 经 Bash / curl)都能用;MCP 客户端另走 mcp.md。两个适配器并行、共享同一 backend。
按作用对象分前缀:/game/* 直接作用于游戏(窗口 / 画面 / 启动)、流程类(/app/*)、账号类(/instances/*)端点属路线图、/health 用于本机服务探测。
| 方法 | 端点 | 委托 | 返回 |
|---|---|---|---|
| GET | /health |
backend 进程探测 | {"ok": true, "server": "zzz_od", "ready": bool} |
| GET | /game/window |
backend.check_window() |
WindowStatus JSON |
| GET | /game/capture |
backend.capture() |
PNG 字节(image/png,不落盘) |
| GET | /game/analyze?save_image= |
backend.analyze() |
AnalyzeScreenResult JSON(save_image=true 实时模式多带 screenshot_path) |
| POST | /game/enter?block= |
backend.start_run('http', op_factory) |
block=true(默认):结果 JSON;block=false:已启动 JSON;并发拒绝返错误 JSON |
| GET | /game/applications |
backend.list_applications() |
当前实例可运行应用、独立应用列表和当前选中项 |
| POST | /game/run/one-dragon?block= |
backend.run_one_dragon('http') |
默认返回启动状态;block=true 等待一条龙结束 |
| POST | /game/run/standalone?app_id=&block= |
backend.run_standalone_app('http', app_id) |
app_id 为空时使用 GUI「应用运行」当前选中项 |
| GET | /game/status |
backend.query_status() |
RunStatusResult JSON |
| POST | /game/stop |
backend.stop() |
{"stopped": bool, ...} JSON |
| POST | /game/close |
backend.close_game() |
{"result": 文本} JSON;窗口未就绪返回 503 |
要点:
routes.py放基础 game handler 与总注册入口;service_routes.py放应用运行和/health这组服务端点。- 处理器调 backend 走
asyncio.to_thread;BackendNotReadyError统一返回 503 JSON。 /game/capture直接回传 PNG 字节(区别于 MCP 的落盘返路径,同一能力、不同序列化)。/game/analyze?save_image=true(实时模式)让 backend 顺手存盘 + 响应多带screenshot_path;默认false不落盘,离线模式忽略。/game/enter经RunSlot异步派发到共享运行槽;/game/run/one-dragon和/game/run/standalone经ApplicationRunSlot复用run_context.run_application。- 应用运行端点启动前会让 backend 刷新当前进程内的 YAML 配置缓存,尽量对齐 GUI 已保存设置。
/game/status和/game/stop是统一运行态入口,覆盖进游戏 operation 和应用运行两类后台任务。- GUI「开发工具 -> MCP 服务」页面用
/health探测本机 server 是否已经启动,用/game/status展示当前运行状态。 - skill 教 AI 经 Bash / curl 打这些端点(通用,任何 AI 工具可用)。
| HTTP | MCP | |
|---|---|---|
| 消费者 | web 前端、脚本、skill / Bash | MCP 客户端 |
| 调用方式 | REST | tool-call |
| 共享对象 | 同一个 ZzzBackendContext |
同一个 ZzzBackendContext |
运行态三件套对称暴露:/game/enter ↔ open_and_enter_game、/game/status ↔ get_run_status、/game/stop ↔ stop_run,两侧调同一 backend 方法(design-principles.md P11),跨适配器状态共享同一 RunSlot(HTTP 触发的运行 MCP 也能查到);应用运行端点对应 run_one_dragon / run_standalone_app / list_applications。
- 事件推送(WebSocket / SSE):订阅
subscribe_events,推日志 / 运行状态给 web 前端。 /app/*(跑一条龙流程)、/instances/*(账号切换)端点。
- architecture.md - backend 方法定义
- mcp.md - 并行的 MCP 适配器
- entry.md - 服务入口