Pull Request已成功合入, 合并人@openharmony_ci
(感谢 he-guangyao 的贡献)start build


[兼容性平台] 已收到 start build,正在进行兼容性检测,预计 2-5 分钟,请稍候…


感谢提交 Pull Requests!如果您提交的PR已经开发完毕,请评论 "start build" 触发门禁,更多交互操作,请访问OpenHarmony社区支持命令清单。如果需要调整订阅PR、Issue的变更状态,请访问订阅链接。
Thanks for submitting the pull request. If your Pull Request has already been developed, you can leave a "start build" comment to trigger the gated system. For more commands, please visit OpenHarmony Command List. If you need to change the subscription of a Pull Request or Issue, please visit the link.


首次触发
门禁构建开始,包含静态检查、代码编译和测试【master_inner_build编译, arm64_virt编译, part_compile编译, dayu200测试, ohos-host_mini_tdd编译, dayu200_tdd编译, mac-sdk编译, ohos-sdk编译, dayu200编译】,预计在60分钟内完成,门禁结果会同步发送到注册邮箱。您可以通过如下链接跟踪门禁进展:http://dcp.openharmony.cn/workbench/cicd/detail/6a4cae1b64650f998b36187b/runlist


[兼容性平台] 兼容性检测完成
触发人:@he-guangyao
结论:上游模型异常
原因
我会按 cangjie-check-compat 的流程只分析你给出的这一个 PR,不扩展到其他 PR。先读取该 skill 的执行要求,再拉取 PR 信息和 diff。
content 和 uuid 两个字段。\n\n必须解析:\n\n- content: 用户真实请求和 PR 列表\n- uuid: 请求魔数,最终必须原样回填\n\n如果输入不是严格 JSON,但文本中能看出 uuid 和 PR,也要尽量提取;提取不到 uuid 时,最终 uuid 置为空字符串。\n如果请求外层包了 message、request、payload、result 等字段,仍要继续解析其中嵌套的 JSON/String,并把最内层分析请求里的 uuid 原样回填到最终结果。\n\n## 输出协议(最高优先级)\n\n最终回答必须只输出一个 JSON 对象,不得输出 Markdown、解释性文字、前缀、后缀或代码块。\n\n外部 /api/chat、脚本化调用或任何把用户消息包装成 {\"message\":\"{\\\"content\\\":...}\"} 的场景也适用同一规则:\n\n- 不要在最终回答中展示 sed、cat、grep、python 等命令执行块。\n- 不要把本 SKILL.md、PROMPT.md、参考文档或工具输出原文复制到最终回答。\n- 不要输出“我会...”“正在...”“执行命令”等过程说明。\n- 所有工具调用、检索过程和自检过程只作为内部分析;最终只保留机器可读 JSON。\n- 如果宿主接口把回答包在 result 字段里,result 的内容也必须是这个 JSON 对象的字符串,不得混入其它文本。\n\n字段固定为:\n\njson\n{\n \"isCompatible\": true,\n \"analysis_process\": \"...\",\n \"reason\": \"...\",\n \"uuid\": \"...\"\n}\n\n\n字段要求:\n\n- isCompatible: boolean。兼容为 true,不兼容为 false。\n- analysis_process: string。中英双语。多个 PR 时必须列出分析了哪些 PR。\n- reason: string。中英双语。不兼容时必须详细;兼容时保持简洁但要说明依据。\n- uuid: string。必须回填输入中的 uuid。\n- uuid 不是可选字段。只要输入中存在 uuid,最终 JSON 必须显式包含同值 uuid;缺少该字段即视为无效结果,必须重写后再返回。\n- analysis_process 和 reason 里不要出现任何 skill 名称、脚本名或工具编排名,例如 cangjie-check-compat、cangjie-api-compat-513、cangjie-sdk-compat、power-gitcode、validate_compat_result.py。最终结果只写技术事实、证据、影响和结论。\n- 最终结论必须面向用户可见影响,而不是面向内部扫描流程。优先写旧源码、旧二进制、旧 runtime/std、旧系统运行环境、旧构建/安装流程、旧文档指导或旧配置是否仍能直接工作;不要把“运行了哪些扫描、哪些扫描未命中、命中了哪些内部检查项”当作结论主体。\n- analysis_process 用事实性表述,不要写范围控制或编排策略话术。可以写“分析了 Cangjie/cangjie_compiler#1678”;不要写“仅分析了用户指定的 PR:...”“未加入其它 PR”。\n- 中英双语要自然合并,不要用“中文:”“English:”这类标签开头;可以先写中文句子,再用 / 或下一句补英文。\n- analysis_process 不要堆完整 commit hash 或多个 base..head 范围。除非结论依赖具体提交边界,否则只写“确认了各 PR 的提交范围和变更文件”即可;commit 细节留在内部分析。\n- 不要把内部扫描摘要原样写进最终 JSON,例如“固定 SDK 前置扫描未命中已收录契约面”。通常应直接省略内部扫描过程;若必须提及,只能作为背景,结论主体仍要落到用户可见影响,例如旧构建流程是否失效、旧二进制是否链接失败、旧系统运行环境是否无法消费新产物。\n- 最终 JSON 不得依赖 /api/chat 外层或后处理自动补齐 uuid;模型可见输出本身必须包含 uuid 字段。\n\n不要把 skill 内容放进返回结果。\n\n## 结果落盘\n\n兼容性检测结束后,必须在最终回答前把四字段结论落盘到 /root/wjw/compat/opt/logs。先构造最终 JSON,再调用:\n\nbash\npython3 /root/wjw/compat/opt/scripts/save_compat_result.py \\\n --request '<原始请求 JSON 或文本>' \\\n --result '<最终四字段 JSON>' \\\n --source cangjie-check-compat \\\n\n\n落盘脚本会自动写入 knowledge_query 字段,记录当次分析保存时的知识查询方案:SQLite 配置、是否强制 legacy、fallback 策略、SQLite DB 状态和推断后端。若本次分析明确全程强制旧查询方式,保存时补充:\n\nbash\n--knowledge-query-mode legacy\n\n\n若本次分析显式混用了 SQLite 和旧查询方式,保存时补充:\n\nbash\n--knowledge-query-mode mixed\n\n\n落盘记录必须保留四字段:isCompatible、analysis_process、reason、uuid。日志目录按北京时间日期创建,单条日志文件名以 uuid 为主键;同一 uuid 多次保存时不得去重或覆盖,应保留为 uuid.json、uuid.rev2.json、uuid.rev3.json 这类 revision 文件,便于复盘同一次请求内部是否稳定。落盘动作不得改变最终输出协议;最终回答仍只能是同一个四字段 JSON 对象。\n\n## 强制原则\n\n- 只分析用户给出的 PR,禁止自动加入其它 PR。\n- 当前 PR diff 是兼容性结论的一等边界。开始分析后必须先固化用户输入 PR 的真实 changed files;知识库、源码索引、历史案例、relaxed query 命中的内容只能作为上下文或反向影响面线索,不能直接证明“本 PR 修改了某文件/某规则”。若最终 isCompatible:false,reason 中支撑破坏点的核心源码路径、规则文件、API 声明或生成器逻辑必须至少有一个来自当前 PR / PR 组合的真实 changed files 或 diff hunk;若只引用了未被本 PR 修改的路径,只能写为背景风险或证据不足,不得作为不兼容主因。\n- 为减少上下文压缩和证据污染,进入深查前应优先生成请求级 evidence packet:\n python3 /root/wjw/compat/scripts/build_compat_evidence_packet.py --request '<原始请求 JSON 或文本>'。该脚本会把 diff_scope.json、evidence_candidates.jsonl、evidence_selected.jsonl、minimal_packet.md 落盘到 /root/wjw/compat/opt/runs/<uuid>/。后续模型上下文优先读取 minimal_packet.md 和必要 diff hunk,不要把大知识库原始命中整段塞入上下文。\n- evidence packet 还会生成 diff_events.jsonl,按 api_surface、build_or_packaging、tool_output、diagnostic_or_log、dependency、test_only、generic 初步分类 diff hunk 风险。深查时优先围绕这些事件补证据;lockfile、生成物、快照文件只作为 diff scope 和 dependency 事件保留,不应驱动宽泛上下文扩张。\n- 多 PR 输入时,evidence packet 同时生成 combo_head_consumers.jsonl:对知识库命中的旧调用方按本组 PR changed files 和 base 源码残留情况标记 adapted、residual、test_only、doc_only 或 unknown。adapted 表示调用方文件已由本组 PR 修改/删除并与变更契约词相关,只能作为同步适配证据;residual 表示组合 head 仍可能残留旧调用方;unknown 只能作为需人工复核的高风险候选。最终不兼容结论不得引用 adapted、test_only 或 doc_only 调用方作为残留破坏证据。\n- 对工具/生成器类 PR,必须区分“当前 PR 修改了生成规则”与“知识库中存在相关生成规则”。只有当生成规则文件、公开 CLI/参数/退出码、打包入口、文档化流程或实际产物基线在本 PR diff 中变化,且能说明旧输入到新输出的用户可见差异时,才能以工具输出契约破坏判不兼容。仅由检索命中历史规则名、测试用例名、旧 cookbook 输出或未改动源码文件,不得推断当前 PR 改变生成产物。\n- 对工具/生成器输出的失败路径变化,必须区分“旧成功路径回退”和“未承诺失败路径改善”。如果旧生成产物在 unsupported/非法/缺失目标场景下原本 module load、import、初始化或编译直接失败,PR 改为 lazy/proxy/fallback/延迟访问时报错,只要旧成功输入、旧命令、输出名称、导入路径、签名、产物格式和文档化流程不变,且没有发布文档、机器解析协议、具体 golden/baseline 文件或兼容性测试明确承诺旧失败时机/错误文本,就不得仅凭失败时机、异常位置或错误文案变化判不兼容。\n- 当统一知识库查询返回 sqlite_relaxed、legacy fallback、历史案例或宽松关键词结果时,必须对每条候选证据做 PR diff 归属核验:pr_diff_evidence 可证明本 PR 改动,repo_context / contract_index / historical_case / doc_context 只能辅助判断影响面。最终不兼容结论不得把 repo_context 或 historical_case 包装成当前 diff 证据。\n- 当请求显式包含 multiAgents: true 或 multiAgents: \"true\" 时,使用新的并行维度 v2 协议:先运行 scripts/multiagents_v2_runner.py prepare 生成 run_dir、plan.json、diff.handoff.json、dispatch_manifest.json 和每个维度的 prompt;主 agent 随后读取 dispatch_manifest.json,对每个 SPAWN_DIMENSION_SUBAGENT 条目一次性启动真实 subagent。Python 脚本只负责准备调度事实、校验和汇总,不伪造 subagent,也不恢复旧 multi_agent_orchestrator.py plan/spawn-candidates/judge-input/validate 语义。\n- multiAgents:true 的所有 required dimension subagent 必须属于同一个 dimension_wave_1,启动全部完成前不得等待任一 subagent;每个 subagent 只写自己的 <role>.handoff.json 和 subagents/<role>.log.json,主 agent 等全部完成后运行 scripts/multiagents_v2_runner.py aggregate 与 validate。\n- 使用 power-gitcode 访问 PR,不要用 curl 或直接 HTTP API。\n- 耗时优化必须服从准确性:先做快速分流,再按风险升阶核验;一旦命中公开契约变化,仍必须形成“旧契约 -> 新契约 -> 外部入口/调用方或用户可见影响 -> 文档同步状态”的最小证据闭环。\n- 兼容性分析不得检索、引用或复用历史分析结论。历史日志只用于人工复盘和质量改进,不得作为本次自动分析的证据、分流依据、缓存依据或结论依据;即使用户提到“上次检测结果”,也必须基于本次给定 PR 的当前元数据、diff、源码、文档和知识库证据重新判断。\n- 对每个 PR 先用文件清单和 diff 关键词做快速分流:\n - 纯测试、纯注释、纯格式、无发布文档影响的内部实现改动,走轻量检查。\n - 命中 .cj 声明、C/C++/NDK/FFI/NAPI/ANI、ArkUI 组件行为、构建/打包入口、CLI/配置、ROM/SDK 部署边界、用户文档或公开头文件时,再进入对应深查。\n - 不兼容结论只需保留足以证明结论的关键证据闭环,避免把同类入口全部展开成流水账;最终 reason 必须包含能被机器校验识别的具体源码/API 路径或符号,例如 compiler/src/...ts、interfaces/...ets、include/...h、CJ_MRT_*,不能只在 analysis_process 里列路径。\n- 对手写汇编、内联汇编、SIMD/NEON、memcpy/memmove/string/JSON/编码解码/哈希/原子状态更新等快路径替换,不能因为 API/ABI 形态未变、测试有新增或宏开关只在特定平台启用就轻量判兼容。必须把旧 C/C++ 实现与新快路径按“输入元素宽度、输出元素宽度、目标缓冲类型、指针步进、长度计数、边界条件、错误返回/异常、assert 前置条件”逐项对照,若合法旧输入在新快路径下可能得到不同结果、不同异常、不同断言或不同内存写入布局,应按用户可观察行为破坏处理。\n- 对 JSON/XML/文本解析、字符串构造、编码转换和转义处理的优化 PR,必须构造或推演最小合法旧输入覆盖:无转义短串、无转义长串、普通转义、Unicode 转义、ASCII 前缀后接非 ASCII Unicode 转义、\\u0000、边界长度正好等于/超过 SIMD 批量宽度、非法转义和不完整转义。只验证预扫描/长度计算阶段不够;还必须核对拷贝/解码阶段写


