Easydict 仓库的 Git 提交回执规范:以完整回执示例为核心的可核验交付实践
桌面应用AI 应用【免费下载链接】Easydict一个简洁优雅的词典翻译 macOS App。开箱即用支持离线 OCR 识别支持有道词典 苹果系统词典 苹果系统翻译OpenAIGeminiDeepLGoogleBing腾讯百度阿里小牛彩云和火山翻译。A concise and elegant Dictionary and Translator macOS App for looking up words and translating text.项目地址https://gitcode.com/gh_mirrors/ea/Easydict点击查看免费下载导读在自动化 Agent 或多人协作的提交流程中如何让一次本地 Git 提交可核验——从完整哈希、分支、校验状态到分类统计全部以 Git 真实对象为准——是保证交付质量的关键。本文以 Easydict 仓库中.agents/skills/git-commit技能模块的完整提交回执示例为核心骨架结合其技能定义、统计与回执规范、提交信息契约及配套脚本与测试完整讲解回执的字段语义、变动统计规则、双语提交信息结构以及前后校验流程。读完本文你将能够读懂并亲手生成符合仓库规范的本地提交回执理解其背后的分类算法与校验器约束。一、完整提交回执长什么样仓库通过 post-commit-report-example.md 提供一个需要参考完整提交回复时阅读的基准模板。该文档明确指出示例中的哈希、分支、状态、统计和提交信息必须替换为本次实际结果并且以 统计与提交回执 与 Git 的实际输出为最高优先级。示例回执的完整结构如下本地 Git 提交完成。 提交结果 - 动作已创建提交 - Commit0123456789abcdef0123456789abcdef01234567 - 分支docs/unify-commit-receipts - 提交后校验通过 - 工作树干净 - Push未执行 变动统计 | 类别 | 文件数 | 新增行 | 删除行 | 净变动 | | --- | ---: | ---: | ---: | ---: | | 总计 | 5 | 68 | 15 | 53 | | 代码 | 1 | 8 | 2 | 6 | | 文档 | 4 | 60 | 13 | 47 | 实际提交信息 text docs(git): 统一本地 Git 交付回执 背景现有提交流程收集了完整结果但最终回执格式分散可能被压缩成提交标题。 变更统一用户可见回执并使用 Markdown 表格展示统计保留提交信息校验和 JSON 统计数据来源。 影响这让本地提交提供一致、可核验的结果并继续保持默认不推送的边界。 ---------------------------------------------------------------------- docs(git): unify local Git delivery receipts context: The existing commit workflow collected complete results, but its final receipt could be reduced to a commit subject. change: Unify the user-visible receipt and render statistics as a Markdown table while preserving message validation and the JSON statistics source. impact: This gives local commits consistent, verifiable results while preserving the default no-push boundary. 可以拆解出三个逻辑区块提交结果Receipt Header动作、完整哈希、分支、提交后校验、工作树状态、是否 Push。示例中Push未执行对应技能定义中本 Skill 不运行git push、rebase 或 merge的边界见 SKILL.md。变动统计Change Statistics以 Markdown 表格呈现总计/代码/文档三个类别的文件数、新增行、删除行与净变动。实际提交信息Actual Messagegit show -s --format%B HEAD的逐字输出代码块内容必须与 Git 完全一致。二、回执证据从哪里来以 Git 真实对象为准reporting.md 明确规定创建提交后需收集以下五项证据缺一不可证据命令用途完整哈希git rev-parse HEAD回执中的Commit字段完整提交信息git show -s --format%B HEAD回执末尾实际提交信息区块当前分支git branch --show-current回执中的分支字段最终工作树状态git status --short判定干净或保留未提交变更变动统计下方统计脚本输出回执表格数据回执字段的具体约束如下正净变动写N负值写-N零值写0无变化本次创建且提交后校验通过时提交后校验写通过复用已有提交时动作行说明本次未创建校验写未执行本次复用已有提交但仍须保留完整哈希、统计、实际信息、最终状态与 Push 字段多提交范围range回执需列出每个完整哈希和 subject注明未创建新提交、未执行提交后校验并输出范围统计由于范围没有单一实际提交信息不能用其中某一条代替整个范围。这套先有证据、再写回执的顺序保证了回执中的每一个数字和字符串都可溯源而非凭印象杜撰。三、变动统计脚本代码与文档的互斥分类回执表格的数据由仓库自带的 commit-change-stats.py 生成它是一个只读 Git 命令封装器内部通过subprocess.run调用git支持单提交与范围两种模式# 单提交输出完整哈希对应变更的 JSON 统计 python3 .agents/skills/git-commit/scripts/commit-change-stats.py full-commit-hash # 多提交范围聚合 BASE...SOURCE 三点范围 python3 .agents/skills/git-commit/scripts/commit-change-stats.py \ --range target-commit...source-commit3.1 分类规则脚本将文本文件划分为两个互斥类别源码中is_documentation()函数的判定逻辑docs满足以下任一条件位于docs或Documentation目录目录名大小写不敏感文件名为AGENTS.md或SKILL.md文件名以README或CHANGELOG开头扩展名为.md、.mdx、.rst、.adoc见脚本顶部的DOCUMENT_EXTENSIONS、DOCUMENT_DIRECTORIES、DOCUMENT_FILENAMES常量code其余所有文本文件包括源码、测试、构建/运行时配置、资源和 Skill 脚本。3.2 关键实现细节二进制文件被有意跳过numstat 记录中插入/删除行为-的条目直接continuecollect_stats中的判断不计入统计与用户报告输出中也无binaryFiles字段重命名感知读取 numstat 时使用--find-renames并解析 NUL 分隔记录以保留每个目标路径重命名记录中的源路径不影响分类一致性约束总文件数、新增、删除和净变动必须分别等于code docs脚本失败或数字不一致时不允许编造统计范围校验--range参数强制要求BASE...SOURCE形式且不能与位置参数 revision 同时使用parse_arguments中显式报错。3.3 测试验证仓库配套测试 test_commit_change_stats.py 在临时 Git 仓库中验证了以下行为可作为回执统计正确性的可执行证据混合提交中二进制文件被忽略total code docs文档名README.md、文档目录Documentation/、SKILL.md均归入 docs普通配置与脚本归入 code重命名含中文与空格路径、删除场景下统计正确三点范围base...source的聚合结果正确且scope为range无效 revision 返回非零退出码并在 stderr 输出error:前缀的诊断。输出为排序后的 JSON含code、docs、revision、scope、total也是提交流程中JSON 统计数据来源的直接载体。四、实际提交信息背后的契约回执末尾的实际提交信息不是随意写的而是必须满足 commit-message.md 定义的提交信息契约。该契约决定了回执示例中那个双语结构的由来。4.1 语言模式按以下优先级确定提交信息语言用户明确指定 当前对话主要使用的自然语言 系统偏好语言仍无法判断时使用 English。english 模式只有一个英文区块bilingual 模式非英语提交示例即此模式本地语言区块 空行 严格 70 个连字符的分隔线 空行 英文区块分隔线即示例中的----------------------------------------------------------------------不添加Chinese:或English:等区块标签。4.2 区块结构与标记中文本地语言区块使用背景、变更、影响三个标记英文区块使用context:、change:、impact:冒号后恰好一个空格再接非空正文。约束包括每个语言区块恰好三个自然正文段依次说明背景、变更、影响通常每段 1–3 句标题使用最窄且准确的 Angulartype(scope): subject不超过 80 字符type、scope和!在两个区块保持一致中文任务第一个 subject 必须含中文第二个 subject 必须为英文且使用祈使式小写、无句号不得把同一英文 subject 用于两个区块仅在不兼容变更时使用!或区块末尾的BREAKING CHANGE:footerfooter 不能替代三个正文段可选全局References:尾段必须排在所有语言区块及 footer 之后且每个条目以- [label: ]http(s)://...一行呈现用于中立地记录影响本次决策的外部 PR/Issue/文档不使用Closes:/Fixes:/Resolves:代替。4.3 Type 指南feat新用户行为、fix缺陷修复、docs仅文档、style不改功能的格式、refactor不改行为的内部结构、perf性能改进、test仅测试、build依赖/打包/构建配置、ciCI 工作流、chore其他维护、revert回滚。scope 优先使用parser、api、settings等具体模块避免app或misc等宽泛名称。五、提交前后校验确保所见即所提交回执中的提交后校验通过字段并非口头承诺而是由校验器 validate-commit-message.py 强制保证的。5.1 提交前校验将与可见预览完全一致的内容写入任务专用消息文件后运行python3 .agents/skills/git-commit/scripts/validate-commit-message.py \ --file message-file --mode english|bilingual5.2 提交后校验git commit之后、删除消息文件之前使用刚创建的完整哈希运行python3 .agents/skills/git-commit/scripts/validate-commit-message.py \ --commit full-commit-hash --expected-file message-file --mode english|bilingual该校验器--expected-file参数要求提交到 Git 中的真实消息与消息文件逐字一致校验失败时保留消息文件、报告 commit hash 和具体错误且不自动 amend。5.3 校验器到底检查什么从脚本源码可以看到一组确定性很强的规则ALLOWED_TYPES、HEADER_PATTERN、ENGLISH_BODY_LABELS等常量标题必须是type(scope): subject形式且 type 在 11 个合法值内subject 恰好一行、不超过 80 字符每个语言区块恰好 3 个正文段段首标记必须按序且标记后紧跟非空内容必须包含内容紧跟其后含前导空格也判失败bilingual 模式必须恰好 1 条 70 连字符分隔线且前后各恰好一个空行两个语言区块的type/scope/breaking签名必须一致英文 subject 不得含汉字且必须含英文中文 subject 必须含汉字提交信息中禁止 Markdown 代码围栏BREAKING CHANGE:footer 必须是区块最后一段References:段至多一个、标题必须精确、条目必须满足 URL 格式且去重。配套测试 test_validate_commit_message.py 对上述每一条都构造了正反用例例如2 段或 4 段正文报错、69 个连字符报错、重复 URL 报错、提交信息与预期文件不一致报does not match等是理解回执格式约束最直接的参考。六、回执在整个提交流程中的位置回执并非孤立文档而是 Easydict 仓库 git-commit 技能 的最终交付物。其主流程为起草提交信息时读取提交信息契约在主对话以text代码围栏展示完整消息仅预览到此结束确认模式等待批准完成唯一暂存支持已有索引直接提交、git add -- selected-paths或根目录git add .三种场景且自动提交场景禁止git add .并复验 staged paths 与 raw patch 完全一致将预览内容写入任务专用消息文件用校验器检查再git commit -F message-file用新建完整 hash 执行提交后一致性校验失败则保留消息文件不 amend不声称交付完成校验通过后删除消息文件读取统计与提交回执根据 Git 真实结果交付需要看完整示例时读取完整提交回执示例。此外当submit-pr或worktree-rebase-merge等组合工作流需要任务分支名时仓库还有一份分支命名规范根据提交信息契约选择最窄的 Angular type将摘要转为小写 kebab-case 形成type/kebab-case-summary并用git check-ref-format --branch验证字面分支名返回候选名不授权任何 Git 写操作。七、实践要点与边界回执数据永远以 Git 与脚本的真实输出为准示例中的数值如5 | 68 | 15 | 53只是格式演示必须在实际提交后替换不要跨过证据直接编造统计脚本失败或total ! code docs时宁可报告失败也不得虚构数字工作树状态只有两种合法取值干净或保留未提交变更Push在本技能边界内恒为未执行双语提交信息的中文与英文区块必须语义一致、签名一致分隔线严格 70 个连字符任何偏差都会被校验器拦截提交后校验失败属于停止条件正确动作是保留现场并报告具体阶段见 SKILL.md 的完成与停止条件而非自动扩大暂存、重试写入或 amend。这套范围校验 → 暂存复验 → 消息校验 → 提交后一致性校验 → 真实统计回执的闭环保证了每一次本地 Git 交付都能输出一份可核验、可回溯、格式统一的回执。对于希望将 Agent 提交流程规范化的团队而言示例文档、统计脚本、校验器 及其测试 构成了一个可直接复用的最小实现。赞分享桌面应用AI 应用【免费下载链接】Easydict一个简洁优雅的词典翻译 macOS App。开箱即用支持离线 OCR 识别支持有道词典 苹果系统词典 苹果系统翻译OpenAIGeminiDeepLGoogleBing腾讯百度阿里小牛彩云和火山翻译。A concise and elegant Dictionary and Translator macOS App for looking up words and translating text.项目地址https://gitcode.com/gh_mirrors/ea/Easydict点击查看免费下载相关推荐Easydict 仓库 Git 提交回执与变动统计指南git-commit Skill 的统计脚本与回执规范解析Easydict 仓库 Git 提交回执与变动统计指南git commit Skill 的统计脚本与回执规范解析 Git 提交完成后如何向用户交付一份可核验桌面应用AI 应用Easydict 仓库 git-commit Skill 深度解析基于 Angular 规范的可验证本地 Git 提交流程Easydict 仓库 git commit Skill 深度解析基于 Angular 规范的可验证本地 Git 提交流程 本文以 Easydict 仓库中桌面应用AI 应用Easydict Agent 提交结果统一报告基于 Git numstat 的确定性统计与回执契约实践Easydict Agent 提交结果统一报告基于 Git numstat 的确定性统计与回执契约实践 导读 本文围绕 Easydict 仓库中一次面向 Ag桌面应用AI 应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考