U R Chinese?! / 你是中国人? · 同伴 Codex 执行规则 v1.2 · 2026-10-21 用途与执行约定 这是给同伴机器上的Codex逐阶段执行的runbook,不是全自动安装器。先读工作区根AGENTS.md与《游戏开发的核心灵感.md》顶部,再读本文件。工作区根包含01_创作工作区/、game/;game/是唯一Unity根,不能在game里再创建第二个项目。 只完成接入、同步与本机验收,不扩游戏系统。01_创作工作区/05_制作管理/会话索引.json仅是制作人本机会话索引,不向其中旧ID派发任务;同伴由本人当前会话协调。同伴接入不自行初始化/发布仓库,不在首次接入自动commit/push;制作人本次明确授权的首次建仓与源码导入另按第0B节执行。开发与接入agent默认GPT-6.1-sol/ultra,Git运维专职agent为GPT-6-luna/max;账号没有所需组合时说明可用性并等待选择,不静默改用其他组合。 每阶段报告:实际命令/退出码、观察结果、下一步。下载/安装是本任务授权的一部分;登录、账号授权、EULA/条款、许可证资格与激活由本人完成,暂停相关步骤,完成后继续。不要代填凭据/复制别人的登录态,不改全局安全、执行策略、SSH主机校验或Codex权限。 0. 确认输入与目录(先读,未齐的部分不臆造) setup.example.json是共享模板;repo_url/base_branch已填制作人确认的私有仓库与初始基线,workspace仍为null,由各人在本机选择。复制为本机local/setup.json后填实际值;local/已由根ignore排除。实际远端与首传结果见status.txt。不得把本机路径、token、密码提交回模板。 必需输入:无嵌入凭据的准确repo URL、已确认base branch、同伴选择的绝对workspace路径;expected_upstream先为null,首次核实后在本机配置填当前分支预期完整上游ref(如refs/remotes/origin/由本人确认的分支),不能由同SHA推断身份;安装Unity前还需主机OS/CPU、可用空间与职责模块。未有repo地址可以检查软件与准备环境,不能git init、猜GitHub仓库或声称完成同步。 从ZIP/拷贝得到非空非Git目录时保留原目录;另选新建/空目录clone。不要在原资料目录clone .或清空目录。clone前Codex可在父目录/接入资料目录工作;clone后把Codex工作位置切到新工作区根,重新明确读取根AGENTS和核心。无Git根时Codex只查cwd的AGENTS,不能只从game或onboarding目录开始并假定已加载根规则。[S3] 下文、、、等是待替换值,不能原样执行,也不能把JSON内容交给eval。路径均作为独立、正确引用的参数;分支先git check-ref-format --branch验证。 0A. 同步范围(2026-10-21用户确认;首次交接与日常同步共用) 原则:共享可重建项目的完整源文件;公共开发工具由各自在本机安装或复用。不是只同步模型图片,也不是复制整台电脑或把工作区原样打包。 应随项目同步 - game/Assets/内的代码、场景、Prefab、模型、纹理、材质、动画、声音、剧情/关卡数据及全部对应.meta;移动/改名时连同.meta保留GUID。美术/音频可编辑源文件按约定放在工作区内,一并交接,不只交导出的游戏内文件。 - game/ProjectSettings/、Packages/manifest.json、Packages/packages-lock.json;项目自己维护的嵌入式包/本地包源码必须一并交付,引用从工作区推导,不留仅作者电脑可用的绝对路径。 - 自研Tools脚本、Tests源码与固定测试数据,01_创作工作区/的设计/任务/交付文档及必要素材、根AGENTS.md、共享接入规则与无秘密的配置模板。保留.gitignore及仓库采用的.gitattributes。 留在各自电脑,不进源码同步 - Unity Editor、Hub、Codex、Git、SDK、IDE等公共工具的安装目录、安装包与下载缓存;只共享版本要求、模块要求、官方安装入口和我们自己写的辅助脚本。已有本机工具保留,不为整理而搬移/删除。 - Library/(含PackageCache)、Temp/、Obj/、Logs/、UserSettings/、编译/测试中间产物、生成的工程文件、node_modules等可重建依赖;公共Registry包按清单与锁文件恢复,不能把Packages/整体忽略。 - 个人登录态、token/密钥、.env、含本机绝对路径的个人配置/编辑器布局、制作人的.codex/config.toml、onboarding/local/配置和报告、开发/玩家存档。源码里的必要脱敏测试样例与刻意归档的共享QA证据另行甄别,不因“测试/QA”字样一律排除。历史说明、共享QA记录中的旧路径可保留为当时环境证据,不作为同伴执行参数;游戏源码与包依赖须能从本机工作区解析。Pitch旧导出脚本中的作者运行时/字体路径属于待本机重配的制作工具要求,不是游戏依赖,不能照抄安装或据此复制缓存。 - 普通本地Builds输出。正式测试包/发行包可按另行确认的交付渠道与版本分发,不混入源码提交;未确认前不自动上传或发布。 第三方依赖与大资产 - 已导入游戏且交付必需的第三方资源/插件,不等于公共工具安装包。可按团队许可共享的文件纳入约定范围;需各自获取的资源记录版本和获取步骤,不能仅凭“非自研”就漏掉运行依赖,也不转发个人购买凭据。 - 大模型、贴图、音频及可编辑源文件按仓库已约定的Git LFS规则管理;接入时需取得实际文件,pointer不算完整资产。新增LFS策略、迁移历史或付费容量另行明确,本节不自动执行。 - game/Tools/同时可能有自研脚本和本机Unity Hub.app;保留前者、排除后者。不要用“Tools全部不传”“Packages全部不传”之类整目录规则。 交接/提交前检查 - 本轮是规则交付;没有仓库来源就不初始化或发布。已有授权的提交任务中,逐项核对待提交清单与实际文件用途,不默认git add .;确认无工具安装包、缓存、凭据、本机配置,必需源文件和.meta未被误忽略。 - .gitignore只影响未跟踪文件,不能移除已跟踪内容。若发现已跟踪的缓存/安装包/个人配置,记录并在单独明确的清理任务处理,不顺手删文件或重写历史。 - 每项开发工作使用约定任务分支,先明确文件负责人;同一场景/Prefab与不可合并二进制避免同时改动。通过约定审阅后整合,不把自动同步理解为自动提交/推送/合并主分支。 - 拉取后由各自Unity按依赖清单恢复包并重新导入生成缓存;仍须按第5节验证,依赖下载/许可/LFS未完成就如实记缺项,不宣称“所有资产齐全”。 0B. 私有仓库与 Git 运维交接(2026-10-21用户确认) 仓库名称:Baihuzi-Air/UareChinese;本机工作区继续名为UareChinese,不为建仓另行改名。创建/首次上传的实际结果见status.txt;名称确认不能代替远端成功验证。初始基线采用main,后续在约定任务分支开发、审阅后整合。 访问策略:仓库保持private。当前获准人员仅所有者Baihuzi-Air,暂无其他协作者或待发邀请。后续由用户本人提供准确GitHub用户名及所需权限,再核实账号并新增仓库授权;不凭朋友姓名、文档提及或其他agent的转述邀请,不授予账号级权限、不自动改公开。邀请未接受须如实标为待接受。各人使用自己的GitHub账号与认证,禁止共享token/登录态。 专职角色:所有pull、merge、push统一由同一个GPT-6-luna / max agent执行;fetch、Git LFS拉取、PR合并及等价API远端写入也交给该角色,避免其他agent绕开交接。主agent负责协调、访问名单、文件范围与审阅,开发agent准备源文件;它们可以只读检查Git,不并发执行Git状态变更。该角色本次亦负责首次建仓/初始化/提交/推送。角色不是团队账号,不在共享文档写本机会话ID;新会话/换电脑时按同名职责创建或恢复一个Luna/max角色,保留用户本人的账号权限边界。指定模型不可用则报告并等待选择,不能让主agent或其他模型静默顶替。 每次交给Git角色的输入:已确认repo URL、当前/目标分支、操作目的、变更负责人、精确文件清单与审阅结果、用户对本次提交/推送/合并的授权。授权已存在时不重复询问;“分工给Git角色”本身不等于授权以后任意发布或合并。首次导入是本次用户已授权的具体任务,不推广为日常自动向main提交。 执行前按第0A节逐项检查:源码与.meta齐全,Packages/Tools不整目录忽略;排除temp/cache、安装包、构建输出、个人配置、会话索引和存档。使用审阅后的清单暂存,检查实际暂存差异与文件大小,不执行无差别git add .。已跟踪的误入文件需先报告,不能靠新增ignore假装移除。 拉取/合并前保存并关闭本工程Editor,检查根目录、工作区改动、未完成操作、远端和上下游。只在干净且可快进时按第6节更新;分叉/冲突保留现场,汇报具体文件与影响,不自行reset/clean/force、丢弃修改或改写历史。首次上传读取已保存到磁盘的源文件;若文件在暂存期间变化,重新核对,不擅自关闭Editor丢弃未保存工作。 每次交付:实际命令与退出码、提交SHA、目标分支/远端、变更文件与排除项、远端核验结果;涉及PR时记录链接和审阅/合并状态。权限变化另核实仓库visibility、协作者与待接受邀请。 1. 软件与主机预检 doctor.py只读:不联网、不fetch、不安装、不打开Editor,不运行Hub/Unity/Codex,也不修改Git配置。默认stdout JSON,exit0=已知检查通过,1=有阻断/待人工核对,2=参数或配置错误。doctor不等于功能验收,磁盘阈值null不等于空间足够。 从工作区根执行(Python3.9+;Windows也可用已存在的py -3): python3 01_创作工作区/04_开发协作/01_伙伴接入/doctor.py --workspace "" --config 01_创作工作区/04_开发协作/01_伙伴接入/local/setup.json 可在local/保存脱敏报告;报告包含本机路径,不提交。若Python缺失,用本节原生命令等效检查,无需为了doctor先装整套开发工具。 macOS原生只读等效: sw_vers uname -m sysctl -n hw.optional.arm64 sysctl -n sysctl.proc_translated command -v git command -v codex df -h "" "" xcode-select -p sysctl某键在不同Mac上不存在可记录,不当安装失败。Apple Silicon在Rosetta终端可能报x86_64;结合hw.optional.arm64/translated辨别真实主机,优先原生ARM64。 Windows PowerShell原生只读等效: [System.Runtime.InteropServices.RuntimeInformation]::OSDescription [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture Get-Command git,codex,unity -ErrorAction SilentlyContinue Get-Volume Get-Item '' -ErrorAction SilentlyContinue Windows本轮用原生Codex/PowerShell与Windows Editor。若实际运行在WSL/Linux,先说明主机/路径边界,回Windows环境执行此路线;不能把Linux检测当Windows已就绪。 空间必须覆盖工作区/Git对象/实际LFS资产、Unity导入生成Library、Editor+所选模块、下载缓存与解压临时峰值。工作区和Editor/系统缓存可能在不同卷,要分别检查。根据Hub/官方元数据的本次版本与模块估算并留余量,再将本机阈值填local配置;这里不写一个普适固定GB数或把剩余空间多于安装包压缩体积当足够。 2. 下载/复用Codex与Git 已安装可用版本先复用,不重复安装。Codex当前官方桌面入口为https://learn.chatgpt.com/docs/app(旧Codex app地址会跳转)。macOS从此页选择官方适用架构下载;当前页面明确提供Apple Silicon入口,不能将ARM安装包给Intel机器。安装、本人登录后切Codex,打开工作区根。[S1] Windows可打开官方Store入口,或在支持winget的PowerShell执行: winget install --id 9PLM9XGG6VKS -s msstore 本人登录,保留现有安全设置。winget/Store不可用时使用官方页面路线,不添加不明镜像、不默认管理员运行。[S2] 桌面架构不适用或明确选择CLI时,从官方CLI页的当前平台安装方式执行;macOS官方独立安装入口为: curl -fsSL https://chatgpt.com/codex/install.sh | sh 本runbook不执行该命令;同伴实际安装前确认官方来源、OS/CPU与安装目标,再执行。CLI首次运行codex由本人登录。在新终端中验证command定位与codex --version;桌面已可用不代表CLI必须另装,也不要求先装Node/npm。[S4] Git存在时git --version;macOS若命令只触发Apple开发工具安装提示,说明Git尚未就绪,等待本人完成提示后重试。缺失时选择一个路线:已有Homebrew可brew install git,或xcode-select --install;不要只为Git默认安装整个Xcode或包管理器。Windows用官方Git for Windows对应CPU安装,或winget install --id Git.Git -e --source winget。重开终端确认实际git路径及版本。[S5,S6] Git LFS不是默认必装:检查仓库实际.gitattributes(含子目录和实际资产filter属性)。仅存在filter=lfs且资产确实需要时,查git lfs version;缺失再从官方安装,先只读确认core.hooksPath未指向共享/全局目录;repo内用git lfs install --local,不使用--force覆盖已有hook。若hooksPath指外部则停止自动hook变更,按官方--manual/--skip-repo说明审阅,不改共享文件。随后在已确认repo运行git lfs pull,验证实际资产已取回;不新增track规则、不migrate历史、不把文本pointer当模型/音频就绪。LFS容量/认证失败保留现场,不能继续宣称Unity验收成功。[S12] 3. 首次取得工作区 不要把软件安装路径当项目路径。与同伴确认精确路径,新建或确实为空(包含隐藏文件检查),且不位于另一个Git工作树内。若Codex/解压资料已令目标非空,另选新目录,不删除其内容。 先验证的host/owner/repository与制作人提供值。HTTPS/SSH两种写法只有本人确认同一来源后才可更新本机配置;不能自动set-url。URL不得含token/password,不在终端输出全量config、HTTP trace或凭据。 首次clone命令(macOS shell/PowerShell替换占位参数后均可执行): git check-ref-format --branch "" git clone --origin origin --branch "" -- "" "" 只在clone退出0后继续。私有repo登录/授权/SSH主机指纹核对由本人完成,不能关闭host checking或无限重试。慢速index-pack先看进程/目录增长,不把静默当失败,也不再启动第二次clone。 clone若因缺LFS/认证中断,先确认进程退出并保留残留;完整性不明时另选新空目录,解决依赖后重试。不能reset/clean覆盖残留目录来“继续”。 clone后、后续每次同步前,检查: git -C "" rev-parse --show-toplevel git -C "" status --short --branch git -C "" branch --show-current git -C "" rev-parse --verify HEAD git -C "" rev-parse --symbolic-full-name "@{upstream}" 仓库根必须精确等于选定workspace,不能只是父目录包含该路径。仅首次clone验收时确认当前分支是已确认base、其upstream为预期远端的同一分支。日常同步不套这条current==base断言;feature可以保持自己的已确认upstream。由doctor私下读取/脱敏比较remote URL;doctor隔离全局Git配置,实际fetch前还应在将执行fetch的正常环境中私下读取git remote get-url --all,核对生效后的fetch地址(含insteadOf重写)仍是确认来源,不打印凭据或全局配置;勿直接把remote -v或完整.git/config收集到共享报告。 检查game/ProjectSettings/ProjectVersion.txt两行必须是6000.6.6f1与6000.6.6f1 (d20c9ac777da),并存在Assets/Packages/ProjectSettings与Assets/Scenes/Greybox.unity。若版本变动,先核对制作人新决定,不让Hub自动升级工程。同步保留所有.meta,不生成新GUID替换已有文件。 运行doctor,缺repo/base/版本/LFS/路径问题逐项处理;tool或磁盘未知不能当全通过。系统软件与环境缓存可在正常安装目录;项目日志、测试结果、临时文件留game/Logs、game/Temp、Builds或onboarding/local。 4. Unity安装与项目打开 先读unity-install-notes.txt中对应OS的“复用/官方Hub/CLI”步骤;其中参数已按官方当前文档与本机--help核对。固定6000.6.6f1、revision d20c9ac777da,按真实OS/CPU选择;不能安装“最新推荐”覆盖精确版本。 优先复用已安装正确Editor并在Hub Locate;尚无Hub则从官方对应平台安装。Hub/CLI安装正确Editor,职责所需模块按主机与实际构建目标最小选择。一般源码协作/Play不默认装Windows IL2CPP、所有平台、完整IDE/文档包;确需构建时再核对平台工具链与空间。下载大小、解压和Editor安装进度分开报告,完成前不能称安装成功。 本人完成Unity登录、许可资格/服务及Editor条款与激活;遇到许可失败记录具体错误并等待本人,不代点同意、不购买。之后再核对实际Editor版本/路径与项目文件版本。Hub有Editor条目但目录缺失,或仅有安装包,不算安装完成。 Hub Projects→Add from disk,选择/game(不是外层工作区)。打开Assets/Scenes/Greybox.unity,等待UPM与首次导入、编译完成;不创建空项目替代,不打开第二个同工程Editor,不自动修复包版本/升级序列化格式。 现有open-unity.sh/test-unity.sh是macOS/POSIX工具;Windows不能直接执行。unity-mcp.py也依赖.sh,不是Windows通用入口。可选MCP由每人按实际路径重建,不复制现有.codex/config.toml,不为MCP改全局安全/网络策略;MCP不是接入前提。[S7–S11] 5. 同伴机器的验收(逐项实测,不借用原Mac结果) 先正常退出Play、保存场景并关闭本工程Editor,再做一次批模式场景检查;有未保存内容先等待本人确认保存,不能强杀或使用会无提示退出的close命令。仅运行当前repo的已审阅代码。 macOS shell:为本机准确Editor二进制,路径有空格必须引用。 mkdir -p "/game/Logs" "" -batchmode -nographics -quit -projectPath "/game" -executeMethod UareChinese.Editor.GreyboxMenu.BatchSmoke -logFile "/game/Logs/unity-smoke.log" 每次验收给-logFile选择一个新的run-id文件名(上述unity-smoke.log为路径示例),保留旧日志不覆盖;记录本次退出码0,并在本次新日志确认UARECHINESE_UNITY_SMOKE_PASS(当前实现24项,不硬编码未来数量)。命令没有成功标记、非0退出或超时都不能宣布通过;不以“打开成功”代替编译。 Windows PowerShell(变量由已确认路径赋值,不用本机Mac脚本): $SetupProject = Join-Path '' 'game' $SetupEditor = '' $SetupLogs = Join-Path $SetupProject 'Logs' New-Item -ItemType Directory -Force -Path $SetupLogs | Out-Null $SetupLog = Join-Path $SetupLogs ('onboarding-smoke-' + [Guid]::NewGuid().ToString('N') + '.log') $SetupArgs = @('-batchmode','-nographics','-quit','-projectPath',('"{0}"' -f $SetupProject),'-executeMethod','UareChinese.Editor.GreyboxMenu.BatchSmoke','-logFile',('"{0}"' -f $SetupLog)) $SetupProcess = Start-Process -FilePath $SetupEditor -ArgumentList $SetupArgs -Wait -PassThru if ($SetupProcess.ExitCode -ne 0) { throw 'Unity batch failed; inspect the project log' } if (-not (Select-String -LiteralPath $SetupLog -SimpleMatch 'UARECHINESE_UNITY_SMOKE_PASS' -Quiet)) { throw 'Unity smoke marker missing' } 随后通过Hub重新打开game,实际Play: - 中文标题、按钮、字段须清晰无方框/缺字;工程目前仅寻找系统中文字体,没有内置字体兜底。缺字先记录OS/所选字体与截图,确认本机可加载的合法字体后处理;不能因英文可见就通过。 - 第一人称眼位,开始环顾/WASD移动及基础碰撞;近距离对准本工位E进入,终端释放鼠标且不移动视角。规则值输入ordinarye不得触发E退出;复原值并应用。 - 实际点approve与ban、规则执行、暂停/恢复/重开,查看路径日志和固定组账本;未知保留待办,执行回执仍是未模拟。记录实际回合/分数,不能套旧Mac的固定值。 - Editor本轮存档应在game/Temp/Saves/greybox-session-v1.json;一轮保存→重开回合→读取,核对分数、时间、暂停、待办、组与日志不重复奖励。不要迁移/覆盖系统Application Support或其他用户存档。 完成后正常退出Play或将办公室回合暂停、Esc释放光标;报告明确当前状态。批模式不等于交互、中文与鼠标手感通过。同次Play内存读不等于跨Editor重启、现金绩效结算后恢复或Player存档通过;Windows只能该机实测后打勾。EditorBuildSettings场景列表当前为空,独立导出尚未就绪,不在本任务追加导出/Steam/完整平台工具链。 6. 再次同步(日常只跟随当前分支自身upstream) 先保存Unity场景/资产、退出Play,检查未保存内容后正常关闭本工程Editor;不要强杀。fetch不改工作树,但后续merge/switch会改Assets/Packages/ProjectSettings,统一在Editor关闭后更新。 重跑doctor,并重复第3节的精确根、来源、HEAD、当前branch和upstream只读命令;明确排除第3节仅首次clone的current==base断言。doctor提示当前分支不同于base可能是正常feature,不能据此自动切回base;以本人当前任务与该feature的upstream为准。若存在.gitmodules或gitlink,doctor的普通status忽略子模块内部,必须另外只读确认其工作树/hash;未确认就停止,不递归更新未知子模块。若staged/unstaged/untracked改动、未完成merge/rebase/cherry-pick/bisect、detached HEAD或upstream不明,停止更新。先记录git status、HEAD和变动文件清单;需要备份时放local/recovery,包含必要未跟踪文件/.meta/开发存档,外部用户资料不动。不自动stash、commit或改分支。 从当前分支实际配置得到以下三个值,不能写死origin/main: git -C "" for-each-ref --format="%(upstream) %(upstream:remotename) %(upstream:remoteref)" "refs/heads/" 输出对应、、;验证是本项目已确认远端的refs/heads/当前目标,REMOTE不能是本地点号或未知服务器,U是预期refs/remotes/命名空间。不猜不存在的upstream。 显式获取当前upstream;不用prune,不递归未知submodule,不隐含合并: git -C "" fetch --no-prune --no-tags --no-recurse-submodules "" ":" git -C "" rev-list --left-right --count "HEAD...@{upstream}" fetch失败立即停止,不使用上次残留tracking ref假装当前已最新。输出左/右:0 0无需更新;0 N可快进;N 0本地领先,保留且不自动push;N M分叉,停止让本人选择后续保留/合并方案。 仅0 N、当前branch/HEAD/upstream仍与fetch前记录一致且工作树仍干净时: git -C "" merge --ff-only --no-autostash "@{upstream}" git -C "" status --short --branch git -C "" rev-parse HEAD "@{upstream}" fast-forward失败不改用普通pull、merge commit、rebase、reset --hard、clean、force push或覆盖存档。记录更新前后SHA;按实际LFS/包变动补取资产,确认Unity版本后再打开game验收受影响路径。[S13–S18] 如明确要求更新base:先确认clean、base本地存在及该base的正确upstream,再git switch --no-guess "",按上述相同流程同步它。当前feature的日常同步不能把base或其他分支自动混入,也不能为了更新base悄悄离开用户当前feature。 7. 恢复与交付 认证/许可未就绪:说明具体待本人步骤,保持文件/Editor现场,等待后继续;不转不明下载镜像或借用别人账户。 空间不足/安装中断:检查实际进程与官方Hub下载状态,保留已下载内容让官方工具恢复;不取消别人的安装、不删共享缓存/VM/存档、不偷偷切版本或全装模块。官方工具无法恢复时提供具体可选路径,由本人决定必要删除;不重复开始同版本大下载。 Git来源/根/upstream不匹配或分叉:停止工作树更新,保留当前HEAD和文件;列出精确问题。只读调查可继续;没有同意的恢复方案不set-url/reset/clean/stash/rebase/force。 首次导入失败:保留项目日志,先核对精确Editor、许可、网络/Registry、包锁和完整资产。不要把删除整个Library当默认修复,不改manifest锁版本来掩盖错误。 最终仅在onboarding/local/记本机脱敏验收:OS/CPU、工具/Editor版本与架构、模块/空间、repo来源标识/当前branch/upstream/前后SHA、LFS与中文状态、编译/Play/存读结果、未验证项及当前Editor/光标状态。区分“规则已准备”“依赖安装成功”“工作区已同步”“此机可运行”四件事;不能合成一个泛化完成标记。不要提交或自动推送本机记录。 官方来源与核验日期见sources.txt;Unity细项见unity-install-notes.txt。本runbook未在同伴机器执行,安装/Windows/新repo同步仍需在目标机验证。