关于 GitHub Copilot 的三种模式——Ask 模式、Edit 模式和 Agent 模式的介绍。

Ask 模式 是三种模式中最简单的一种,适合快速获取编程问题的答案。开发者可以高亮代码并输入问题,Copilot 会生成回答,解释代码功能、提供建议或给出代码片段,但不会修改代码。这种模式适合需要快速解决疑问、获取灵感或学习新知识的场景,比如查询如何使用某个库或优化 SQL 查询。

Edit 模式 则更进一步,允许开发者通过自然语言描述对项目中的文件进行修改。开发者可以高亮代码块并输入指令,如“添加错误处理”或“使用 async/await 重构”,Copilot 会根据指令生成代码修改建议,但不会自动保存,需要开发者确认。这种模式适合对现有代码进行精确修改、重构或优化,同时保留开发者的控制权。此外,开发者还可以通过自定义指令来指导 Copilot 的修改风格和偏好,使其更符合团队的编码规范。

Agent 模式 是最强大的一种,它可以根据开发者提供的高级指令自主规划任务步骤,选择文件、运行工具或终端命令,并自动迭代代码修改。这种模式适合需要进行大规模代码修改、构建新功能或修复复杂问题的场景。Agent 模式能够分析整个项目,识别并应用相关变更,保持代码一致性。它还可以通过自定义指令来遵循项目的特定规则和风格,从而提高任务的准确性和效率。不过,Agent 模式可能会让一些开发者感到需要放弃一定的控制权,因为它会自动应用更改,而不是等待明确的批准。

对于资深开发者而言,Agent 模式并非总是最佳选择。在处理需要精细操作的代码时,Ask 模式或 Edit 模式可能更为合适。资深开发者可以通过清晰的指令和自定义规则来引导 Agent 模式,使其更好地服务于复杂的项目。自定义指令可以帮助 Copilot 理解项目的结构、设计原则和代码风格,从而提供更精准的建议和修改。

建议开发者尝试不同的模式,根据具体任务选择合适的工具。Ask 模式适合快速获取答案,Edit 模式适合精确修改,而 Agent 模式则适合需要自主执行任务的场景。无论选择哪种模式,开发者都应该仔细检查代码更改,确保其符合预期。

#Github #Copilot #AI #Agents

Copilot ask, edit, and agent modes: What they do and when to use them

GitHub 问题搜索现在支持嵌套查询和布尔操作符: 我们是如何(重新)构建它的

GitHub Issues 搜索功能的重大更新,支持嵌套查询和布尔运算符。这一功能的实现面临诸多挑战,包括确保与现有搜索的向后兼容性、在高查询量下维持性能以及为嵌套搜索打造用户友好体验。

Github 团队阐述了新搜索功能的工作原理。GitHub Issues 搜索现在支持在所有字段中使用逻辑 AND/OR 运算符,并且能够嵌套查询项。例如,is:issue state:open author:rileybroughten (type:Bug OR type:Epic) 可以找到所有处于开放状态、由 rileybroughten 创建且类型为 bug 或 epic 的问题。为了实现这一功能,GitHub 团队重写了 IssuesQuery 搜索模块,替换成新的 ConditionalIssuesQuery 模块,以支持嵌套查询并兼容现有查询格式。

从技术架构和实现角度来看,搜索过程分为三个阶段:解析(Parse)、查询(Query)和规范化(Normalize)。在解析阶段,用户输入的搜索字符串被解析成一个更易于处理的中间结构,如列表或树。新版本中,GitHub 团队使用了抽象语法树(AST)来处理嵌套查询,并通过 parslet 解析库定义了支持新旧查询语法的语法规则。在查询阶段,中间结构被转换为 Elasticsearch 能够理解的查询文档,并执行查询以获取结果。新版本通过递归遍历 AST 来构建等效的 Elasticsearch 查询文档,利用 Elasticsearch 的布尔查询功能实现 AND、OR 和 NOT 运算符。

在实施过程中,GitHub 团队考虑了多个关键因素。首先,确保向后兼容性至关重要,因为许多用户会保存、共享搜索链接或在文档中引用搜索结果。为此,团队进行了广泛的测试,包括单元测试和集成测试,并在生产环境中通过暗启动(dark-shipping)的方式验证新系统的正确性。其次,防止性能下降也是关键。团队通过运行新旧系统查询的对比测试,确保复杂嵌套查询不会导致性能下降。此外,为了保持用户体验,团队限制了查询的嵌套层级为五层,并在用户界面中提供了直观的提示和自动完成功能。

GitHub 团队还采取了逐步推广的策略,最初仅在 GraphQL API 和仓库的 Issues 选项卡中集成新系统,随后根据反馈逐步扩展到其他功能区域。通过内部测试和与可信合作伙伴的合作,团队收集了用户反馈并优化了功能。

#Github #Issue #新特性

GitHub Issues search now supports nested queries and boolean operators: Here's how we (re)built it

正确编写文档:开发人员指南

文档编写对于项目开发至关重要,良好的文档能够提升团队协作效率、加速新成员入职流程以及促进项目的广泛采用。