Files
2026-10-14 14:46:24 +08:00

65 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: task-difficulty-verification
description: 按需求难度分配验证成本——简单改动只做最省的确认、不跑测试;复杂改动必须做回归测试,避免改完反复返工。在本项目(Unity Vision)里做代码、场景或资源改动时适用。
---
# 按难度分配验证成本
目标:简单任务不要为了「保险」浪费 token 去测试;复杂任务必须验证,避免改错没发现、来回返工。
## 先判定难度,并用一句话说明
动手前判定,并用一句话告诉用户这次算简单还是复杂(例如「这算简单任务,改完直接给你」)。判错了用户能当场纠正。
**简单任务**(符合任一):
- 单文件小改、文案 / 命名 / 日志 / 注释
- 只读查询、看状态、回答问题
- 加一个对象、调一个参数、改个颜色或层级
- 删除无用代码,且无人引用
- 影响面单一,且用户已明确说明期望结果
**复杂任务**(符合任一):
- 跨文件 / 跨模块,或改动落在公共 API、被多处调用的代码上
- 核心逻辑、算法、状态机、存档或数据格式、构建配置、包依赖、渲染管线、材质 / Shader
- 改动会引入其他代码要使用的新类型、新接口、新字段
- 改错了不容易被发现,或者可能破坏原本能跑的东西
- 用户明确要求验证或回归
拿不准时按复杂处理。
## 「删除兜底代码」属于哪一档
删运行时的后备逻辑(自动查找节点、默认值、容错分支)时,别按行数、也别按动了几个文件判,按**删掉之后出错看不看得见**判:
- 后备路径其实没被走到(引用 / 配置本来就接全)→ 等同删死代码,**简单任务**,同一件事涉及几个文件也一样。只做一次最便宜的确认:查一遍引用确实接好,然后交付。
- 后备路径确实在兜着东西(有地方没接)→ **复杂任务**。这种改动出错的表现是「不报错、就是不工作」,必须回归。
- 光读代码分不出是哪种:**后备代码在的时候,「引用是否接全」本身是看不见的**,所以不能拿「我只是删死代码」当免检前提。查一次实际接线就能分清,而这个检查本身就是那次最便宜的确认。
## 简单任务:不做测试
- 直接改完交付,最多做一次最便宜的确认:读一次返回值、看一眼 transform、curl 一次接口。
- 不跑测试套件,不做回归,不为了确认把整个项目重读一遍。
- 不要用「更保险」当理由补验证步骤。
- **本项目的简单改动不要再跑这些**:Unity 编译检查、控制台检查、进 Play 模式实测、保存场景 / 预制体。它们只在「复杂任务:必须回归」那一档才做。
典型的简单改动:改字段类型 / 字段名 / 默认值、文案 / 注释 / 日志、调 Inspector 数值。
## 复杂任务:必须回归
按下面顺序做,够用即停:
1. 先让编译错误清零:读 `mcpforunity://editor/state` 等到 `compilation.is_compiling == false`,再 `read_console(types=["error"], count="10")`。
2. 跑覆盖本次改动的测试(`run_tests`,EditMode / PlayMode 按改动性质选),只跑相关范围,不重跑全量。
3. 回头验证本次改动会碰到、但原本正常的行为:调用方、相邻功能点、序列化数据、场景里已存在的对象。
4. 结果讲清楚:跑了什么、过没过、哪部分没测以及原因。
## 避免重复修改
- 验证通过就停手,不要顺手再改别的地方。
- 验证不过:定位根因改一次,重跑同一条验证;不要一边猜一边连续打补丁。
- 同一处连续两次修不好,停下来把现象和判断交给用户决定。
用户明确要求跑测试、或明确说不用测时,以用户的要求为准。