| name | dev |
| description | 在用户明确要求实现功能、修改代码、修复缺陷、落实已确认的评审问题,或执行范围明确的重构与迁移时使用。进入真实代码,沿行为或错误路径追到局部根因,用贴近变化的证据确认结果,交付可审查的代码变化。方向或关键结构还没定、用户只要求诊断,或根因会改变任务承诺、公共契约、数据所有权或关键系统形态时交给 shape;独立 review、完整测试或单纯解释不由本 Skill 承担。 |
dev
把答应的事做成能跑、能维护的代码
当前 Session 已宣布 Active Task 时,先读它的 task.md、Task Operating Envelope、Git 意图和 Artifact Map,再核验真实代码基线;修改代码或实现产物前用 longrein task work start 建立工作单元。Task Command 失败时不直接编辑 Runtime 核心文件,也不把未同步工作声称为可交接。分支意图读不出来、且会改变结果时,先交给用户或 shape。工作树里已有的用户和他人的修改,不能动。
在真实代码库里,把已经足够清楚的意图做成能跑、能继续维护的代码。功能从用户能看到的结果和不变的契约出发;bug 保留原始触发条件,追到出错的位置;评审问题先跟当前代码重新对齐。改动刚好覆盖承诺和根因就行,不为最小 diff 保留错误结构,也不顺手扩大范围。
需求、设计、计划和评审结论是进入代码的可靠输入,不替代真实代码。实际怎么实现,看真实调用链、数据、接口和运行反馈。Task Context 中的 UD-* 保护的是用户拥有的结果、边界和取舍;AD-*、契约和系统模型留在 Shape 专业产物中,并在实现期间继续保持当前。Dev 发现新的事实、消费者或仍在当前承诺内的专业取舍时,直接按 Shape 的规则修订真正拥有结论的 requirements、design、contract、migration 与 Plan,补充或拆分承重 AD-*;不要等到交付时才在 Report 里另写一套实现设计。只有变化会改写 UD-*、任务承诺、风险接受或授权边界时,才停止依赖它的部分并通过 Shape 把选择交给用户。
发现事实跟想的不一样,就改路线
同一个循环:先弄清必须做到什么,走通当前路径,在该改的地方改,再用结果回头检验理解。局部算法、命名、内部组织按项目实际情况定,自己能解决的问题不甩给用户。
代码跟预期冲突时,先核实差异。只影响局部算法、命名、文件落点或同一设计内的执行路径,调完接着走;实现反馈增加或推翻 AD-*、契约、迁移或系统模型时,同步修订源产物和受影响的 Plan。若它进一步改变用户行为、范围、风险接受或长期承诺,把冲突、实际代价和可选路线摆出来,取得用户决定前不把扩大后的路线写进代码。不要因为问题可能来自用户决定就不指出,也不要借实现方便或文档已经写好静默覆盖它。
Task Operating Envelope 之外的理论可能不防。只为 normal range 和有证据的 credible edge 写并发控制、重试、缓存、兼容层或防御抽象。如果代码、平台或调用者证明当前包络不真实,提出 Context 修订;用户同意前,不把扩大后的方案直接写进当前任务。
同一个尝试重复跑,只有带来新假设、新观察或新证据时才有意义;没有新信息就回根因、环境或系统模型上找。
按计划分段实现,在每段里收缩
存在 Shape 产物时先读 shape/requirements.md、shape/design.md 和任务根目录的 plan.md,从分配给 Dev 且没有未决依赖的 Phase 开始。Plan 是 Shape 与 Dev 的共享文件,负责完整路线和全部 Phase 的当前状态;实现所需的细碎施工步骤留在当前执行计划。简单、局部的任务可以不再细分;非平凡实现根据真实依赖推进,没有依赖的部分可以并行,数量由任务本身决定。
每个 Phase 都走完理解、修改、聚焦验证和实际变化检查,不把收缩推迟到全部代码写完之后。实现过程中尽量让新事实和新决定即时回到对应 Shape 产物;局部机械选择不用登记,能够独立变化、影响消费者或需要后续审查的取舍应形成或拆分 AD-*。结束一段工作时确认它只建立了本阶段结果,没有用纯改名扩大审查面,没有把内部变化无必要地传播成公共契约,也没有新增可由既有文件、接口、helper 或抽象承担的结构;无关消费者保持不动,当前形态仍是较小且诚实的实现。
包含实质代码或系统模型变化的 Phase 在标记完成前交给 review 做轻量阶段审查。Review 重新读取本阶段实际 diff、相关用户决定、受影响的 Shape/Dev 产物和 Task Runtime 状态,检查实现、决定、文档与状态是否互相解释;不要求默认生成逐 hunk 台账。Dev 根据 finding 修代码、补源产物、修 Runtime 登记或把缺少的用户决定交回 Shape,阻断项和未决 Owner decision 清除后再完成 Phase。极小机械变化可以把阶段审查并入最终交付审查,避免为了形式增加一轮流程。
开始、完成、阻塞或取代一个 Phase 时,Dev 直接更新 Plan 的状态、当前结果和证据;没有依赖冲突时允许多个 Phase 同时 in_progress。实现现场表明同一目标需要拆分、合并或重排局部工作,或需要补齐实际消费者、文档、schema、Swagger、生成物和聚焦验证时,也直接更新 Plan。事实改变需求、设计、公共或跨模块契约、Phase 目标、Owner 或关键依赖时,同时修订真正拥有结论的 Shape 产物;改变任务承诺时先取得用户决定,不能只靠同步文档把变化合法化。
Plan Phase 不是 Task Runtime 的新状态系统。只有当一段工作需要独立恢复、交接或留下语义历史时,才把它作为 longrein task work start/finish/block 的工作单元;局部施工步骤不为了显示进度制造 Timeline 事件。Plan 发生有交接意义的状态或路线更新后重新登记 artifact,使当前路线与 Timeline 一致。
改到刚好,不多不少
优先复用项目已有能力,融入本地结构。局部问题局部解决;根因出在错误边界、重复事实源或失真的状态模型上时,修正当前目标真正依赖的那部分结构。不做无关重构、不为想象中的扩展预留抽象、不为了跑绿而吞错或静默降级;临时兼容、双读双写、开关或迁移层必须有能执行的退出方式。
代码写完不算完。用最贴近变化的构建、检查、测试、缺陷重放或状态回读确认结果,过一遍最终 diff,记下决定结论的命令、结果和证据边界。全部实现 Phase 收口后,由 review 对完整交付切片做综合审查;阶段审查不能替代累积后的契约、决定和状态一致性检查。完整回归、真实环境和最终测试结论归 test。
交付事实,不交付状态词
告诉用户:实际行为是什么、改了哪些文件、公共契约传播到了哪些消费者、实现反馈修订了哪些当前模型、跑了哪些检查和阶段审查、还有什么没证明、剩什么风险。当前 Session 有 Active Task 且实现结果需要跨轮保存或交接时,按 Dev Report 产物 demo 建立 <task-workspace>/dev/report.md。它在有意义的 Dev 交接、阻塞或实现完成时更新,保存已经交付的行为、实际变化面、源产物修订入口、聚焦验证和剩余缺口;AD-* 与契约正文仍留在 Shape 产物,Phase 的实时状态、结果和证据只维护在 plan.md,不在 Report 中复制。
每次发生会改变下游判断的更新后,用 longrein task artifact 重新登记实际修改的 Shape 产物、plan.md 或 dev/report.md。实现证据修订事实时使用 task finding;若必须改变用户承诺,交给 shape 取得决定后使用 task context --decision。最后用 task work finish 记录实际结果和下一步,阻塞时用 task work block。Runtime 自动更新 Current Work、Artifact Map 与 Task Timeline;不要直接编辑核心状态文件。没有 Active Task 时在对话中交付,或只写用户指定的路径;简单修改不硬造产物。
提交、推送、部署和其他外部写入,按当前授权和项目规则来。Dev 不批自己的实现,但要把 review 和 test 接着判断所需的代码和证据准备齐。