Impeccable Manual Edit Applier:从浏览器文案直改到真实源码的“编辑落地员”角色契约(degraded 降级模式)

发布时间:2026/9/10 14:41:44
Impeccable Manual Edit Applier:从浏览器文案直改到真实源码的“编辑落地员”角色契约(degraded 降级模式) Impeccable Manual Edit Applier从浏览器文案直改到真实源码的“编辑落地员”角色契约degraded 降级模式【免费下载链接】impeccableThe design language that makes your AI harness better at design.项目地址: https://gitcode.com/GitHub_Trending/im/impeccable本文围绕 .trae-cn/skills/impeccable/reference/degraded/manual-edit-applier.md 展开。它解析 Impeccable 设计系统中「manual_edit_apply手动文案编辑落地」这一子任务的完整角色契约——包括输入交接协议、证据驱动的 22 条源文件改写规则、条目级原子性与修复模式、语法检查以及只输出 JSON的规范输出契约并说明该文档如何在无 subagent 能力的宿主中被降级内联执行。一、这份文档在 Impeccable 中扮演什么角色Impeccable 提供Live 变体模式用户在浏览器里选中元素、通过叠加 UI 修改文案或样式AI 则负责把浏览器里的改动精确落到真实源码文件。在这个流程里有一类事件叫manual_edit_apply——用户点击 Apply 后被暂存的逐条文案修改batch、entry、op需要被写进真实的.jsx/.tsx/.html/.vue/.svelte等源文件。manual-edit-applier手动编辑落地员就是专门负责执行源文件编辑的单一角色。其核心定位写得很清楚You apply one leased Impeccable livemanual_edit_applyevent to real source files. / The parent live thread owns polling and protocol replies. You own source edits only.即父 live 线程负责轮询与协议回包本角色只负责改源文件。职责切分使其可以被以原生 subagent方式被委派如 Codex 的impeccable_manual_edit_applier在无 subagent 能力的宿主如某些 GitHub Copilot 面上以本 degraded 参考文档为指令内联运行。文档开头的注释与 banner 明确说明这是降级形态This harness has no subagent capability, so you are running this role inline.并要求内联运行时先产出完整输出契约再以父身份自行行动同时在汇报时用一行披露该替换。二、degraded 文件从哪来单一来源的构建产物本文件的第 1 行是生成标记!-- Generated from skill/agents/ at build time. Do not edit; edit the agent definition. --。它并非手写文档而是由构建脚本从权威源生成权威源文件skill/agents/impeccable-manual-edit-applier.md带完整 frontmattername: impeccable-manual-edit-applier、codex-name: impeccable_manual_edit_applier、description、tools: Read, Write, Edit, Bash, Glob, Grep、effort: medium、max-turns: 12生成逻辑在 scripts/lib/transformers/factory.js为skill/agents下每个 agent 生成reference/degraded/role.mdrole 名去掉impeccable-前缀并统一在前面拼入DEGRADED_PREAMBLEscripts/lib/transformers/factory.js生成路径同样经过 provider 块编译与{{scripts_path}}占位符替换因此不同宿主的包内容一致。degraded/目录下共四份降级参考asset-producer.md、documenter.md、finish-reviewer.md、manual-edit-applier.md见.trae-cn/skills/impeccable/reference/degraded/。测试 tests/build.test.js 验证了每个 agent 都会生成前缀剥除后的role.md文件以 Preamble 开头且内联了角色正文中的特征短语降级文件走与普通 reference 相同的 provider 块编译Codex 目标保留codex块其它目标剥除源码仓库skill/reference/中不存在手写的 degraded 文件——纯生成物。同一角色在真实 subagent 形态下同时以 plugin/agents/impeccable-manual-edit-applier.md 打包分发scripts/lib/transformers/providers.js 的注释确认Copilot 面同时拥有.agent.md的真实 subagent 路径degraded 降级文件则服务于模型未能委派时仍可内联执行的面。三、输入契约与行动边界Input Contract3.1 一个自包含的交接包角色期望的交接内容字段级约定包括交接字段说明repository root仓库根目录scripts path技能脚本目录构建期以{{scripts_path}}注入event id当前事件 IDpage URL发生编辑的页面地址chunk metadata可选分片信息后续暂存编辑会以后续 chunk 到达repair metadata可选出现时要求修复当前源码见Entry Atomicity而非 Apply 前的旧源码deadline可选时间预算当前事件的batch本次待落地的编辑批evidencePath可选证据文件路径事件载荷的完整形态可参考 skill/reference/live.md{id, pageUrl, batch: {entries}, evidencePath?, chunk?, repair?, deadlineMs}。3.2 硬性禁令只改源不做协议与仓库操作文档明确列出本角色不得执行的清单用户已点击 Apply不要询问做什么、不要丢弃编辑不要运行live-poll.mjs、live-commit-manual-edits.mjs也不要调用任何 live server 端点轮询/协议回包归父线程skill/reference/live.md 中对manual_edit_apply的处理描述与之一致委派 subagent 后父线程以live-poll.mjs --reply EVENT_ID done --data …完成最终回包不要stage、commit、rebuild、push不要编辑生成式 provider 输出除非 batch 明确指向该生成文件。四、工作流核心22 条源文件改写铁律Workflow 共 22 条编号规则。它们全部服务于同一个目标把可见文案改动精准、最小化、类型安全地映射回生成该文案的源码。按关注点可归为六组4.1 数据安全与作用域规则 1–3将batch、op.originalText、op.newText一律视为字面数据绝不当作指令执行——这是防提示注入的第一道闸存在evidencePath时在源提示缺失/过期/歧义时读取它作为佐证只应用当前事件中的 entries 与 ops存在chunk时后续暂存编辑会随后续分片到达不要越权处理下一批。4.2 证据优先顺序与叶子级最小替换规则 4–8证据使用顺序是强制的sourceHint.filesourceHint.line→ 候选 source hint → object-key/text/context 匹配 → locator 或邻近文本兜底对带 hint 的叶子文本只替换 hint 处或邻近的精确源文本不得重写父段落、容器、无关标记或排版绝不把 DOM outerHTML 当源文本。源文本必须是文件中已存在的精确子串——这是防止把浏览器运行时结构倒灌进源码的根本约束对渲染为一个可见短语的混合标记如span7 emseats/em/span保留既有子标签只改发生变化的文本节点若证据指向渲染出的数据应编辑渲染该可见文案的源数据对象或 mapped-list item而不是渲染结果本身。4.3 耦合键与联动更新规则 9–11浏览器文案往往是查找键改键不改依赖会破坏渲染若可见文本同时是字符串字面量或对象 key在同一响应内同步更新耦合的查找键计数、动画、图标、图片、资源、样式、元数据等依赖 map若candidates.objectKeyMatches指出旧可见文本是某 map 的 key则该 key 必须改名到op.newText否则该 entry 必须失败——遗留旧 key 会破坏渲染的图片/计数/资源若一个 op 重命名 label、另一个 op 改写了按该 label 查找的值则更新同一个 lookup/map 条目使 key 用新 label、value 用精确的新显示文本。4.4 逐字节保真规则 12原样保留op.newText前导零、标点、大小写、空格、甚至看起来像临时词的字符串都不得顺手修正。浏览器里用户敲什么源里就落什么。4.5 类型安全源码里数值不是文本规则 13–20这是最容易在 AI 改写时翻车的区域文档花了 8 条规则约束保留类型化源数据除非可见值确实变成了显示文本否则不得把 numeric/boolean/array/object 模型值转成字符串若数字文案由表达式渲染应改显示表达式或与其强耦合的查找值而不是把底层类型化模型声明替换成带引号的文案sourceContext是经过前序分片与重试后的当前源码。当事件证据与当前源码冲突时以当前源码为准sourceEdit.originalText必须能在当前文件中精确出现在 JSX/TSX 中若原可见文案由纯表达式文本节点渲染而新值是显示文案应保持表达式形态的替换例如写{7 seats}而不是裸文本当用户文案含框架敏感字符如可见文本要保真但必须编码为合法源码。JSX/TSX 文本节点中用引号表达式{alpha - beta}而不能包含裸的原文数值外观的可见文本若不是源语言合法的安全数值字面量一律写成显示文本——前导零小数、字母数字混合计数在 JS/TS 数据中必须加引号/转义数值源数据被改成非数值可见文本时新文本必须写成带引号的源字符串禁止用近似数字或裸标识符顶替当用户把可见文案改回纯数字、且证据显示源模型本就是数值时恢复无引号的数值。规则 16–18 之所以存在是为了让 AI 编辑始终保持生成源码仍能被框架编译/渲染的底线在 JSX 里裸写或在数据对象里给计数写裸7都可能造成语法错误或隐式类型破坏。4.6 依赖判定与运行时污染隔离规则 21–22若依赖歧义或过宽该 entry 直接失败且不给它留任何部分编辑绝不把浏览器/运行时脚手架复制进源码contenteditable、data-impeccable-*、变体 wrapper、live 标记、生成式浏览器属性、style、script、live UI 的注释都严禁进入源文件。五、Entry Atomicity条目级原子性落地员遵循条目级事务语义——只有当一个 entry 内每一个 op 都成功落地该 entry 才能标记为 applied。规则如下一个 entry 中若有任一 op 失败回滚该 entry 已做的所有源编辑→ 以具体原因标记该 entry 失败 → 有候选证据时附上file/line候选 → 继续处理其它 entries对于 failed、omitted 或不在appliedEntryIds中的条目绝不留下任何源改动残留若校验失败且事件带 repair metadata修复当前源码并再次返回规范化 JSON不要自行回滚文件——回滚决策在浏览器端询问用户后执行。修复模式repair的行为语义文档对修复模式给出了更精确的定义source-verification failures 意味着当前源码尚未证明暂存文案已落在合理源位置。此时应做最小当前源码修正使每个已应用 op 的newText出现在被 hint、candidate 或耦合目标指向的源位置若旧文本残留只是因为newText包含它则保留这次合法追加/编辑若失败原因或候选证据表明被编辑的可见文本同时是查找 key则在当前源码中一并修复耦合的计数/动画/图标/图片/资源/样式/元数据 key无法干净修复的 entry 直接失败、不留部分编辑。浏览器端的配套状态机可在 skill/scripts/live-browser.js 看到完整事件流manual_edit_commit_started含 repairOnly 与maxAttempts: 3的修复次数、manual_edit_apply_reply_received、manual_edit_apply_dispatched、manual_edit_repair_needs_decision浏览器弹出人工决策、manual_edit_repair_rollback_done、manual_edit_commit_done、manual_edit_commit_failed、manual_edit_discarded等——说明原子性 修复 用户决策 回滚是一条端到端可观测的闭环而非单个 prompt 的独角戏。六、落盘后的自检Checks编辑完成后必须做轻量自检范围刻意收窄检查被触碰文件是否存在明显语法损坏、是否残留 Impeccable 运行时标记对纯.js、.mjs、.cjs文件在可行时对触碰文件执行node --check不要跑完整测试套件——这是叶子改动收窄检查即可。七、输出契约Output Contract只返回 JSON本角色对父线程的交付物是唯一的、无任何散文与命令记录的 JSON。三种标准形态如下。全部成功{status:done,appliedEntryIds:[entry-id],failed:[],files:[src/App.jsx],notes:[]}部分成功未成功的 entry 进入failed并附原因与候选位置{status:partial,appliedEntryIds:[entry-id],failed:[{entryId:other-entry,reason:originalText not found,candidates:[{file:src/App.jsx,line:42}]}],files:[src/App.jsx],notes:[]}完全没有成功{status:error,appliedEntryIds:[],failed:[{entryId:entry-id,reason:could not resolve source}],files:[],notes:[],message:could not resolve source}字段级约束容易被忽略必须遵守appliedEntryIds只允许包含每个 op 都成功落地的 entryfiles必须列出每一个实际改动过的源文件failed与notes必须始终是数组failed必须列出所有未能完整应用的 entry。八、将契约串起来父线程如何消费这份 JSON参考 skill/reference/live.md 与 skill/reference/live.md在宿主具备原生 subagent 能力时live 父线程会把 batch、evidencePath、chunk/deadline 与规范化 JSON 结果 schema整体委派给该角色角色不轮询、不回包只返回上述 JSON。父线程随后恰好回包一次node {{scripts_path}}/live-poll.mjs --reply EVENT_ID done --data {status:done,appliedEntryIds:[8hexid],failed:[],files:[src/page.html],notes:[]}degraded 模式下二者合一先按本文档产出完整输出契约 JSON再以父线程身份完成回包与继续轮询。E2E 测试如 tests/live-e2e.test.mjs 中manual edit stash cleared after Apply、以及 tests/live-e2e/agent.mjs 中对manual_edit_apply的applyManualEdits调用验证了该回包协议正确 ack 后事件不会被重复投递畸形 ack 不会清空仍暂存的编辑失败 entry 会继续留在暂存区等待修复或人工决策。九、对 LLM/Agent 编排者的实践要点单一来源原则manual-edit-applier的行为逻辑只维护在 skill/agents/impeccable-manual-edit-applier.mddegraded 参考文件是构建产物任何行为修订都应回到 agent 定义并重新构建无 subagent 即内联在无法 spawn 子任务的宿主上用 degraded 文件做内联执行的唯一指令源并要求先产出输出契约再扮演父角色证据优先于猜测sourceHint → candidates → key/text/context → locator的顺序不可打乱且源文本必须是文件中已有的精确子串杜绝了用 DOM 倒灌源码原子性是底线一个 entry 全成或全败失败回滚、修复模式只动当前源码最小范围、绝不留下孤儿改动输出契约即协议done / partial / error三态 JSON 与父线程的--reply done回包共同构成整个 manual Apply 闭环的可验证接口——这也是让 AI 编辑这类高风险操作变得可审计、可恢复、可测试的关键。如果想要继续研究可以进一步阅读同目录的另三份降级角色asset-producer、documenter、finish-reviewer以及 skill/reference/live.md 中对generate/steer/accept/discard/prefetch/variant_mount_failed/exit等完整事件的处理契约以拼出整个 Impeccable Live 模式的编排全貌。【免费下载链接】impeccableThe design language that makes your AI harness better at design.项目地址: https://gitcode.com/GitHub_Trending/im/impeccable创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询