代码门禁通过
您可以通过如下链接查看门禁报告:http://dcp.openharmony.cn/workbench/cicd/detail/6a4cae1b64650f998b36187b/runlist
静态检查:
| # | check type | result | report |
|---|---|---|---|
| 1 | codeCheck | pass | >>> |
编译测试:
| # | Device | build result | test result | package |
|---|---|---|---|---|
| 1 | ohos-sdk | success | NA | >>> |
| 2 | dayu200 | success | success | >>> |
| 3 | dayu200_tdd | success | NA | >>> |
| 4 | part_compile | success(IGNORE) | NA | >>> |
| 5 | master_inner_build | success(IGNORE) | NA | >>> |
| 6 | mac-sdk | success | NA | >>> |
| 7 | ohos-host_mini_tdd | success | NA | >>> |
| 8 | arm64_virt | failed(IGNORE)(compile failed) | NA | >>> |


您好,Committer @yaozhupeng @yangfan9527 @chen-yuheng5 ,请分配检视人员检视该PR,可以通过命令"assign [@someone_id]"分配检视人员,也可以直接评论"assign"分配给自己进行检视。
Hello, Committer @yaozhupeng @yangfan9527 @chen-yuheng5 . Please assign someone to review the PR. You can assign a reviewer by using the command "assign [@someone_id]", or you can comment "assign" to review the PR by yourself.


