Files
embedded-app-pc-debug/references/cross-host-coordination.md
T

3.4 KiB
Raw Blame History

Linux 打包任务与 Windows 设备任务协作

仅在固件由 Linux 任务构建、由 Windows 任务下载并升级设备时读取本文件。

职责边界

  • Linux 任务负责工程定位、构建、产物验证、版本与哈希、构建日志和警告。
  • Windows 任务负责接收产物、本地完整性比较、广播发现、完整 SN/型号核对、串口监测、EPFP 升级和升级后验证。
  • 已由上游任务验证并完整交付的事实,下游不重复计算。发现字段缺失、矛盾、哈希不一致或用户要求复核时再回到上游。

建议交接流程

  1. Windows 任务通过可用的 Codex 任务工具联系或等待 Linux 任务;等待超时只表示尚未得到新状态,不要重复发送同一请求。
  2. Linux 任务完成后用短消息交付路径、大小、哈希、版本和结论;ROM、devInfo.json 与大日志使用 SCP 或共享文件传递。
  3. Windows 任务比较本地文件与交付清单,然后开始设备侧预检。校验一致时不再登录 Linux 重算哈希或重跑构建命令。
  4. 升级出现异常时,Windows 任务上传本次 skill 生成的串口日志快照,并把精确时间线与诊断问题发回 Linux 任务。
  5. Linux 任务回复源码/构建侧分析;Windows 任务负责将分析与设备现场证据合并成最终验证报告。

工具与降级原则

  • 优先使用任务列表、读取、消息和等待能力;不同主机或版本的 Codex 工具能力可能不同,先确认工具实际返回结果。
  • 不得把“文件页已打开/已排队”说成“消息已送达”,也不得在读取结果为空时编造对方结论。
  • 读取不到任务正文时,先核对任务 ID 和主机 ID,再查看最新任务状态。只有任务工具确实不能返回内容时,才在已授权主机上读取对应会话记录或请用户转交摘要。
  • 任务 ID、主机 ID、项目路径和远端临时目录都属于本次运行参数,不写成通用固定值。

用户给出 codex://threads/<UUID> 并要求直接向原会话发送时,优先使用会话消息能力。若本机执行 codex queue --thread <UUID> --message <内容> 返回 no rollout found,这只说明当前 app-server 的本地线程存储没有该 rollout,不代表 UUID 无效,也不能改为新建会话。

确认目标 rollout 实际驻留的已授权主机后,可以通过现有 SSH 配置在该主机执行同一条 codex queue:

codex queue --thread <UUID> --message <完整任务消息>

只在命令明确返回 Queued message <message-id> for thread <UUID> 后报告送达,并保留 message ID。打开线程页面、导航成功、命令退出但无确认、读取结果为空或中继已收到,都不能冒充原会话已收到消息。消息入队只证明投递成功,不证明对方已执行、构建完成或产物可用;后续状态仍需从原会话或产物证据确认。

直接投递消息应包含工程路径、已确认事实、要求的修改与验证、产物交付字段和禁止操作边界。不要把某次线程 UUID、SSH 主机、设备身份或工程路径写成固定值,也不要在参数中暴露密码、PSK 或 Token。

最小交接消息

项目:<绝对路径>
ROM:<绝对路径>
devInfo:<绝对路径>
大小:<bytes>
MD5:<md5>
SHA-256:<sha256>
目标版本:inner=<值>,outer=<值>
构建结论:<ROM成功/完整发布成功/仅ROM可用/失败>
警告:<无或摘要>