尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Easydict 智能发布 Skill 深度解析:Release Notes 编排、Issue 跟进与幂等恢复

Easydict 智能发布 Skill 深度解析:Release Notes 编排、Issue 跟进与幂等恢复 桌面应用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 仓库在 .agents/skills/release-easydict/ 下维护了一个仓库专用的智能发布 Skillrelease-easydict它把构建、公证、Git、appcast 与 GitHub Release这类确定性工作继续交给现有 shell 发布脚本而把整理英文 Release Notes、挑选重点标题、判断 issue 是否被完整解决并跟进这类需要语义判断的工作提升到 Agent 编排层。阅读本文后你将掌握该 Skill 的完整动作路由、授权边界、内容决策契约、issue 两道决策门、幂等通知与失败恢复机制以及对应的离线测试与文档组织方式。本文以 2026-08-23-release-easydict-skill.md 与对应执行计划 2026-08-23-release-easydict-skill.md 为核心骨架辅以 Skill 的 SKILL.md、三份 reference 文档和 scripts/ 下的确定性 helper 源码逐层展开。背景与设计意图为什么需要一个智能发布 SkillEasydict 的发布链路原本由scripts/release/下的 shell 脚本承担职责覆盖构建、公证notarization、Git 引用管理、appcast 更新和 GitHub Release 创建。这类脚本适合处理确定性流程却难以胜任两类需要语义判断的工作英文 Release Notes 整理把上个版本以来的已合并 PR 组织成简洁英文正文生成重点发布标题同时严格保留 GitHub 的 PR 作者、编号、链接、New Contributors 与 changelog 比较范围Issue 完成度判断一个 PR 是否真的解决了某个 issue、是否应该在该版本发布后通知并关闭它不能靠标题相似度或关键词猜测而需要结合 PR 改动、issue 状态与可复现证据逐条决策。因此设计意图非常明确见 执行计划 的任务契约与决策记录现有发布脚本保持执行引擎角色skill 在 Draft 与 publish 之间编排内容在 publish 成功后编排 issue 跟进。弱引用只提供候选、不直接授予关闭权限只有真实目标且被当前 Release 完整解决的 issue才能在远程发布验证成功后收到评论并被关闭。这个 Skill 的四个核心关键词是可发现动作路由清晰、可恢复resume 机制、幂等重复执行不重复评论或关闭、人工边界远程写入必须显式授权。动作路由一个命令入口多个语义动作Skill 的入口 SKILL.md 把发布生命周期划分为五个核心动作外加已发布版本的日志修订动作和发布后的 Issue 跟进动作动作语义完成条件draft version创建或恢复经过验证的 Draft整理英文正文和重点标题然后停止Draft、Tag、临时发布分支、changelog 与正文哈希全部验证后才完成不发布也不处理 Issuedraft version --replace-draft从已同步并提交的本地dev安全重建最新且匹配的未发布 Draft只有用户明确要求废弃并重建时使用且不得同时传--build-numberpublish version整理已有且经过验证的 Draft发布并验证随后运行内部 Issue 跟进的apply行为Release、appcast、Git 引用和 Issue 跟进都得到最终核验后才完成release version依次执行本 Skill 的draft与publish始终由 Skill 编排两阶段不直接调用仓库脚本的一次性releaseresume version-or-run-id使用现有 Skill 和 ASC 状态只继续未完成的 Release 生命周期阶段只恢复未完成阶段不启动新的替换或发布sync-notes version读取人工修改后的changelog/version.md预览并仅在显式--execute时同步已发布 GitHub Release 正文与远程main/dev的 appcast 及本地分支默认只预览不重建产物、不改 Tag/附件/版本号也不替代resumeissue-followup plan\|apply\|resume version发布后的 Issue 跟进三阶段见下文专节其中两个容易混淆的resume需要特别说明resume恢复ASC 发布工作流issue-followup resume恢复Issue 跟进前者不会把新的 changelog 自动传播到已发布 Release。sync-notes是独立于发布生命周期的日志修订同步工具——发布完成后人工改了 changelog不要重新跑resume/draft/publish而应使用sync-notes。动作路由背后的状态边界draft生成、验证并提交 appcast 后只推送指向 appcast 提交的临时分支release/sync-version和指向版本提交的版本 Tag不得把 Draft 提交直接推送到origin/dev或origin/main。publish则要求公开 Release 前完成 merge 预检公开后使用 Draft 阶段冻结的 appcast 提交安全更新本地dev再原子更新远程dev、main和临时发布分支远程验证通过后删除临时发布分支。最终main停留在 appcast 提交dev停留在包含最新开发提交和 appcast 提交的集成结果。发布失败时使用 ASC run ID 恢复不手工 rebase 或强推这些引用详见 release-workflow.md。所有发布状态统一存放在.tmp/release/version/state/下其中release-notes.json冻结版本、Markdown SHA-256、渲染器标识和 HTML SHA-256Issue 状态只使用.tmp/release/version/state/issue-followup/的 schema v3旧 schema-v1 文件保留为审计数据不自动复用、迁移或删除。授权边界什么情况下才允许写远程Agent Skill 最危险的风险点是把规划当执行。SKILL.md 的授权边界一节把权限划得很细默认只读普通规划、解释、检查或先给方案的请求保持只读不因文中提到命令就运行它本地准备动作用户明确要求运行具体版本的issue-followup plan时会查询 GitHub 并写入.tmp/release/version/state/issue-followup/下被忽略的本地状态不评论或关闭 Issue用户禁止写文件时仅查询分析远程修改白名单只有用户针对具体版本或运行明确请求draft、publish、release、Releaseresume、sync-notes version --execute、issue-followup apply或issue-followup resume时才执行远程修改sync-notes不带--execute始终保持 preview隐式授权用户明确请求publish或release后同一版本通过远程发布验证时也同时授权其内部issue-followup apply阶段——翻译、重点内容、评论或关闭已解决 Issue 不再另行请求确认。同样的原则也体现在 helper 的命令行设计中例如release_issues.py apply第一次运行不带--execute只是本地预览只有以相同输入追加--execute才会真正写远程见 issue-followup.md 的 apply 小节。发布失败时不执行 Issue 动作Issue 阶段失败时不回滚已经发布的 Release 或已完成动作而是报告可恢复状态。默认值与完成条件beta 优先、验证先行除非用户明确要求stable默认使用betachannel所有底层命令沿用同一 channeldraft只有在 Draft、Tag、临时发布分支、changelog 和正文哈希全部验证后才完成随后停止publish和release只有在 Release、appcast、Git 引用和 Issue 跟进都得到最终核验后才完成Issue 阶段失败时不回滚而是报告可恢复状态最终报告必须包含 Release URL、标题、channel、notes 路径、Issue 摘要、底层 run ID 和可恢复状态路径失败时说明准确阶段和已经发生的外部变更。内容决策英文 Release Notes 与重点标题的生成规则release-workflow.md 的内容决策一节定义了三条硬规则这也是本次 Skill 新增能力中最核心的部分1. changelog 只翻译 PR 标题保留全部元数据。每个变更条目只翻译其中由人编写的 PR 标题部分保持英文标题简洁作者、PR 链接、贡献者和比较范围保持不变。正文使用简洁英文应用统一 bot PR 过滤策略保留有效 PR 作者、链接、New Contributors 和 Full Changelog 范围。这样既得到英文发布说明又不丢失 GitHub 自动生成的author in #123结构和Full Changelog链接。2. 重点选择有严格优先级。按以下顺序选择重点 PR安全、数据丢失或崩溃修复 → 重要用户可见功能 → 重要用户可见修复 → 较小产品改进只有不存在产品变更时才选择维护项。存在用户可见功能或修复时不选择文档、生成资源、依赖升级或内部重构作为重点。3. 标题格式固定。使用version emoji type: concise English summary通常采用✨ feat、 fix、 security、 perf或 chore。这套规则在源码中有精确的落地实现release_content.py内置了标题正则模板和 emoji 映射表TITLE_PATTERN_TEMPLATE ( r^{version}\s(?Pemoji✨||||)\s r(?Ptypefeat|fix|security|perf|chore):\s\S.$ ) TITLE_EMOJI { feat: ✨, fix: , security: , perf: , chore: , }见 release_content.py 第 31-41 行helper 还会解析 PR 条目中的[#123](https://github.com/.../pull/123)与裸 PR URL校验作者、编号与链接的一致性并在更新 Draft 标题前先 preview、确认目标仍为相同 Draft 且正文与 changelog 一致后再--execute。发布说明的规范化与哈希校验release_notes.py 提供了validate、render、snapshot、verify-state、verify-release五个子命令对 changelog 做严格规范化版本必须匹配x.y.z格式文件名必须是version.md必须是合法 UTF-8、LF 行尾、无 BOM、无 NUL 字节、无 YAML front matter、非空正文做仅传输级规范化统一换行、去除单个结尾换行后计算 SHA-256HTML 渲染器被锁定为Python-Markdown/3.8.1:extra,sane_lists,easydict_bare_url其中easydict_bare_url是仓库自定义扩展负责把裸 URL 安全转为链接同时避开a/code/pre标签内部防止链接嵌套渲染器版本不一致会直接报错保证不同发布机器上的 HTML 稳定一致verify-release通过gh release view读取远端 Release校验 Tag 与版本一致、正文与本地规范化 changelog 完全一致。这套设计解决了发布链路中一个真实痛点模型遗漏或虚构 Release Notes 条目。翻译清单必须与原始 PR 集合完全一致否则校验失败同时snapshot/verify-state的组合确保 Draft 创建后 changelog 一旦漂移哈希不一致立即停止防止先创建后修改造成正文与本地源不一致。Bot PR 过滤策略release_pr_policy.py提供统一的 PR 分类规则changelog、Issue candidate、PR 通知共用同一份判定GitHub API 标记为 bot、app/dependabot、app/github-actions的 PR 被忽略不进入 changelog、New Contributors、Issue candidate 或 PR 通知其他人工 PR 即使标题为chore或依赖相关也保留。忽略时还会区分具体原因自动 star-history 资源、自动依赖更新、普通自动化 PR便于审计见 release_pr_policy.py。发布后 Issue 跟进plan → apply → resume 三阶段发布后的 Issue 处理是本次 Skill 最复杂的语义能力由 issue-followup.md 与 issue-followup-policy.md 两份 reference 联合定义由 release_issues.py 强制执行。三个动作的分工plan version重新收集 GitHub 证据并生成计划和固定汇总允许写入.tmp下被忽略的本地状态不评论或关闭 Issue。流程为捕获精确版本的已发布 Release 及其 PR 条目 → 获取每个 merged PR 的作者和 bot 标记 → 收集候选引用 → 解析 GitHub 实体并排除 PR 编号碰撞 → 逐条生成 schema-v3 决策 → 验证候选来源哈希和全部决策 → 生成plan.json与summary.mdapply version先完整执行一次最新plan冻结本批次后再评论和关闭 Issue。用户不需要提前调用独立plan旧的未执行计划也不能直接作为执行源。流程重新执行完整 plan → 将候选、决策和计划冻结为同一执行批次 → 先运行不带--execute的本地预览 → 通过后以相同输入追加--executeresume version复用中断apply的冻结候选和决策刷新当前 Issue 状态只重试尚未完成的远程动作。要求状态目录中存在 schema-v3 冻结批次不得导入或覆盖旧 schema 状态。apply和resume只有在用户明确请求具体版本或同一用户请求已经授权publish/release且版本通过远程发布验证后才允许修改 GitHub。Issue 阶段不得发布、编辑、删除 GitHub Release也不得修改 prerelease 状态。频道由 GitHub Release 实际状态确定prerelease 为beta否则为stable调用方指定的频道如果不一致必须停止。候选发现五种引用来源与 PR 实体排除只从当前 Release Notes 列出的 merged PR 收集同仓库候选见 issue-followup-policy.md 的候选发现PR 正文## 关联 Issue / Linked Issues区域中的裸#123、完整 issue URL 或owner/repo#123统一标记为linked_issue表示贡献者已明确声明关联GitHubclosingIssuesReferencesPR 正文中的完整 issue URLPR 正文或 commit message 中的owner/repo#123裸#123。实现上release_issues.py用三组正则分别匹配完整 issue URL、owner/repo#123和裸#123并通过linked_issue_ranges()把## 关联 Issue / Linked Issues标题到下一个二级标题之间的区域识别出来将该区域内的引用统一升级为linked_issue类型同一处文本已被更长模式占用时跳过短模式避免重复计数见extract_text_references与deduplicate_references。所有候选编号必须通过 GitHub issue API 解析fetch_issue调用gh api repos/{repo}/issues/{number}包含pull_request字段的实体是 PR直接排除return None。同一个 Issue 使用多种格式时只生成一个候选。模板区域外的兼容引用仍需检查是否只是编号碰撞——候选发现本身不代表关联成立。逐 PR 关联与默认解决规则每个候选 issue 必须为每个引用它的 PR 记录一种关联且每条关联都必须包含至少一个 GitHub URL 和简短证据说明不能只根据标题相似度建立关联fixesPR 的目标或实际改动解决该 issue不要求出现Fixes、Closes或Resolves关键字relatedPR 与 issue 有真实关联但只把它作为背景、相似问题、回归来源或未实现的后续需求rejected编号碰撞、引用的是其他对象或 PR 与 issue 没有真实关系。linked_issue表示贡献者已经明确声明 Issue 与 PR 相关不要求贡献者进一步区分fixes或relatedPR 目标覆盖 Issue 核心请求且无相反证据时用fixesPR 明确只把 Issue 当背景或未实现需求时用related只有编号碰撞或实际无关联时才用rejected。默认解决规则非常明确只要至少一个本次 Release 的 PR 被判为fixes该 issue 默认是resolved。以下内容都不能单独推翻默认值issue 当前是 open、closed或曾在 PR 合并后 reopenPR 使用了防御性修复workaround难以定位根因等措辞reporter 没有再次确认缺少自动化测试或 Agent 只有一般性不确定。只有以下明确反证才允许使用not_resolved且每条反证必须记录可点击的 GitHub URL 和具体说明not_resolved没有反证时校验必须失败修复合入后issue 评论或可复现实验明确证明相同问题仍然存在PR 明确说明 issue 的某个验收条件没有实现且本版本没有其他 PR 补齐修复在发布前被 revert、禁用或从最终版本移除实际改动只解决了不同问题不能覆盖该 issue 的核心请求这种情况通常还应重新检查关联是否应为related。多个 PR 可以共同完成一个 issue应综合本次 Release 中全部fixesPR。这套默认解决 有限反证的设计把 Agent 最常见的不确定性reporter 没确认、没测试、措辞保守挡在推翻决策之外只在有硬证据时才降级。决策结构与校验每个候选 issue 只生成一条决策并覆盖全部 source PR示例见 issue-followup-policy.md 的决策结构{ issue_number: 1201, source_prs: [1212], associations: [ { pr_number: 1212, relationship: fixes, evidence: [ { url: https://github.com/tisfeng/Easydict/pull/1212, summary: The merged PR restores input focus for the reported case. } ] } ], resolution: resolved, outcome: fixed, language: zh-Hans, negative_evidence: [], reason: The released PR fixes the reported focus loss. }字段约束由validate_decisions在代码层面强制执行resolution只能是resolved/not_resolved/not_applicableoutcome只能是fixed/implemented/not_applicable含fixes时必须使用resolved或not_resolved只有related/rejected时必须使用not_applicable全部为rejected的候选只进入机器审计。校验还包括决策必须覆盖每个候选 issue不多不少、source_prs必须与候选一致、每条关联必须有 GitHub URL 与摘要、resolved不允许携带反证、无fixes的决策不得使用not_resolved等见 release_issues.py 的validate_decisions。动作分类与幂等通知基于决策与 issue 当前状态动作被分为四类release_issues.py中的CLOSE_AND_NOTIFY、NOTIFY_ONLY、UNRESOLVED_RELATED以及全部rejected的无动作resolved且 issue 当前开放关闭并通知gh issue close --reason completed 版本评论resolved且 issue 当前已关闭仅通知not_resolved或只有related关联保留开放状态并说明明确原因全部为rejected不执行动作不进入用户可见汇总。幂等性由版本隐藏标记保证每条通知评论都带!-- easydict-release-notification:version:target:number --形式的 HTML 注释marker_for生成见release_issues.py。发布前冻结候选和决策发布后只允许降级不允许新增或升级 issue 动作。即使本地状态丢失resume重新运行时也会先扫描已有评论中的标记不会再次关闭发布通知后被重新打开的 issue。已有版本通知标记只阻止重复评论不阻止关闭当前开放且已解决的 issuePR 永不关闭人工无 Issue PR 发布同一套版本通知。通知文案按语言en/zh-Hans与 outcomefixed/implemented区分beta channel 还会附加前往 Easydict 设置 → 通用开启包括 Beta 版本的指引见release_comment函数。固定汇总格式无论 plan 还是 apply最终汇总都按固定顺序输出标题空分组也必须包含- 无关闭 issue 并已通知仅发通知未关闭的相关 issue无关联 issue 的 PR 通知每个可见 Issue 和 PR 都必须使用 Markdown 链接第三组必须提供来自已验证决策的具体原因。机器人 PR、编号碰撞和无关引用只保留在机器审计中人工无 Issue PR 进入第四组。这条约定保证了 Agent 报告对人和对下游消费方其他 Agent/LLM都可预测。Helper 命令实战从捕获到执行的完整命令链issue-followup.md给出了从仓库根目录执行的完整命令链以下命令中的version为实际版本号仓库以tisfeng/Easydict为例。先创建状态目录并捕获 Releasemkdir -p .tmp/release/version/state/issue-followup python3 .agents/skills/release-easydict/scripts/release_content.py capture \ --repo tisfeng/Easydict \ --version version \ --output .tmp/release/version/state/issue-followup/release-content.json收集候选.agents/skills/release-easydict/scripts/release_issues.py collect \ --repo tisfeng/Easydict \ --version version \ --content .tmp/release/version/state/issue-followup/release-content.json \ --output .tmp/release/version/state/issue-followup/candidates.json按照决策策略生成decisions.json外层格式为{ schema_version: 3, source_sha256: copy from candidates.json, decisions: [] }验证决策.agents/skills/release-easydict/scripts/release_issues.py validate \ --candidates .tmp/release/version/state/issue-followup/candidates.json \ --decisions .tmp/release/version/state/issue-followup/decisions.json生成计划和汇总.agents/skills/release-easydict/scripts/release_issues.py plan \ --repo tisfeng/Easydict \ --version version \ --candidates .tmp/release/version/state/issue-followup/candidates.json \ --decisions .tmp/release/version/state/issue-followup/decisions.json \ --plan .tmp/release/version/state/issue-followup/plan.json \ --summary .tmp/release/version/state/issue-followup/summary.md预览和执行使用相同参数只有第二次追加--execute.agents/skills/release-easydict/scripts/release_issues.py apply \ --repo tisfeng/Easydict \ --version version \ --candidates .tmp/release/version/state/issue-followup/candidates.json \ --decisions .tmp/release/version/state/issue-followup/decisions.json \ --plan .tmp/release/version/state/issue-followup/plan.json \ --summary .tmp/release/version/state/issue-followup/summary.md \ --state .tmp/release/version/state/issue-followup/actions.jsonresume保留冻结输入并重新运行上述apply --execute。helper 会跳过已有版本通知但仍会关闭当前开放且已解决的 Issue。整个链路的数据流是release-content.json已发布 Release 和精确 PR 条目→candidates.jsonPR 作者、bot 分类、引用、Issue 和评论快照→decisions.json逐 Issue 的关联和解决决策→plan.json确定性执行批次→actions.json逐 Issue 和 PR 的远程动作进度。每一环都带source_sha256/plan_sha256完整性校验collect会先验证release-content.json的哈希与仓库/版本匹配validate要求decisions.json的source_sha256与候选快照完全一致plan生成后再固化plan_sha256——这保证从证据到动作的每一步都是可审计、可复现的。失败与恢复每一类失败都有明确出路release-workflow.md 的失败与恢复一节定义了逐场景的恢复路径changelog 缺失、未提交、哈希漂移、渲染器版本不匹配或远端正文不一致时停止已经创建的 GitHub Release 保持 Draft 状态--replace-draft构建或公证失败时不修改旧的远程 Draft 和 Tag未完成的替换只使用 ASC run ID 恢复发布失败时不执行 Issue 动作并使用 ASC run ID 恢复Publish merge 冲突、本地devcheckout 不干净或 lease 竞态失败时保留集成 worktree 和state/publish-git.env解决根因后使用 ASC run ID 恢复Issue 跟进失败时不回滚已经发布的 Release、评论或 Issue 关闭操作报告发布成功但 issue 后续处理未完成并使用$release-easydict issue-followup resume versionsync-notes的并发安全同样值得一提--execute要求当前 worktree 干净更新 Release 时使用 ETag更新分支时使用 branch head 和 Git push lease任一并发校验失败都会停止避免覆盖他人修改。它使用临时 worktree 创建 appcast 提交原子更新远程main/dev再安全 fast-forward 本地分支只允许改变目标版本 item 的description状态摘要保存在.tmp/release/version/state/notes-sync.json部分成功后再次执行会重新读取远程状态并跳过已经一致的目标。验证体系与测试本次变更增加了17 个离线行为测试全部只使用 fixture、不触网。测试位于 .agents/skills/release-easydict/tests/覆盖test_release_notes.py、test_release_content.pychangelog 规范化、正文哈希、标题校验与 Draft 更新test_release_notes_sync.py、test_release_notes_worktree.pysync-notes的预览、执行、并发校验与 worktree 行为test_release_issues.py20 个用例数量最多的模块候选收集、引用去重、决策校验、plan 生成、apply 幂等执行、resume 恢复与固定汇总渲染test_release_appcast.py、test_release_git_flow.py、test_release_redraft.py、test_release_redraft_github.py、test_release_performance.py、test_release_github_notes.pyappcast、Git 流、Draft 重建与性能相关行为。原执行计划中的验证命令见 2026-08-23-release-easydict-skill.md 的验证一节包括python3 .../skill-creator/scripts/quick_validate.py .agents/skills/release-easydictSkill 结构校验通过python3 -m unittest discover -s .agents/skills/release-easydict/tests -p test_*.py17 个测试全部成功python3 -m py_compile ...两个 helper 和两个测试文件均通过两个 helper 的直接--help调用和可执行权限检查通过git diff --check通过未执行真实发布或 issue 远程写入——测试全部使用离线 fixture。从测试命名和 fixture 位置fixtures/release.json可以推断测试以给定发布数据 → 校验输出的确定性断言为主例如发布说明只翻译 PR 标题且保留 GitHub 元数据主标题来自真实 PR弱引用候选可验证且不把 PR 当 issue只有完整解决的 issue 才允许发布后通知重复执行不重复评论或关闭这五条验收标准都有对应用例。文档组织计划、历史与 Skill 的关系本次变更还展示了仓库的文档分层约定执行计划 2026-08-23-release-easydict-skill.md 记录任务契约、范围、风险与缓解、里程碑、决策记录和进度记录历史记录 2026-08-23-release-easydict-skill.md 以精简格式沉淀用户请求 → 变更 → 设计意图 → 验证 → 受影响文件 → 后续事项而 docs/agents/skills.md 维护全部 Agent 技能的索引。Skill 的可执行规则本体则在.agents/skills/release-easydict/下与 scripts、references、tests、assets 同目录组织方便被 Agent 在运行前一次性加载。后续事项与已知边界按原历史记录PR 模板中的显式发布目标字段按用户要求留待后续单独处理当前实现兼容已有弱关联 PR。当前 Skill 明确不包含修改 PR 模板、执行真实发布、编辑当前 Draft、评论或关闭真实 issue未授权时、改变现有 shell 发布入口语义。对于发布后的日志修订sync-notes是一个独立的只改正文工具不会重建产物、不改 Tag/附件/版本号也不替代resume——这四类动作在职责上严格隔离是理解整个发布体系的关键。总结一套可复用的语义发布编排范式release-easydictSkill 的价值不在于替代发布脚本而在于给出了一条清晰的职责分层路径确定性工作构建、公证、Git、appcast、Release 创建留在脚本层语义工作英文整理、重点选择、issue 完成度判断进入 Agent 层。其方法论要点可迁移到任何开源项目的自动化发布双层引擎脚本是执行引擎Skill 是编排层两阶段之间设人工检查点严格授权远程写入必须显式授权--execute作为统一执行门预览与执行使用相同输入证据驱动一切语义判断关联、解决、反证都必须附 GitHub URL 与说明禁止标题相似度猜测默认值偏向乐观、反证从严fixes即默认resolved只有可复现反证才降级幂等与恢复优先隐藏标记防重复评论、逐项持久化动作状态、resume只继续未完成阶段、失败不回滚已发布结果离线可测17 个 fixture 驱动的测试覆盖全部决策分支未授权时零线上写入。这套设计使得从已合并 PR 到已发布 Release 再到已闭环 Issue的整条链路可以在无人工逐项选择的情况下自动推进同时在每个可能出错的环节都留有可恢复、可审计的出路。如果你正在为自己的仓库设计 Agent 驱动的发布流程.agents/skills/release-easydict/ 的目录结构、release_pr_policy.py的统一分类、release_notes.py的哈希冻结与release_issues.py的两道决策门都是可以直接借鉴的蓝本。赞分享桌面应用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点击查看免费下载相关推荐终极免费IDM激活脚本完整指南3分钟实现永久试用期锁定终极免费IDM激活脚本完整指南3分钟实现永久试用期锁定 还在为Internet Download Manager的30天试用期到期而烦恼吗IDM激活脚本为您桌面应用AI 应用Easydict 发布自动化重构将发布后 Issue 跟进合并进 release-easydict SkillEasydict 发布自动化重构将发布后 Issue 跟进合并进 release easydict Skill 导读 本文介绍 Easydict 仓库中一次围桌面应用AI 应用Easydict 智能发布 Skill 的设计与实践从 Draft 编排到发布后 Issue 跟进的自动化工作流Easydict 智能发布 Skill 的设计与实践从 Draft 编排到发布后 Issue 跟进的自动化工作流 本文以 Easydict 仓库的 relea桌面应用AI 应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表