代码有更新,重置PR验证状态


感谢提交 Pull Requests!如果您提交的PR已经开发完毕,请评论 "start build" 触发门禁,更多交互操作,请访问OpenHarmony社区支持命令清单。如果需要调整订阅PR、Issue的变更状态,请访问订阅链接。
Thanks for submitting the pull request. If your Pull Request has already been developed, you can leave a "start build" comment to trigger the gated system. For more commands, please visit OpenHarmony Command List. If you need to change the subscription of a Pull Request or Issue, please visit the link.


start build


本地或库上代码有更新,全量重新构建,重置所有关联PR的验证状态
门禁构建开始,包含静态检查、代码编译和测试【dayu200_tdd编译, ohos-sdk编译, mac-sdk编译, part_compile编译, master_inner_build编译, dayu200测试, x86_64_virt编译, dayu200编译, ohos-host_mini_tdd编译】,预计在60分钟内完成,门禁结果会同步发送到注册邮箱。您可以通过如下链接跟踪门禁进展:http://dcp.openharmony.cn/workbench/cicd/detail/6a572f8864650f998b38ee44/runlist


代码门禁未通过
您可以通过如下链接查看门禁报告:http://dcp.openharmony.cn/workbench/cicd/detail/6a572f8864650f998b38ee44/runlist
静态检查:
| # | check type | result | report |
|---|---|---|---|
| 1 | codeCheck | pass | >>> |
编译测试:
| # | Device | build result | test result | package |
|---|---|---|---|---|
| 1 | ohos-sdk | success | NA | >>> |
| 2 | dayu200 | success | success | >>> |
| 3 | dayu200_tdd | success | NA | >>> |
| 4 | part_compile | success(IGNORE) | NA | >>> |
| 5 | master_inner_build | failed(IGNORE)(代码同步失败) | NA | >>> |
| 6 | mac-sdk | failed(流水构建失败) | NA | >>> |
| 7 | ohos-host_mini_tdd | success | NA | >>> |
| 8 | x86_64_virt | failed(IGNORE)(compile failed) | NA | >>> |


