Skip to main content

Agent 主干登录联调流程

本流程用于 Project2 最新主干的 Unity Editor 真实前后端登录联调,沿用已完成的首次验收。适用范围仅为启动、实际点击登录和进入大厅;不代表玩法回归、APK、性能或发布验收。用户明确授权的功能覆盖、缺陷交接与复测见功能测试闭环;既有每日登录计划不因该流程自动扩大范围。

入口与职责​

  • 日常入口:北京时间每日 02:00 的既有 GitLab autoai/autodev-trial schedule 20,按此前明确授权创建 Linear Project2 测试 Issue,再由既有 project2-linear Symphony 调度 agent。这项长期创建和执行授权继续有效,计划保持启用。
  • 临时测试及普通聊天请求默认由当前聊天 agent 直接处理,不自动创建 Linear Issue、子 Issue 或后续任务,不隐式交给 Symphony。只有用户明确授权相应项目/范围/批次的任务创建时才创建;设置可执行、分配执行者或移交调度还须分别包含在授权中。
  • 当前 project2_session_* 工具要求真实、已授权的 Issue 绑定;没有绑定时,当前聊天 agent 处理必要工具能力或报告具体工具限制,不能自动创建任务、移交 Symphony、伪造 Issue ID,或宣称已存在未实现的无 Issue 会话模式。
  • 对已有获准执行的活跃 Issue,先读取现有会话和清理状态;仍活跃时继续该会话,不重复启动。每次实际启动新会话,包括同一 Issue 重试或修复后复测,都读取当前 repo registry 指定主干的最新源码,不沿用旧轮次版本。实际运行 SHA 由 Runner 自动记录,不作为版本冻结或后续启动条件。In Review 停止执行,复测须先按已授权任务流程恢复到可执行状态;任务标识和工作区使用正式工具传入的值,不伪造运行身份。
  • Linear 保存任务、结果与人类验收;Symphony runtime API 判断调度是否仍在运行;GitLab 原生 job/pipeline 与 artifacts 保存执行和清理结果。
  • 外部 CI Runner 独占测试工作区,准备依赖、构建和运行后端、启动 Unity、执行实际界面输入并清理。agent 读取截图与日志、决定操作、判断玩家可见结果。
  • agent 通过正式 project2_session_* 工具操作 Runner 会话,不在本地运行验证、不直接启动测试进程、不改游戏代码绕过登录。
  • 可执行 agent 指令由 autoai/autodev-trial 的 symphony/profiles/project2-linear/WORKFLOW.md 维护;本文是 Project2 的可读流程入口,不另存一套可编辑调度状态。

开始前确认​

项目必须满足的条件
Mac开机、已登录、屏幕唤醒且解锁,有可交互的图形桌面;测试期间没有另一任务争用该 Unity 工作区或 GUI
执行器当前发布组件具备 Accessibility 与屏幕录制权限;已有授权按实际运行的组件身份核对,不能只看旧组件已勾选
上轮清理原生 Runner 结果明确确认所属 Unity、UI 进程、后端与租约已清理;未知或失败时先阻塞,不覆盖现场启动新一轮
QA 基线复用专属 QA 数据和已完成首次关卡的既有账号;执行服务/Runner 读取受保护凭据和依赖绑定,agent 只通过正式工具取得获准账号,不读取私有 binding 或 secrets,也不复制到 Issue 或本文
工作区/Users/wjai/AutoDev/runtime/project2-agent-workspace 固定目录与现有缓存可复用,Runner 完成容量与独占条件检查

正常每轮不需要人类重新安装组件、重新授权、准备账号或点击 Unity。更换组件导致权限失效、替换账号或重置 QA 数据时,应记录具体缺失前提并停止本轮。不要临时关闭系统保护、跳过权限判断、例行使用 GM 或改数据“制造通过”。

