cheez-write 是一项用于编辑源代码的技能,核心要求是使用具备陈旧检测(stale-safe)的编辑后端,确保写操作锚定当前文件状态,文件变更时能合并或拒绝写入。
用途与选型:按编辑形态选择后端,优先代码智能后端而非宿主基础编辑工具。语义级改动用 LSP 重命名/代码操作;结构性 codemod 用 AST 重写(如 sg --rewrite,须先 dry-run);已知块/范围改动用 tilth MCP 锚定编辑;仅当无匹配后端时回退到原生锚定编辑。禁止将 sed、awk、patch、shell 重定向或盲目写入视为等价代码编辑。
使用方式(读-改协议):先用 cheez-read 读取目标区块,获得 [path#TAG] 头或快照 id,记下行号;再通过锚定后端应用编辑。tilth_write 参数为 edits 数组,元素形如 {path, tag, ops},单次最多 20 段;op 支持 replace、delete、insert_before/after、prepend/append、replace_block、delete_block、delete_file、move_file 等。tag 仅在新建文件时可省略。
限制与注意事项:不得臆造 tag,必须原样复制读取得到的 4 位十六进制 tag;不同锚定体系不可互相转换,读取与写入须用同一后端家族;模式为 stripped 的读取不带 tag,无法回写。同一文件连续两次被拒绝应停止重试,报告“tag race”并附当前内容与建议替换。锁定文件应由包管理器更新,生成产物应重新生成,仓库外或依赖缓存内文件不要编辑,二进制文件不适用。签名变更后应使用 LSP 引用或调用方通知检查遗漏调用点。大于 150 行的文件一律不得整文件重写;≤150 行且变更≥80% 时可整写。本技能不负责读/搜索(分别用 cheez-read、cheez-search),也不负责运行测试、提交、发布或评审。