ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何保证805个技能从不静默失败?Unity-Skills的测试体系与静默降级审计实践

如何保证805个技能从不静默失败?Unity-Skills的测试体系与静默降级审计实践 【免费下载链接】Unity-SkillsAI automation skills specifically designed for Unity项目地址https://gitcode.com/gh_mirrors/un/Unity-Skills点击查看免费下载当 AI 自动化工具驱动真实工程时最可怕的不是报错而是表面一片绿色。Unity-Skills 是面向 Unity 编辑器的 AI 自动化技能引擎提供 805 个 REST 技能为了让这些技能从不静默失败项目内置了超过 1100 个测试用例与专门的静默降级审计。这篇文章带你走进仓库看看这张安全网是如何层层织成的。️ 什么是静默失败AI 自动化中最隐蔽的坑AI Agent 调用技能后通常只看status: success。如果技能成功了、却悄悄丢弃了过滤条件、跳过了某次写入、或在备份缺失时照常恢复——调用方永远发现不了。失败类型表现后果显式失败返回error与错误码立即可见、可重试静默失败返回success但没做、少做、多做了事污染场景难以回溯Unity-Skills 的开发者把返回 success当作头号嫌疑对象而不是免罪金牌。️ 测试体系全景从 98 个测试文件到 1131 个用例测试代码集中在 SkillsForUnity/Tests/ 目录下分为四层测试层位置规模职责核心编辑器测试Tests/Editor/Core/98 个文件、1046 个用例技能执行、读回校验、治理、文档一致性可选包实测定Tests/Editor/OptionalPackages/14 个文件、85 个用例DOTween、XR、Netcode、YooAsset 等真实包行为运行时恢复测试Tests/Runtime/—PlayMode 恢复路径测试探针资产Tests/Fixtures/—供断言使用的探测组件几个值得新手注意的设计每个用例都走真实入口。测试不是直接调函数而是经由SkillRouter.Execute按技能名发真实 JSON 请求完整覆盖路由、校验、执行链路。可选依赖不假装有。AGENTS.md 规定每个可选包模块在OptionalPackages/下有一个基于 OptionalPackageTestBase.cs 的实测套件并在 CI 中设定通过用例下限floor——包在就真测包不在就跳过但底线不许倒退。回归测试不许破坏工程本身。AGENTS.md 有一条硬规则测试失败时绝不能给工程装包、编译脚本或进入 Play 模式否则一次红测就会把开发工程弄脏。️ 静默降级审计把success当被告仓库里最有特色的是两轮专项审计SilentDegradationRound6Tests.cs 与 SilentDegradationAuditTests.cs。它们的注释开门见山下面每一次调用过去都报告成功或抛出未处理异常却丢弃、放宽或根本没执行调用方要求的事。每条用例固定做两件事断言① 请求必须被结构化拒绝errorCode: SEMANTIC_INVALID且明确指出是哪个参数②什么都没被写入。真实修复过的静默降级案例包括拼错的组件名被当成不过滤scene_spatial_query收到componentFilter: MeshRendrer时旧实现直接落回无过滤返回半径内全部物体现在会明确拒绝。保存失败被吞掉scene_save/scene_unload/scene_create曾丢弃SaveScene的返回值一律报成功现在不可写目录返回error且带未保存改动的场景必须保持加载绝不假装卸载成功。备份缺失照样恢复HybridCLR 文件集恢复在备份目录不存在时整个跳过并报 success不可读的文件甚至会被当成操作新增的直接删除。现在缺失即失败、文件保留示例用例。造了个空壳还报成功ui_create_image给不存在的精灵路径时旧实现照样创建 Canvas 空 Image 并报成功现在在创建任何对象之前就被拒绝示例用例。审计还覆盖边界条件负数图层索引的地形绘制用例、大小写敏感导致查不到就当没有的日志查询、无法哈希的文件必须出现在skipped报告里而不是被忽略用例。 读回校验别信返回值信场景另一族测试回答一个更根本的问题写入真的生效了吗DataWriteReadBackTests.cs组件与预制体写入后必须用编辑器当前真实持有值解析后的名字、世界坐标、保存路径、重读的值来回答而不是复述输入参数。SceneWriteReadBackTests.cs场景级写入同样读回验证包括拒绝重父嵌套预制体子对象这类边界。SetterEchoAndDryRunTests.cs 覆盖两种相反的撒谎方式写入的比声称的少alpha 被悄悄丢弃、枚举值掉出 switch或写入的比声称的多。它要求响应里带applied/skipped报告——比如给平行光设置range时该字段本就不存在没有一条skipped记录这个响应就与设置成功完全无法区分。这里有一条写得很漂亮的原则引自 SetterEchoAndDryRunTests.cs 的注释每次写入都对照活动对象验证绝不从响应里反推——响应本身正是被测物信它就会变成循环论证。 一致性守卫连文档里的数字都不许错805 这个数字不是写死的口号而是被测试盯死的契约SkillCountDocsTests.csREADME 徽章、分类表格、AGENTS.md、根 SKILL.md 中每一处引用的技能数、分类数、源文件数都与运行中的注册表比对。设计上有个小而精的金丝雀测试数字写错、句子被改写、表格行缺失三种错误都必须各自被报告——改写句子不能让它悄悄逃过检查。SkillMetadataGuardTests.csReadOnly、MutatesScene、TracksWorkflow、RiskLevel这些元数据不是文档而是运行时真正执行的闸门决定技能被不收回、能否撤销、要不要人工确认。该套件把违规数钉死在零谁提交的声明自相矛盾谁的提交就是红。OutputsReturnContractTests.cs抓幽灵键——曾有一个技能声明返回list实际返回objectsbatch 里的$ref会据此在真实执行时炸掉而 dryRun 抓不到它。这个 1300 多行的套件保证声明的输出键必须真实出现在返回结构中。DocExampleValidationTests.cs文档里每一处示例调用都必须按原文跑通——Agent 是逐字复制这些示例的文档里一个不存在的参数名等于把UNKNOWN_PARAM错误亲手发给用户。配合test_smoke_skills这类技能整套体系甚至能让 AI 自己对 805 个技能做冒烟巡检。 新手如何上手先读 README.md 与 docs/SETUP_GUIDE_CN.md 完成安装在 Unity 面板Window UnitySkills中启动服务。用 AGENTS.md 作为开发手册入口架构一图流AI agent → unity_skills.py → HTTP → SkillsHttpServer → SkillRouter → 805 skills、线程硬规则、技能元数据约定都在 前 20 行。动手前先看 SkillsForUnity/Tests/Editor/Core/ 里最接近你模块的测试套件照着走真实入口 读回验证的模式写断言。新增技能后运行/skillcheck同步各处技能计数——让测试替你把数字守住。 写在最后Unity-Skills 的测试哲学可以浓缩成三句话success不是结论读回才是元数据不是注释是闸门文档里的每个字测试都要认账。对于任何想让 AI 安全操作真实工程的项目来说这套静默降级审计 读回校验 文档一致性守卫的组合拳比单纯堆测试覆盖率更值得借鉴。赞分享【免费下载链接】Unity-SkillsAI automation skills specifically designed for Unity项目地址https://gitcode.com/gh_mirrors/un/Unity-Skills点击查看免费下载相关推荐n8n 错误处理实战指南从静默失败到响亮、结构化、可恢复的失败路由n8n-skills 项目实践n8n 错误处理实战指南从静默失败到响亮、结构化、可恢复的失败路由n8n skills 项目实践 导读 n8n 默认的失败行为是静默的——当某个节点AI 技能AI 插件工作流自动化流程编排opencodex openai-responses 家族加固实践azure-openai 适配器从静默失败到快速失败opencodex openai responses 家族加固实践azure openai 适配器从静默失败到快速失败 导读 本文以 opencodex 仓库人工智能LLM 网关API网关后端开发工具Unity-Skills Windows实战指南PowerShell与Git Bash调用及5个静默出错陷阱Unity Skills Windows实战指南PowerShell与Git Bash调用及5个静默出错陷阱 Unity Skills 是专为 Unity 打创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进