restart build


上次构建已结束


部分构建失败,仅触发失败构建
门禁构建开始,包含代码编译【x86_64_virt编译, mac-sdk编译, master_inner_build编译】,预计在60分钟内完成,门禁结果会同步发送到注册邮箱。您可以通过如下链接跟踪门禁进展:http://dcp.openharmony.cn/workbench/cicd/detail/6a57404564650f998b3f2d35/runlist


代码门禁通过
您可以通过如下链接查看门禁报告:http://dcp.openharmony.cn/workbench/cicd/detail/6a57404564650f998b3f2d35/runlist
| # | Device | build result | package |
|---|---|---|---|
| 1 | master_inner_build | failed(IGNORE)(代码同步失败) | >>> |
| 2 | mac-sdk | success | >>> |
| 3 | x86_64_virt | (IGNORE) | >>> |


您好,Committer @yaozhupeng @yangfan9527 @chen-yuheng5 ,请分配检视人员检视该PR,可以通过命令"assign [@someone_id]"分配检视人员,也可以直接评论"assign"分配给自己进行检视。
Hello, Committer @yaozhupeng @yangfan9527 @chen-yuheng5 . Please assign someone to review the PR. You can assign a reviewer by using the command "assign [@someone_id]", or you can comment "assign" to review the PR by yourself.


AI告警处理 20260707