一轮执行步骤​

  1. 读取已授权任务与最新主干。 每次实际启动新会话,从当前 repo registry 解析后端 master、前端 develop、策划 master 的最新源码,Runner 自动记录实际运行的三个完整 SHA。配置来源以 registry 为准;同一 Issue 重试也重新读取最新主干,不冻结版本。临时测试先按上述入口处理真实工具绑定及明确授权,不能因为要测试最新主干而自动创建或移交任务。
  2. 交给 Runner 准备环境。 在固定目录同步最新主干源码,复用 Unity Library、UPM/Bee、Go 等缓存;使用执行器管理的短临时路径,避免 Bee Unix socket 路径过长。不要删除缓存、另建临时 Unity 工程或强制清理其他人的 checkout。源码同步、环境 overlay 与恢复均由既有执行器负责。
  3. 启动专属联调后端。 Gate、Role、Server 原生运行于 macOS,QA Gate 为 127.0.0.1:9000;数据库等依赖位于隔离的 OrbStack Linux 环境,因此不能把整个环境描述为完全原生。保留人工 dev_ai 的 192.168.8.91:23107 环境与数据。
  4. 观察 Unity 再操作。 确认正确工作区、Launch 场景与 Editor Simulate 模式,进入 Play;按当前截图处理正常欢迎提示或登录界面,不复用上轮坐标。观察不依赖窗口已获得输入焦点;输入仍需通过当前窗口归属、命中位置和焦点检查。被遮挡或身份不符时重新观察,不强行投递。
  5. 实际点击登录。 对登录界面的“开始游戏”执行实际点击;操作工具返回成功仅说明动作已提交,下一次截图和前后端响应才说明游戏发生变化。
  6. 确认真实链路与大厅。 结合实际 Login、JoinServer 请求与响应确认接入本轮后端,并观察玩家可见大厅。大厅正常引导或攻略弹窗可按当前画面关闭,再观察大厅。仅 TCP 已连接、仅收到回包、日志宣称进大厅或点击命令成功均不足以通过。
  7. 结束会话并等待清理。 提交本轮判断与简短说明,读取 Runner 终态和清理结果。确认进程/租约释放、临时配置恢复、工作区与缓存保留后,再完成报告。断开 agent 连接或看到终态字样,不能替代清理确认。

会话期间的纪律​

  • 当前会话 contact lease 为 180 秒。主动等待期间至少每 30 秒调用一次正式 status,重新判断运行状态;不要连续长时间思考或等待其他工作而放任租约过期。
  • 需要修改执行器、重建权限组件或长时间分析时,先正式结束会话并确认清理,再维护环境;不要用无人值守续租掩盖遗弃会话。
  • 鼠标动作必须使用现有受保护 UI 路径;不要恢复曾无效的 PID 鼠标投递,也不要移除窗口归属检查。输入超时或没有画面变化时重新观察,不连续盲点。
  • 同一任务不堆积重复运行。失败后先读现有会话、原生 job 与清理结果,确定原因及重试条件;不能从 Issue 状态、分支存在或本地文件推断进程活着。
  • 登录后强制进入首次战斗时,先核对账号和数据基线,不能仅凭画面断言前置缺失。确认账号未准备或数据被重置才记环境阻塞,由独立环境维护恢复基线;若已确认准备好的账号异常重入新手流程,保留现场,按可能的产品回归反馈。不在正式测试中调用 GM。

结果与后续处理​

结果判定与行动
通过实际点击、真实响应、可见大厅均成立,且清理已确认;交人类验收,不扩展为全功能通过
产品失败环境前提成立,实际游戏报错、请求失败或玩家流程不符合要求;保留复现步骤与最少证据,指明 owning repo,按任务流程反馈,不自行修改游戏
环境阻塞GUI/权限/工作区/磁盘/依赖/账号前置缺失,未能完整执行;写清缺什么、由谁处理,不能当产品失败或通过
执行或清理失败UI 启动、contact lease 或清理生命周期异常;保留原始失败及所属调用身份,交执行器维护,不改写历史结果。清理不明确时禁止再开一轮

最小报告​

已有授权 Linear Issue 时在该 Issue 留下报告;当前聊天直接处理的请求在当前对话交付,不为存放报告自动创建任务。报告包括:三仓实际运行 SHA、外部 pipeline/job 链接、实际步骤与结论、登录/大厅少量截图或日志链接、清理结果、未覆盖范围和下一步。账号仅写脱敏标识;不写密码、token 或私有连接串。不新增证据数据库、重复状态台账或每功能专属 CI。

测试源码、构建、运行及 GUI 均由外部 CI Runner 执行。本流程不授权添加测试文件、断言、fixtures、Mock 或游戏内测试钩子。单次首次成功不证明后续夜间长期稳定;后续关注缓存复用耗时、点击可靠性与异常清理。