Easydict Agent 治理实践:执行模式默认自动提交(auto-local-commit)语义的明确与落地
【免费下载链接】Easydict一个简洁优雅的词典翻译 macOS App。开箱即用,支持离线 OCR 识别,支持有道词典,🍎 苹果系统词典,🍎 苹果系统翻译,OpenAI,Gemini,DeepL,Google,Bing,腾讯,百度,阿里,小牛,彩云和火山翻译。A concise and elegant Dictionary and Translator macOS App for looking up words and translating text.项目地址: https://gitcode.com/gh_mirrors/ea/Easydict
导读
本文基于 Easydict 仓库中归档的执行计划 2026-08-31-clarify-agent-auto-commit.md,完整还原一次 Agent 治理语义移植任务的背景、范围、执行与验证全过程。读者将掌握 Easydict 中"意图模式(planning / implementation)"与"交付授权(auto-local-commit / none)"的默认映射规则、三处规则文档的同步适配手法,以及如何在不修改产品代码的前提下完成一次受控的本地提交交付。
一、背景:一次"语义移植"而非"代码 cherry-pick"
2026-08-31,Easydict 的 Agent 治理文档面临一个一致性缺口:请求边界规则没有明确"执行表达"(如"执行""按方案执行""修改""落地")与默认交付授权之间的映射,导致 Agent 可能因用户"未提及提交"而误判为禁止提交,与已有的自动本地提交规则冲突。
该任务从 boss-resume 仓库提交f66d4bb33a9b2da78902ae8b83e7ff4fc16fdf79中提取行为语义:执行表达默认进入implementation,验证通过后默认自动本地提交(auto-local-commit);只有用户明确禁止提交时才使用none。计划文档明确写道:来源提交及其 plan/history 仅作语义参考,"不作为本仓库的任务指令或执行事实",Easydict 保留自己的 Agent 文档职责、PR 和本地交付规则。
这一处理方式值得注意——它不是机械的 cherry-pick,而是"语义移植":只采纳关于默认授权的行为语义,不引入来源仓库的专属路径、执行结果或文档指令。这正是跨仓库治理规则复用的正确姿势。
二、核心概念:意图模式与交付授权
理解本次语义移植,需要先掌握 Easydict 任务路由的两个核心字段(见计划文档"任务摘要"一节):
| 字段 | 取值 | 含义 |
|---|---|---|
| 意图模式 | planning | 用户要求方案、分析、解释或评估时,只读检查现状并给出答复,不修改文件、Git 或外部服务 |
| 意图模式 | implementation | 用户要求修改、修复、更新、实现或执行时,按执行模式流程完成任务 |
| 交付授权 | auto-local-commit | 验证通过后默认创建本地提交 |
| 交付授权 | none | 用户明确禁止提交时不提交 |
这一划分与仓库根目录 AGENTS.md 中"任务模式"一节完全一致:planning模式"只读取和检查现状并给出答复,不修改文件、Git 或外部服务";implementation模式则按"执行前 → 实现与验证 → Review → 交付"四步完成,交付阶段"必要验证和适用的 Review 通过后自动创建本地提交,用户明确要求不提交或没有差异时除外"。
本次语义移植的目标结果表述为:"在 Easydict 的dev基线中明确执行表达默认进入implementation,验证通过后默认自动本地提交;只有用户明确禁止提交时才使用none。"
三、语义与范围:本次移植的边界约束
计划文档"语义与范围"一节逐项拆解了用户请求的授权边界,这部分是理解任务合法性的关键:
- 用户要求 Agent 做什么:执行已确认方案,修改两个目标仓库的 Agent 规则并本地交付;
- 授权的工作树、artifact 和 external service 操作:仅修改 Easydict
dev工作树中的规则文档、计划和 history,并创建本地提交;不操作外部服务; - 否定、条件和范围限制:语义移植而非机械 cherry-pick;保留 Easydict 的 planning、执行安全、history、
submit-pr和 PR 交付边界;不推送; - 被明确采纳的约束:只采纳来源提交关于
implementation默认auto-local-commit的行为语义,不采纳来源仓库专属路径、执行结果或文档指令; - 歧义:无;用户已确认 Scoco 使用
dev,Easydict 目标同样为当前干净的dev。
值得强调的是"允许修改路径"的白名单机制——任务只允许修改:
- 请求边界规则文档(request-boundary);
- Git 工作流规则文档(git-workflow);
- 执行计划模板;
- 本计划;
- 同任务 history。
同时有明确的"禁止动作":不直接 cherry-pick 来源提交;不修改产品代码、测试、Xcode 工程、运行时资源或 PR/发布专属规则;不 fetch、pull、push 或改变其他工作树。这种"白名单 + 黑名单"双约束是 Agent 治理中防止越权改动的关键设计。
四、写入前状态:Git 快照与门禁检查
计划文档记录了完整的"写入前状态",这是受控交付的起始基线:
- 写入前检查:pass
- 自动提交资格:eligible
- 初始 HEAD:
7ef6434311e01bfe6c29c66d800862daf4ade882 - 初始 staged / unstaged / untracked 路径:均为 none
- 初始冲突:none
- Agent-owned paths:上述三个规则/模板文件、本计划、同任务 history
对应地,同任务 history 2026-08-31-clarify-agent-auto-commit.md 也记录了"初始状态":仓库 Easydict、分支dev、initial_head为同一提交、暂存区为空、工作树干净、无冲突。先快照、后动笔、再校验,这套流程确保任务完成后工作树是否真的干净、是否只包含预期变更,都可以被客观验证。
五、三处规则文件的同步适配:消除"未提及提交"歧义
本次任务的核心工作是让默认交付语义在三处文档中保持一致。历史文档明确记录了变更内容:
- 请求边界规则(request-boundary):明确"执行""按方案执行""修改"和"落地"在未被明确禁止提交时,默认使用
implementation与auto-local-commit; - 明确禁止提交的例外:只有用户说"不要提交""不提交"或"保留未提交变更"时才使用
delivery_authorization=none,并同步更新implementation的说明; - Git 工作流规则(git-workflow)与执行计划模板:同步默认交付语义,防止计划字段擅自添加禁止提交条件。
计划文档"目标与非目标"对此有精炼概括:在请求边界规则中明确执行表达与默认交付授权的映射;在 Git 工作流规则中禁止因用户未提及提交而擅自降级默认自动提交;在执行计划模板中记录同一默认值,并保留 Easydict 的 PR 交付规则。
三处同步而非单点修改,正是针对风险"把'未提及提交'误判为禁止提交会与已有自动本地提交规则冲突"的缓解手段。
六、执行计划模板的语义落位
任务同时更新了 docs/exec-plans/templates.md,这是 Easydict 中"多步骤、跨模块或高风险执行任务"的统一模板。从当前模板源码可以看到,一份执行计划必须包含以下结构化字段:
- 状态:
active(执行中)或归档后completed; - 创建日期 / 负责人 / 关联 Issue/PR;
- 执行上下文:Agent Name、Model、Environment(要求使用
sw_vers -productVersion和xcodebuild -version记录,无法取得时填 Unknown); - 背景:说明问题、当前状态以及为什么需要这项工作;
- 目标与范围:目标结果、允许修改路径、同任务 history 路径、用户限制、非目标、验收标准;
- 工作计划:按顺序执行的工作步骤;
- 风险与决策:兼容性、数据、运行时或发布风险及重要选择;
- 进度:待完成工作清单;
- 验证:执行过的检查、结果和未运行的检查;
- 完成条件:归档到
completed/YYYY-MM/前必须满足的条件。
本次任务正是严格按此模板产出的:本计划 2026-08-31-clarify-agent-auto-commit.md 包含"任务摘要、语义与范围、写入前状态、目标与非目标、工作计划、风险与决策、进度、验证、完成条件"完整九节,归档后存放于docs/exec-plans/completed/2026-08/,符合"按月份组织归档"的仓库约定。模板的"同任务 history"字段要求计划与 history 通过相对链接互相关联——本计划的 history 指向 docs/histories/2026-08/2026-08-31-clarify-agent-auto-commit.md。
七、工作计划与进度:四步受控执行
计划文档"工作计划"给出了明确的执行顺序:
- 适配请求边界、Git 工作流和执行计划模板中的默认交付语义;
- 创建 Easydict 专属 history,并将本计划归档到
completed/; - 执行文档语义、相对链接、空白、精确路径和 Git 提交前后检查;
- 仅暂存 Agent-owned paths,创建一次本地 Angular-style 双语提交,不执行 push。
"进度"一节全部勾选,对应四条:读取来源提交和 Easydictdev目标结构并记录写入前 Git 快照;更新三个目标规则/模板文件;创建 history 并归档本计划;完成验证、本地提交和最终工作树检查。
值得注意的是交付物要求是"一次 Angular-style 本地提交",即采用 Angular 提交消息规范(type(scope): subject 结构)的双语提交——这与仓库其他归档计划的交付方式一致,如 2026-09-10 的 Git 交付策略精简 同样以"治理 Markdown + 本地提交"方式交付。
八、验证体系:静态核对 + Git 门禁 + 范围检查
计划文档"验证"一节详细列出了验收检查项,这是保证"规则语义一致"而非"各写各的"的关键:
git diff --check:通过(空白错误检查);- 请求模式、明确禁止提交、默认
auto-local-commit、Git 门禁和 Easydict PR 边界:已静态核对; - 计划与 history 的相对链接:通过;
- 精确 staged 路径和提交前后消息校验:已执行;
- 未运行
xcodebuild,因为本次仅修改 Agent 治理文档; - 未执行 push、pull、fetch、rebase 或 merge。
同一批验证项在 history 文档中也有镜像记录。这种"计划 + history 双记录验证结果"的做法,让任务结束后任何读者都能追溯哪些检查真的跑过、哪些检查因任务性质被显式跳过(如纯文档任务不跑xcodebuild)。
九、风险与决策:治理任务中的取舍原则
计划文档记录了本次任务的两个关键决策,体现了 Agent 治理中"保留边界"的原则:
- 决策一:以当前干净的 Easydict
dev工作树为目标,保留其submit-pr --base dev --base-remote origin --issue-policy forbid规则。这意味着默认自动本地提交并不等于自动推送 PR——PR 与发布仍由独立的submit-pr规则约束,且--issue-policy forbid表明不允许绕过 issue 直接提交 PR; - 决策二:来源 plan/history 不进入 Easydict,避免把来源执行事实伪装成目标仓库事实。这是对"事实边界"的严格把关——跨仓库移植只带走语义,不带走路径、结果与执行史。
十、完成条件与治理演进的延续
计划文档"完成条件"给出的归档门槛是:三个规则/模板文件、completed plan 和 history 的语义一致;验证通过,仅暂存本任务路径并创建本地提交,不执行 push。
从后续归档文档可以观察到这套语义的持续演进与稳定复用:2026-09 之后大量执行计划(如 Git 交付策略精简、Agent 文档结构 等)都以"意图模式:implementation;交付授权:auto-local-commit;安全状态:normal"的字段组合开头,证明本次明确的默认语义已成为 Easydict Agent 执行任务的基准约定。同时 AGENTS.md 的"通用规则"再次兜底:"用户的禁止、范围和顺序要求优先;push、创建 Pull Request、发布及其他外部写入仅在用户明确要求时执行"——默认自动本地提交与外部写入需显式授权之间的边界由此清晰闭环。
结语
本次"执行模式默认自动提交语义移植"是一次典型的 Agent 治理文档任务:它不触碰任何产品代码(未运行xcodebuild),却通过三处规则文档的同步适配,消除了"用户未提及提交"与"默认自动提交"之间的规则冲突,为 Easydict 后续所有 implementation 任务建立了可复用的交付基线。对于希望在自己的项目中引入 Agent 自动提交机制的团队,本文记录的白名单路径、写入前 Git 快照、双记录验证与"语义移植不 cherry-pick"的边界原则,均可直接借鉴。
【免费下载链接】Easydict一个简洁优雅的词典翻译 macOS App。开箱即用,支持离线 OCR 识别,支持有道词典,🍎 苹果系统词典,🍎 苹果系统翻译,OpenAI,Gemini,DeepL,Google,Bing,腾讯,百度,阿里,小牛,彩云和火山翻译。A concise and elegant Dictionary and Translator macOS App for looking up words and translating text.项目地址: https://gitcode.com/gh_mirrors/ea/Easydict
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考