Skip to content

feat: 完成 M13 后端接入与镜像同步 - #3

Closed
qiyinxi wants to merge 34 commits into
AUTO-MAS-Project:mainfrom
qiyinxi:integ/t13-20260901
Closed

feat: 完成 M13 后端接入与镜像同步#3
qiyinxi wants to merge 34 commits into
AUTO-MAS-Project:mainfrom
qiyinxi:integ/t13-20260901

Conversation

@qiyinxi

@qiyinxi qiyinxi commented Sep 2, 2026

Copy link
Copy Markdown
Contributor
  • 受管后端按 app root 工作,补齐可控的优雅关闭与 Job 脱离。
  • 依赖同步支持包索引镜像按序轮换,并向受管后端注入 Runtime 基础设施及镜像源。
  • 完成 T13.1–T13.5 的契约、组件、端到端测试和状态文档回写。

claude and others added 30 commits September 1, 2026 21:17
登记决策 D12(AUTO-MAS 侧配合改造基线由 dev_v2 改为 dev 3c422093),
D4 标注为已由 D12 取代并保留原文追溯;第 5.1 节按接入契约 P-1~P-8 重写,
新增 MaaFW 专项 TODO-PY-9~13。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
新增 doc/契约补充-v1-增补1.md:后端工作目录、受监督标记对端口的优先级、
Job Object 逃逸、关闭预算参数化、主项目依赖的锁内 URL 改写轮换、
MaaFW 运行池的基础设施共享与镜像源下发;并修订 C2 第 1 条与 C4 第 1 条。
协议版本保持 v1。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
按增补 1 的 C6~C11 在目录模型、后端启动、项目依赖同步、镜像与网络策略、
CLI 设计、插件环境职责边界、健康检查与关闭契约、Lite/Full 边界和数据分类
九处补入增补段落,并补全 dev 基线下后端生成目录的分类。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
新增里程碑 M13(T13.1~T13.6)对应增补 1 的 C6~C11,补里程碑总览与执行顺序;
AGENTS.md 同步权威文档表、决策区间与状态表。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
显式 --mirror package-index=<key> 不再返回 INVALID_ARGUMENT,改为排在尝试顺序最前、
与自动轮换走同一条锁改写路径;改写用的 simple/packages 前缀改为目录显式声明。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
按增补 1 C6:uv RunOptions 新增 WorkingDir(为空回退 ProjectDir),
managed 的后端子进程 cwd 固定为 app-root、入口改传绝对路径
<app-root>/repo/main.py,避免用户数据落在会被 workspace sync 整体替换
的 repo/ 里。development 的 cwd 与裸入口保持不变,一次性 uv 命令
一个都不传新字段,行为字节不变。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
KindPackageIndex 源新增 simple/packages 两个显式前缀,不由 baseURL 推导——
官方源的 artifact 在 files.pythonhosted.org,与索引不同 host。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
单遍 strings.Replacer 只替换 https://pypi.org/simplehttps://files.pythonhosted.org/packages/ 两个精确前缀,hash 与 size 逐字保留。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
按增补 1 C8:Job 的 LimitFlags 追加 JOB_OBJECT_LIMIT_BREAKAWAY_OK,
使 AUTO-MAS 用 CREATE_BREAKAWAY_FROM_JOB 拉起的模拟器与 PC 游戏不随
后端退出。刻意不用 SILENT_BREAKAWAY_OK——那会让 worker 与 Agent 也
默认脱离。KILL_ON_JOB_CLOSE 与未请求脱离的进程归属不变。
DependencySyncDir 把临时项目目录钉在 build 缓存下,新增 DeleteDependencySync
让删除走 filesystem 受控原语而不是裸 RemoveAll。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
按增补 1 C9:正整数秒、合法范围 1~120、默认 5,越界或非整数映射
INVALID_ARGUMENT(退出码 2)。选项收 string 自行解析,让非整数与越界
共用同一条 result 失败语义——pflag 的 int 解析失败只走 stderr 诊断。
backend.Request 增加 ShutdownTimeout,优先级高于 Dependencies 注入值,
两者都缺省时仍是编译期的 5 秒,既有行为不变。就绪侧预算不参数化。
每个镜像源在受管临时项目目录里用改写后的锁执行 --frozen;plan 末位的官方源
改用 repo 原锁与 --locked,即 C10 的回退。--mirror-only 因此天然不回退。
临时目录在成功、失败与取消三条路径上都经 filesystem 受控删除收口。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
按 C10 的 2026-09-01 修订删除三处 INVALID_ARGUMENT 拒绝(uv validateRequest、
cli rejectPackageIndexOverride 及 bootstrap/repair 调用)。不存在的 key 仍由
mirror.BuildPlan 拒绝,语义不变。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
result.details 增加 sourceKind/source/attemptCount/lockRewritten;每次镜像尝试
发一条 dependencies.sync progress 供展示。bootstrap 与 repair 同样报告尝试。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
规则新增 argumentsContain 与 lockContains 两个条件,调用记录新增 projectDir
与 lockIndexPrefixes,动作新增 readyFile/releaseFile 用于精确注入取消。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
真机联调发现后端 0.4s 内自行退出(exit 0、无残留)却仍收到
BACKEND_FORCE_TERMINATED,并进入 result.details.warnings。

根因在 windowsJob.snapshot:它先查 Job 的 pid 列表、再查 Toolhelp32
进程表,两次查询不是原子的,刚退出的根进程会出现在前者而不在后者,
于是整个快照报 "process entry is missing";cleanupProcess 把该错误
当成「有残留后代」直接判 forced。探针在本机 20/20 复现,是必然误报。

snapshot 现在把「成员在两次查询之间退出」视为正常过渡态跳过(pid 无效
导致的 OpenProcess 失败同理),其余错误仍上报;cleanupProcess 在
Exited 之后再排除根进程自身,只有真正的存活后代才判 forced。
真有残留后代时仍强制回收并发出警告,由对照组 E2E 锁定。
七条收场:换源、回退原锁、全失败、离线不改写、mirror-only 不回退、
显式首选排最前、取消收口。每条都断言临时目录不残留且 repo 文件字节不变。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
该分支没有任何调用方,且正是 C10 明令禁止的做法——传 --default-index 会让
uv 判定锁需要更新并破坏 --locked 不变量。留着它是陷阱,不是备用方案。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @qiyinxi, your pull request is larger than the review limit of 150,000 diff characters

@qiyinxi

qiyinxi commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

#4 取代:同一条集成分支的更新版本,补齐 T13.7~T13.11 与 M9 联调收口(首版验收记录已落盘)。

@qiyinxi qiyinxi closed this Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants