新闻详情

新闻详情

首页 / 资讯中心 / 详情

Dart SDK 实战:使用 Agent Skill 系统性识别与关闭 Analysis Server 过时 Issue

发布时间:2026/9/25 4:24:05来源:尧图网络
Dart SDK 实战:使用 Agent Skill 系统性识别与关闭 Analysis Server 过时 Issue
编程语言编译器语言运行时标准库开发工具【免费下载链接】sdkThe Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.项目地址https://gitcode.com/gh_mirrors/sdk1/sdk点击查看免费下载导读在dart-lang/sdk这样的大型开源仓库中随着 Analysis Server 与 Analyzer 的持续演进数以千计的历史 Issue 中混杂着已被修复、已被新特性取代、或长期无人复现的陈旧条目。本指南以仓库中开箱即用的 Agent Skill —— closing-obsolete-issues/SKILL.md 为主体完整讲解其搜索候选 → 预资格审查 → 逐条验证 → 草拟评论 → 人工审批 → 执行关闭的五步闭环流程并深度展开其配套的 9 条关闭理由矩阵、预资格护栏与ghCLI 命令。读完本文你将掌握一套可复制的、数据驱动且可审计的 Issue 清理方法论既能准确关闭过时条目又能守住不得误杀仍然有效的 Bug这一安全底线。一、技能背景为什么需要关闭过时 Issue专项流程Dart SDK 仓库中的 Analysis Server含 Analyzer 与 Linter是高频迭代的组件其 Issue 库天然存在三类僵尸条目已被修复但未自动关闭Bug 被 Gerrit CL 修复后由于提交信息未附带Closes: #xxx等关键字Issue 残留为打开状态已被新特性取代请求的功能后来被 Dart 语言新特性Records、Patterns、Null Safety 等或 LSP 标准能力原生解决信息不足/版本过旧缺少复现步骤或仅在早已淘汰的 SDK 版本上出现。该 Skill 的价值在于把人工逐条点开 Issue的低效劳动转化为基于gh搜索、预资格护栏、源码核验、结构化 JSON 输出的流水线并强制要求 Agent 在动任何评论/关闭命令前获得用户显式审批从而兼顾效率与可审计性。该 Skill 位于 pkg/analysis_server/.agents/skills/ 目录与implement-a-lint、improve-performance-with-session-log等技能并列共同构成 Analysis Server 维护的 Agent 工具集。二、Step 1识别目标 Issue候选筛选第一步的目标是拉取一批最可能过时的候选核心手段是 GitHub CLI 的搜索语法。2.1 基础搜索命令# 带 type-bug 标签的搜索 gh issue list --repo dart-lang/sdk \ --search label:area-devexp is:open label:type-bug -label:verified-by-an-agent sort:created-asc \ --limit 50 | cat # 不带 type-bug 标签的搜索 gh issue list --repo dart-lang/sdk \ --search label:area-devexp is:open -label:verified-by-an-agent sort:created-asc \ --limit 50 | cat要点拆解查询片段作用label:area-devexp限定 Analysis Server开发者体验相关 Issue 的标签域is:open只取打开状态的 Issuelabel:type-bug可选进一步收窄到 Bug 类型-label:verified-by-an-agent排除已被 Agent 验证仍有效的条目-label:closed-by-an-agent排除已被 Agent 关闭的条目sort:created-asc按创建时间升序优先看最老的 Issue--limit 50至少拉取 50 个候选保证样本量created-asc与updated-asc两种排序都可使用前者锁定年代久远的条目后者锁定长期无人更新的条目二者都是过时的强信号。2.2 效率过滤器去重在深入调查任何候选之前必须先读取跟踪文件 references/investigated_issues.txt。该文件逐行记录已调查且确认仍有效、因此保持打开的 Issue 编号。候选名单中凡是已出现在该文件里的编号直接跳过避免重复劳动。从仓库中该文件的实际内容可以看到它已积累了 70 个被验证仍有效的 Issue如23037、24562、28741、57387等这些条目都是后续轮次清理时必须避开的已知有效区。三、Step 2调查状态预资格护栏 深度核验候选 Issue 不能直接进入过时判定必须先过预资格护栏Pre-Qualification Guardrails再结合源码逐条核验。3.1 三条预资格护栏命中即中止评估对任一候选 Issue只要满足以下任一条立即终止评估并保持 Issue 打开近期活跃过去 365 天内有任何用户评论或状态变更优先级/里程碑带有高优先级标签如P0、P1、critical或已分配至活跃里程碑企业/团队兴趣过去 2 年内有 Dart/Flutter 团队成员参与讨论或提供了复现步骤。这三条护栏的本质是不确定就先别动近期活跃意味着问题可能仍在被跟踪高优先级与里程碑意味着官方有排期团队成员介入则代表其仍有价值。3.2 获取 Issue 完整视图通过随技能附带的脚本获取 Issue 及其全部评论的完整信息./scripts/fetch_issue_details.sh issue_number该脚本实现在 scripts/fetch_issue_details.sh 中其内部调用gh issue view $ISSUE_NUMBER --repo dart-lang/sdk \ --json number,title,author,createdAt,labels,body,comments -t ...并以固定的模板格式输出标题、作者、创建时间、标签、正文以及--- ALL COMMENTS ---段落的全部评论含每条评论的作者与时间戳确保 Agent 在做出判断前掌握完整上下文。3.3 源码核验与安全规则拿到 Issue 内容后将其诉求与仓库当前代码状态比对搜索代码库中与该 Issue 相关的引用可用grep、ripgrep或环境提供的搜索工具查找可能已修复但未自动关闭 Issue 的 Gerrit CL可借助read_gerrit_cl技能检查补丁集与评论该技能与本文技能同位于.agents/skills/目录对照 references/rationale_templates.md 中的 9 条关闭理由进行逐条验证。安全规则Skill 原文反复强调绝不能因为代码变了或Issue 很久没更新就假设 Bug 已修复或过时。必须核实具体 Bug 行为在当前代码上是否仍然可能发生。没有活动的 Bug 报告或功能请求不能仅因老旧或无人问津而关闭 —— 不活跃本身并不使一个有效的 Bug 报告或功能请求失效。四、Step 3草拟评论关闭候选 vs 仍然有效双轨分治这是整个流程的关键任务CRITICAL MANDATE分两条路径处理。4.1 路径 A关闭候选的评论对判定为可关闭的 Issue逐条起草评论解释为什么关闭措辞可参考 references/rationale_templates.md 的模板。每条评论必须以固定结尾收束If there is more work to do here, please let us know by filing a new issue with up to date information. Thanks!这一结尾为原报告人保留了重新提交最新信息的通道体现了关闭操作的负责任姿态。4.2 路径 B仍然有效 Issue 的评论若确认 Bug 在当前HEAD上仍可复现起草评论确认该 Bug 在最新 SDK 的HEAD上依然可复现构造最小、自包含的 Dart 复现代码或按照 tests 目录中既有测试模式编写正式的 Dart 单元测试用例将复现代码/测试用例一并写入评论帮助开发者定位修复结尾限制不得以关闭式结尾收束不写请重新提交新 Issue之类的话因为该 Issue 将继续保持打开。4.3 结构化 JSON 输出评审与审批的关键载体对每个被评估的 Issue必须按以下 JSON 格式产出评估结果供协调 Agent 或人工主管解析、校验与审批{ issue_number: 12345, issue_url: issue-url, eligible_for_close: true, matched_rationale_id: 1, confidence_score: 0.95, verification_finding: Verified that standard LSP protocol capabilities natively handle the requested server configuration., proposed_comment: [Full proposed comment including the mandatory footer] }字段含义字段说明issue_numberIssue 编号issue_urlIssue 的 URL用于人工复核跳转eligible_for_close是否具备关闭资格布尔值matched_rationale_id命中的关闭理由编号对应第 5 节矩阵confidence_score置信度0~1供审批者评估可靠性verification_finding核验结论说明在源码/配置中如何验证了该结论proposed_comment完整拟发表的评论全文含强制结尾4.4 用户审批红线在执行任何评论 Issue或关闭 Issue的命令之前必须将两组结果可关闭候选及其评论草稿、仍有效候选及其确认评论与复现代码提交给用户并获得显式批准。可以直接将上述 JSON 结果呈现给用户审阅。这一红线使整个清理动作具备完整的人工问责链。五、深度展开9 条关闭理由矩阵Rationale Templatesreferences/rationale_templates.md 定义了九类可验证的关闭理由。每条理由都包含判定标准Criteria、验证方式Verification与评论模板缺一不可。#理由判定标准验证方式1被新的 Analysis Server 特性取代请求的功能新命令行选项、诊断视图、自定义能力、格式化/插件行为已被现代 Analysis Server 或标准 LSP 能力原生支持在 analysis_server.dart、lib/src/lsp/或服务器 CLI 选项中搜索确认2被现代 Dart 语言特性取代请求的分析修复/简写语法已被 Extension Methods、Records、Patterns、Null Safety、Dot Shorthands、Primary Constructors 等原生解决对照 Dart 2.x/3.x 语言规范交叉核验注意 Analysis Server 支持向下兼容至 Dart 2.12NNBD 等特性为默认前提3过时的功能请求标记为type-enhancement/type-feature创建超 3 年且社区点赞数为 0、近 2 年无评论计算当前年份 - 创建年份 3且Upvotes 0且近2年评论数 04不可复现 / 遗留 SDK 版本 BugBug 仅出现在高度过时的 SDK 版本上与 tools/VERSION 中的基线版本对比报告版本须早于最近 4 个稳定小版本当前仓库为 Dart 3.14 / main 渠道5信息不足死胡同缺少复现步骤/代码片段/日志且维护者请求信息已超 90 天而无作者回应检查是否存在needs-info标签或维护者提问后作者静默超 90 天6遗留 JSON 协议专属问题请求/报告仅适用于旧 Analysis Server JSON 协议与 LSP 无关核实问题绑定旧协议且该行为在 LSP 中已原生处理或绕过。安全规则不得无差别关闭遗留协议问题严重 Bug 必须保持打开仅当行为在 LSP 中已标准解决且非关键时方可提议关闭7已弃用/移除的 Lint 规则或诊断涉及的 lint 规则或诊断代码已被弃用、退役或并入其他规则在 pkg/linter 或 pkg/analyzer 中确认规则不存在或已显式标记弃用8已在 SDK 仓库之外的上游解决根因属于 IDE 扩展客户端封装层如 VS Code Dart/Flutter 扩展、IntelliJ Dart 插件而非核心 Analysis Server检查问题描述是否完全依赖特定编辑器的 UI 行为9代码路径被重构静默修复Bug 指向的子系统经历了完整架构重写核验原 Issue 中提到的文件路径或组件在当前分支已不存在每条理由都附有可直接套用的评论模板例如理由 1 的模板为This feature request is now natively supported by modern Analysis Server capabilities (such as [Insert modern server option or capability]). Since the requested behavior is fulfilled by existing features, we are closing this. Thanks!这些模板确保不同 Agent 轮次产出的评论风格统一、措辞专业。六、Step 4学习循环知识沉淀如果调查过程中发现了rationale_templates.md中尚未覆盖的全新关闭理由类别应更新该参考文件将其补充进去。这正是该技能越用越聪明的设计每一次清理会话都可能沉淀新的模式化理由使理由矩阵随仓库演进持续生长形成闭环的知识积累。七、Step 5执行与汇总获得用户审批后进入执行阶段。7.1 关闭候选的执行# 发布评论并关闭 Issue-c 表示同时发表评论 gh issue close number --repo dart-lang/sdk -c comment # 打上已被 Agent 关闭标签 gh issue edit number --repo dart-lang/sdk --add-label closed-by-an-agent7.2 仍有效 Issue 的执行# 发布包含最小复现/测试用例的确认评论 gh issue comment number --repo dart-lang/sdk -b comment # 打上已被 Agent 验证标签 gh issue edit number --repo dart-lang/sdk --add-label verified-by-an-agent7.3 更新跟踪文件凡是判定为**仍然有效保持打开**的 Issue 编号必须追加到 references/investigated_issues.txt每行一个编号。注意规则不要记录已关闭的 Issue —— 它们已被is:open过滤掉无需进入跟踪文件。该文件只服务防止重复调查仍有效条目这一目的。7.4 汇总汇报最后以简洁的项目符号列表向用户汇报本次关闭了哪些 Issue、对哪些仍然有效的 Issue 进行了评论/更新。八、Tips 与最佳实践Skill 末尾给出了三条贯穿全程的操作建议善用代码搜索工具使用文件与内容搜索工具grep、ripgrep或环境相关搜索工具检查当前代码库中与 Issue 相关的引用和代码追踪相关 Gerrit CL寻找可能已修复该问题但未自动关闭 Issue 的 Gerrit CL检查其补丁集差异与评论始终以 HEAD 上的主动验证为最高优先无论 Issue 多老、指明哪个版本在提议关闭前必须针对当前HEAD研究与复现报告的问题。绝不能仅凭时间流逝或版本差异就假设 Bug 已过时或已修复若无法复现必须在评论中清晰说明在当前代码库上的复现尝试细节。九、与仓库源码的呼应为什么这套核验路径可行本文技能中的验证动作之所以可落地是因为其指向的代码实体都真实存在于当前仓库LSP 服务器实现LspAnalysisServer类实现在 lsp_analysis_server.dart1417 行基类AnalysisServer实现在 analysis_server.dart1543 行。验证某功能是否已被 LSP 原生支持时可直接检索lib/src/lsp/目录下的能力计算器server_capabilities_computer.dart与各 handler遗留协议对照legacy_analysis_server.dart的存在印证了理由 6 所讨论的旧 JSON 协议确实仍以独立实现形态存在核验时可在 LSP 与 legacy 两侧分别检索版本基线tools/VERSION 明确当前为CHANNEL main、MAJOR 3、MINOR 14这正是理由 4 中对比最近 4 个稳定小版本判定过期 SDK 版本的依据Lint 规则核验理由 7 的验证目标 pkg/linter 与 pkg/analyzer 均为仓库内真实存在的包测试范式参考tests/ 与 pkg/analysis_server/test/ 中包含了大量单元测试与集成测试如get_errors_test.dart、get_hover_test.dart等为构造最小复现/正式测试用例提供了可直接遵循的模式。由此该技能形成了一条完整证据链gh 搜索定位 → 预资格护栏过滤 → 脚本拉取全量上下文 → 仓库源码/配置核验 → 理由矩阵匹配 → JSON 结构化产出 → 用户审批 → 命令执行 → 知识沉淀确保每一次关闭都有据可查、可追溯、可复现。十、适用前提与边界说明本技能面向dart-lang/sdk仓库的 Analysis Server、Analyzer、Linter 组件 Issue搜索命令中的--repo dart-lang/sdk与label:area-devexp均不可省略所有gh命令依赖 GitHub CLI 已登录并具备对该仓库的读取以及执行阶段的评论/关闭权限关闭操作必须严格遵守先审批后执行红线且仍有效判定需以当前HEAD的真实复现尝试为依据而非时间推断。赞分享编程语言编译器语言运行时标准库开发工具【免费下载链接】sdkThe Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.项目地址https://gitcode.com/gh_mirrors/sdk1/sdk点击查看免费下载相关推荐Dart SDK Analysis Server 过时 Issue 关闭指南Rationale 评估矩阵与 Agent 实战流程Dart SDK Analysis Server 过时 Issue 关闭指南Rationale 评估矩阵与 Agent 实战流程 导读 本文以 dart l编程语言编译器语言运行时标准库开发工具Dart SDK Analysis Server 插件启用指南通过 analysis_options.yaml 配置 Analyzer 插件Dart SDK Analysis Server 插件启用指南通过 analysis_options.yaml 配置 Analyzer 插件 导读 本文以 D编程语言编译器语言运行时标准库开发工具Analysis Server 性能基准测试实战指南运行、CI 守护与新增基准Dart SDKAnalysis Server 性能基准测试实战指南运行、CI 守护与新增基准Dart SDK 本指南以 pkg/analysis_server/benc编程语言编译器语言运行时标准库开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Miniconda vs Anaconda:虚拟环境管理与PyTorch CUDA配置实战 2026/9/25 4:54:42

Miniconda vs Anaconda:虚拟环境管理与PyTorch CUDA配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
STM32F407移植FreeRTOS与LwIP:从CubeMX配置到TCP通信实战 2026/9/25 4:54:42

STM32F407移植FreeRTOS与LwIP:从CubeMX配置到TCP通信实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
从AI对话Demo到可演进Agent平台:架构设计与工程实践 2026/9/25 4:54:42

从AI对话Demo到可演进Agent平台:架构设计与工程实践

开篇:从 AI 对话 Demo 到可演进的 Agent 平台这两年 AI 圈最热闹的词,一个是“AI”,一个是“Agent”。市面上 Demo 满天飞,今天一个聊天机器人,明天一个自动写周报的工具,后天又冒出个能帮你订机票的智能体…

阅读更多 →
TypeDoc @include 与 @includeCode 标签实战指南:在文档注释中嵌入外部文件、代码区域与行号片段 2026/9/25 4:54:30

TypeDoc @include 与 @includeCode 标签实战指南:在文档注释中嵌入外部文件、代码区域与行号片段

开发工具文档 【免费下载链接】typedoc Documentation generator for TypeScript projects. 项目地址: https://gitcode.com/gh_mirrors/ty/typedoc 点击查看 免费下载 TypeDoc 的 {include} 标签族允许你在 TSDoc 文档注释或外部 Markdown 文档中直接嵌入仓库里的…

阅读更多 →
LTSPICE参数变量与参数扫描实操指南:批量仿真高效探索设计空间 2026/9/25 4:54:24

LTSPICE参数变量与参数扫描实操指南:批量仿真高效探索设计空间

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
机械仪表与自动化会议论文投稿指南:EI/Scopus检索与见刊策略 2026/9/25 4:54:24

机械仪表与自动化会议论文投稿指南:EI/Scopus检索与见刊策略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