《通过 GitHub Secure Code Game 提升你的代码安全技能 》
GitHub 在其官方博客中宣布,现已推出 Secure Code Game 第二季,为开发者提供一种新颖的方式,通过游戏化的挑战提高代码安全技能。Secure Code Game 是一种在代码仓库内进行的学习体验,玩家通过修复有意留下的代码漏洞来进行学习,同时享受游玩的乐趣。自 2023 年 3 月推出以来,已有超过 3,500 名开发者参与游玩。第二季为开发者带来了五个由社区贡献的挑战,覆盖了 JavaScript、Python、Go 以及 GitHub Actions。
游戏机制简介:
- 玩家通过审查代码、修复漏洞并通过测试以解锁下一关。整个环境可在云端通过 GitHub Codespaces 快速构建,每月免费提供最多 60 小时。
游戏的初衷:
- GitHub 通过游戏化的方法改善安全编码训练,克服了传统训练可能存在的多项挑战,比如枯燥的理论课程、脱离开发环境的学习方法、以及非个性化训练内容等。
社区贡献:
- 通过将游戏开源,社区成员有机会贡献内容,并参与到第二季五个挑战中的四个。
成效案例:
- 一个 PropTech 初创公司举行了基于 Secure Code Game 的首次黑客马拉松,减少了 96% 的安全问题,并显著减少了安全团队协助开发人员修复安全问题所需的时间。
- 诺维萨大学的教师在课堂中利用 Secure Code Game 进行了互动式教学,提高了知识传递的效率,让学生通过实践了解到安全不应该是事后才考虑的问题。
GitHub 鼓励更多的人参与第二季的挑战,并欢迎社区成员提出创意以形塑游戏的未来。本篇文章还包含了贡献指南和链接。现在,开发者可以开始游戏,提高自己的代码安全技能。
#Github #安全 #教程
https://github.blog/2024-02-15-build-code-security-skills-with-the-github-secure-code-game/
GitHub 在其官方博客中宣布,现已推出 Secure Code Game 第二季,为开发者提供一种新颖的方式,通过游戏化的挑战提高代码安全技能。Secure Code Game 是一种在代码仓库内进行的学习体验,玩家通过修复有意留下的代码漏洞来进行学习,同时享受游玩的乐趣。自 2023 年 3 月推出以来,已有超过 3,500 名开发者参与游玩。第二季为开发者带来了五个由社区贡献的挑战,覆盖了 JavaScript、Python、Go 以及 GitHub Actions。
游戏机制简介:
- 玩家通过审查代码、修复漏洞并通过测试以解锁下一关。整个环境可在云端通过 GitHub Codespaces 快速构建,每月免费提供最多 60 小时。
游戏的初衷:
- GitHub 通过游戏化的方法改善安全编码训练,克服了传统训练可能存在的多项挑战,比如枯燥的理论课程、脱离开发环境的学习方法、以及非个性化训练内容等。
社区贡献:
- 通过将游戏开源,社区成员有机会贡献内容,并参与到第二季五个挑战中的四个。
成效案例:
- 一个 PropTech 初创公司举行了基于 Secure Code Game 的首次黑客马拉松,减少了 96% 的安全问题,并显著减少了安全团队协助开发人员修复安全问题所需的时间。
- 诺维萨大学的教师在课堂中利用 Secure Code Game 进行了互动式教学,提高了知识传递的效率,让学生通过实践了解到安全不应该是事后才考虑的问题。
GitHub 鼓励更多的人参与第二季的挑战,并欢迎社区成员提出创意以形塑游戏的未来。本篇文章还包含了贡献指南和链接。现在,开发者可以开始游戏,提高自己的代码安全技能。
#Github #安全 #教程
https://github.blog/2024-02-15-build-code-security-skills-with-the-github-secure-code-game/
The GitHub Blog
Build code security skills with the GitHub Secure Code Game
Learn to find and fix security issues while having fun with Secure Code Game, now with new challenges focusing on JavaScript, Python, Go, and GitHub Actions!
《如何避免 repo-jacking(仓库劫持)》
文章讨论了针对开源软件可能的供应链攻击:repo-jacking(仓库劫持),解释了它是什么、存在什么风险,以及如何保护自己不受其影响。
以下是文章的核心内容:
1. Repo-jacking 是一种供应链攻击,其影响可能延伸到大量使用开源软件的用户和系统。
2. 如果你从包管理器(如 npm 或 PyPI)获取所有软件依赖,你不会直接受到 repo-jacking 的影响。但如果你直接从 GitHub 获取依赖项,就需要更加小心。
3. 防御 repo-jacking 的简单方法是锁定特定的提交ID(commit ID)。
4. GitHub 采用了一种名为“碑石算法”(tombstoning algorithm)的机制,通过永久淘汰特定的用户名和仓库名组合来减少 repo-jacking 的风险。故而,repo-jacking 只针对低于特定使用门槛的仓库构成风险。
5. GitHub上的自动重定向功能可能会增加 repo-jacking 的风险,因为重定向可能让人们不易察觉依赖已经被改名。
6. 包管理器创建了额外的保护层来对抗 repo-jacking,因为你需要获得维护者账号的访问权限来用恶意软件替换包管理器上的包。
7. 如果你或你的项目构建系统直接从 GitHub 下载软件,你需要特别小心,可以通过锁定特定的提交ID来避免 repo-jacking。
8. 作者还讲述了如何使用 GitHub API 来检查仓库是否已被重命名或替换,作为检测 repo-jacking 的一种方法。
9. 文章也提到了供应链安全中值得关注的新进展,如使用 OpenID Connect (OIDC) 安全上传构建工件到包管理器,并介绍了跨机构合作开发的软件供应链级别框架(SLSA)。
文章的结论是,尽管 GitHub 使用了碑石算法来降低因更改用户名可能导致的 repo-jacking 风险,但如果你的项目有直接从 GitHub 下载的依赖,最简单的安全保护措施是锁定特定的提交ID。
#Github #安全
https://github.blog/2024-02-21-how-to-stay-safe-from-repo-jacking/
文章讨论了针对开源软件可能的供应链攻击:repo-jacking(仓库劫持),解释了它是什么、存在什么风险,以及如何保护自己不受其影响。
以下是文章的核心内容:
1. Repo-jacking 是一种供应链攻击,其影响可能延伸到大量使用开源软件的用户和系统。
2. 如果你从包管理器(如 npm 或 PyPI)获取所有软件依赖,你不会直接受到 repo-jacking 的影响。但如果你直接从 GitHub 获取依赖项,就需要更加小心。
3. 防御 repo-jacking 的简单方法是锁定特定的提交ID(commit ID)。
4. GitHub 采用了一种名为“碑石算法”(tombstoning algorithm)的机制,通过永久淘汰特定的用户名和仓库名组合来减少 repo-jacking 的风险。故而,repo-jacking 只针对低于特定使用门槛的仓库构成风险。
5. GitHub上的自动重定向功能可能会增加 repo-jacking 的风险,因为重定向可能让人们不易察觉依赖已经被改名。
6. 包管理器创建了额外的保护层来对抗 repo-jacking,因为你需要获得维护者账号的访问权限来用恶意软件替换包管理器上的包。
7. 如果你或你的项目构建系统直接从 GitHub 下载软件,你需要特别小心,可以通过锁定特定的提交ID来避免 repo-jacking。
8. 作者还讲述了如何使用 GitHub API 来检查仓库是否已被重命名或替换,作为检测 repo-jacking 的一种方法。
9. 文章也提到了供应链安全中值得关注的新进展,如使用 OpenID Connect (OIDC) 安全上传构建工件到包管理器,并介绍了跨机构合作开发的软件供应链级别框架(SLSA)。
文章的结论是,尽管 GitHub 使用了碑石算法来降低因更改用户名可能导致的 repo-jacking 风险,但如果你的项目有直接从 GitHub 下载的依赖,最简单的安全保护措施是锁定特定的提交ID。
#Github #安全
https://github.blog/2024-02-21-how-to-stay-safe-from-repo-jacking/
The GitHub Blog
How to stay safe from repo-jacking
Repo-jacking is a specific type of supply chain attack. This blog post explains what it is, what the risk is, and what you can do to stay safe.
GitHub 宣布其新的代码自动修复功能,即 code scanning autofix,现在已经为所有 GitHub Advanced Security 客户开放公测。这个新功能由 GitHub Copilot 和 CodeQL 提供支持,可以自动修复超过 90% 的在 JavaScript、TypeScript、Java 和 Python 中发现的警报类型中的两三分之一,而且修复工作几乎不需要开发者做进一步的编码。
主旨和特点包括:
1. 自动修复愿景 :GitHub 的应用安全愿景是“发现即解决”。通过优化 GitHub Advanced Security 中的开发者体验,它已经帮助团队的修复速度比传统安全工具快 7 倍。
2. 减缓应用安全债务的增长 :尽管应用程序是主要的攻击途径之一,许多组织承认生产仓库中未修复的漏洞数量在不断增加。code scanning autofix 协助组织降低这个趋势,使开发者在编写代码的同时更容易修复漏洞。
3. 如何工作 :当在支持的语言中发现漏洞时,修复建议将包括自然语言解释和代码建议预览,开发者可以接受、编辑或忽略这些建议。
4. 多文件修改和依赖性 :除了对当前文件的更改外,这些代码建议还可以包括对多个文件的更改以及项目应添加的依赖项。
5. AI 和 CodeQL 的强化结合 :code scanning autofix 利用 CodeQL 引擎、启发式方法和 GitHub Copilot API 来生成代码建议。
6. 未来的支持和改进 :GitHub 计划未来将支持更多的编程语言,C# 和 Go 将是下一批支持的语言。同时鼓励用户加入反馈和资源讨论,共同提升 code scanning autofix 的体验。
7. 资源提供 :GitHub 提供了关于系统架构、数据流和治理 code scanning autofix AI 政策的广泛资源和文档。
结论:
GitHub 的 code scanning autofix 功能标志着在应用安全领域向“发现即修复”目标迈进的一个重大步伐。这一新工具不仅能够减少开发人员在代码修复上的时间和努力,还能让安全团队将精力集中在保护业务安全上,为快速发展的开发节奏提供支持。随着代码自动修复功能的不断完善和语言支持范围的扩大,这一工具有望帮助开发者和组织更高效地应对安全漏洞。
#Github #AI
https://github.blog/2024-03-20-found-means-fixed-introducing-code-scanning-autofix-powered-by-github-copilot-and-codeql/
主旨和特点包括:
1. 自动修复愿景 :GitHub 的应用安全愿景是“发现即解决”。通过优化 GitHub Advanced Security 中的开发者体验,它已经帮助团队的修复速度比传统安全工具快 7 倍。
2. 减缓应用安全债务的增长 :尽管应用程序是主要的攻击途径之一,许多组织承认生产仓库中未修复的漏洞数量在不断增加。code scanning autofix 协助组织降低这个趋势,使开发者在编写代码的同时更容易修复漏洞。
3. 如何工作 :当在支持的语言中发现漏洞时,修复建议将包括自然语言解释和代码建议预览,开发者可以接受、编辑或忽略这些建议。
4. 多文件修改和依赖性 :除了对当前文件的更改外,这些代码建议还可以包括对多个文件的更改以及项目应添加的依赖项。
5. AI 和 CodeQL 的强化结合 :code scanning autofix 利用 CodeQL 引擎、启发式方法和 GitHub Copilot API 来生成代码建议。
6. 未来的支持和改进 :GitHub 计划未来将支持更多的编程语言,C# 和 Go 将是下一批支持的语言。同时鼓励用户加入反馈和资源讨论,共同提升 code scanning autofix 的体验。
7. 资源提供 :GitHub 提供了关于系统架构、数据流和治理 code scanning autofix AI 政策的广泛资源和文档。
结论:
GitHub 的 code scanning autofix 功能标志着在应用安全领域向“发现即修复”目标迈进的一个重大步伐。这一新工具不仅能够减少开发人员在代码修复上的时间和努力,还能让安全团队将精力集中在保护业务安全上,为快速发展的开发节奏提供支持。随着代码自动修复功能的不断完善和语言支持范围的扩大,这一工具有望帮助开发者和组织更高效地应对安全漏洞。
#Github #AI
https://github.blog/2024-03-20-found-means-fixed-introducing-code-scanning-autofix-powered-by-github-copilot-and-codeql/
The GitHub Blog
Found means fixed: Introducing code scanning autofix, powered by GitHub Copilot and CodeQL
Now in public beta for GitHub Advanced Security customers, code scanning autofix helps developers remediate more than two-thirds of supported alerts with little or no editing.
❤2
借助 Bun 和 Typescript 实现个性化动态 Github 个人资料页面
#Github #方案
https://levix.notion.site/Bun-Typescript-Github-Dynamic-Github-profile-with-Bun-and-Typescript-0b51ae15f8c14d88b6cfeeab92d2ca14?pvs=74
#Github #方案
https://levix.notion.site/Bun-Typescript-Github-Dynamic-Github-profile-with-Bun-and-Typescript-0b51ae15f8c14d88b6cfeeab92d2ca14?pvs=74
Levix 的空间 on Notion
借助 Bun 和 Typescript 实现个性化动态 Github 个人页面 - Dynamic Github profile with Bun and Typescript | Notion
这篇博客文章指导读者如何使用 Bun 和 TypeScript 技术来动态化他们的 GitHub 个人资料。
GitHub 存在一个设计上的漏洞,允许用户访问已删除的分支、仓库甚至私有仓库的数据,并且这些数据将永久存在。这一问题被称为 Cross Fork Object Reference (CFOR) 漏洞,它发生在一个分支能够访问另一个分支的敏感数据时,包括私有和已删除的分支。用户可以通过提交哈希值直接访问他们本不应看到的提交数据。
例如,即使用户删除了自己的分支,他们提交的代码仍然可以通过原始仓库访问。此外,如果公共上游仓库被删除,GitHub 会将根节点角色重新分配给下游分支,但上游仓库的所有提交仍然存在,并通过任何分支访问。
通过 GitHub 的 API 和事件日志,即使仓库被删除,数据仍然可以被检索。GitHub 的政策文档也明确说明了这种设计。然而,这与用户对私有和公共仓库作为安全边界的普遍看法不符,用户通常认为私有仓库中的数据不会被公开访问。
为了安全地补救在公共 GitHub 仓库中泄露的密钥,唯一的方法是进行密钥轮换。同时,随着秘密扫描技术的发展,我们可能需要更加谨慎地处理不属于我们自己的秘密警报。
#Github #安全
https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github
例如,即使用户删除了自己的分支,他们提交的代码仍然可以通过原始仓库访问。此外,如果公共上游仓库被删除,GitHub 会将根节点角色重新分配给下游分支,但上游仓库的所有提交仍然存在,并通过任何分支访问。
通过 GitHub 的 API 和事件日志,即使仓库被删除,数据仍然可以被检索。GitHub 的政策文档也明确说明了这种设计。然而,这与用户对私有和公共仓库作为安全边界的普遍看法不符,用户通常认为私有仓库中的数据不会被公开访问。
为了安全地补救在公共 GitHub 仓库中泄露的密钥,唯一的方法是进行密钥轮换。同时,随着秘密扫描技术的发展,我们可能需要更加谨慎地处理不属于我们自己的秘密警报。
#Github #安全
https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github
Trufflesecurity
Anyone can Access Deleted and Private Repository Data on GitHub ◆ Truffle Security Co.
You can access data from deleted forks, deleted repositories and even private repositories on GitHub. And it is available forever. This is known by GitHub, and intentionally designed that way.
Github 正式推出 GitHub 模型:新一代 AI 工程师在 GitHub 上构建
GitHub Models 旨在使每位开发者都能成为 AI 工程师。通过提供行业领先的大型和小型语言模型,GitHub 希望简化从模型测试到生产部署的整个流程。
用户可以在 GitHub 上免费访问和测试各种模型,如 Llama 3.1、GPT-4o 及其迷你版本、Phi 3 和 Mistral Large 2 等。GitHub 与微软持续致力于保护隐私和安全,确保用户在模型 Playground 中的所有输入和输出都不会与模型提供商共享或用于训练模型。
#Github #AI
https://github.blog/news-insights/product-news/introducing-github-models/
GitHub Models 旨在使每位开发者都能成为 AI 工程师。通过提供行业领先的大型和小型语言模型,GitHub 希望简化从模型测试到生产部署的整个流程。
用户可以在 GitHub 上免费访问和测试各种模型,如 Llama 3.1、GPT-4o 及其迷你版本、Phi 3 和 Mistral Large 2 等。GitHub 与微软持续致力于保护隐私和安全,确保用户在模型 Playground 中的所有输入和输出都不会与模型提供商共享或用于训练模型。
#Github #AI
https://github.blog/news-insights/product-news/introducing-github-models/
The GitHub Blog
Introducing GitHub Models: A new generation of AI engineers building on GitHub
We are enabling the rise of the AI engineer with GitHub Models – bringing the power of industry leading large and small language models to our more than 100 million users directly on GitHub.
GitHub 推出了 Copilot Autofix,这是一个 AI 驱动的代码修复工具,旨在帮助开发者和安全团队快速修复代码中的安全漏洞,同时防止新的漏洞产生。开发者经常面临安全要求难以理解和实施的问题,而 Copilot Autofix 通过分析漏洞、解释其重要性,并提供代码建议,显著提高了修复效率。
#Github #Copilot #AI
https://github.blog/news-insights/product-news/secure-code-more-than-three-times-faster-with-copilot-autofix/
#Github #Copilot #AI
https://github.blog/news-insights/product-news/secure-code-more-than-three-times-faster-with-copilot-autofix/
The GitHub Blog
Found means fixed: Secure code more than three times faster with Copilot Autofix
With Copilot Autofix, developers and security teams can keep new vulnerabilities out of code and confidently remediate their backlog of security debt.
ALIEN 是一个基于 CUDA 的人工生命模拟程序,它利用专门的 2D 粒子引擎来模拟软体和流体。这个程序由 Christian Heinemann 主导开发和维护,旨在通过模拟来探索生物进化的条件和生物系统复杂性的增长。
#Github
https://github.com/chrxh/alien
#Github
https://github.com/chrxh/alien
GitHub
GitHub - chrxh/alien: ALIEN is a CUDA-powered artificial life simulation program.
ALIEN is a CUDA-powered artificial life simulation program. - chrxh/alien
GitHub MCP Server 是一个官方的 Model Context Protocol (MCP) 服务器,可用于自动化 GitHub 工作流和流程、从 GitHub 仓库中提取和分析数据,以及构建与 GitHub 生态系统交互的 AI 驱动工具和应用程序。支持通过 Docker 安装运行,也提供了在 VS Code 和 Claude Desktop 中的使用方法。如果用户没有 Docker,还可以使用 Go 语言从源代码构建二进制文件。
#Github #MCP
https://github.com/github/github-mcp-server
#Github #MCP
https://github.com/github/github-mcp-server
GitHub
GitHub - github/github-mcp-server: GitHub's official MCP Server
GitHub's official MCP Server. Contribute to github/github-mcp-server development by creating an account on GitHub.
GitHub Copilot 推出了一系列新功能和升级。Agent 模式 和 MCP(Model Context Protocol)支持现已向所有 VS Code 用户推出。Agent 模式能够将用户的指令转化为代码操作,支持终端命令建议和运行时错误自我修复等功能。GitHub Copilot 还发布了新的 GitHub MCP 服务器,允许开发者将 GitHub 功能添加到任何支持 MCP 的 LLM 工具中。
GitHub Copilot 推出了新的 Pro+ 计划,为个人开发者提供每月 1500 次高级请求和对最新模型(如 GPT-4.5)的访问权限,价格为每月 39 美元。此外,Copilot Pro 用户将从 2025 年 5 月 5 日起每月获得 300 次高级请求,Copilot Business 和 Copilot Enterprise 用户将分别从 2025 年 5 月 12 日至 19 日起获得每月 300 次和 1000 次高级请求。用户还可以选择按需购买额外的高级请求,每次请求费用为 0.04 美元起。
GitHub Copilot 的 代码审查功能现已正式发布,过去一个月的预览期间已有超过 100 万开发者在 GitHub 上使用该功能。此外,“下一步建议”功能 也已正式推出,帮助开发者通过快捷键快速完成代码编辑。
GitHub Copilot 的 Agent 模式支持多种语言模型,包括 Anthropic Claude 3.5、3.7 Sonnet、Google Gemini 2.0 Flash 和 OpenAI GPT-4o。用户可以根据需求选择不同的模型来完成任务。
#Github #MCP #Agents #AI
https://github.blog/news-insights/product-news/github-copilot-agent-mode-activated/
GitHub Copilot 推出了新的 Pro+ 计划,为个人开发者提供每月 1500 次高级请求和对最新模型(如 GPT-4.5)的访问权限,价格为每月 39 美元。此外,Copilot Pro 用户将从 2025 年 5 月 5 日起每月获得 300 次高级请求,Copilot Business 和 Copilot Enterprise 用户将分别从 2025 年 5 月 12 日至 19 日起获得每月 300 次和 1000 次高级请求。用户还可以选择按需购买额外的高级请求,每次请求费用为 0.04 美元起。
GitHub Copilot 的 代码审查功能现已正式发布,过去一个月的预览期间已有超过 100 万开发者在 GitHub 上使用该功能。此外,“下一步建议”功能 也已正式推出,帮助开发者通过快捷键快速完成代码编辑。
GitHub Copilot 的 Agent 模式支持多种语言模型,包括 Anthropic Claude 3.5、3.7 Sonnet、Google Gemini 2.0 Flash 和 OpenAI GPT-4o。用户可以根据需求选择不同的模型来完成任务。
#Github #MCP #Agents #AI
https://github.blog/news-insights/product-news/github-copilot-agent-mode-activated/
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 #新特性
https://github.blog/developer-skills/application-development/github-issues-search-now-supports-nested-queries-and-boolean-operators-heres-how-we-rebuilt-it/
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 #新特性
https://github.blog/developer-skills/application-development/github-issues-search-now-supports-nested-queries-and-boolean-operators-heres-how-we-rebuilt-it/
The GitHub Blog
GitHub Issues search now supports nested queries and boolean operators: Here's how we (re)built it
Building this feature presented significant challenges. We're excited to take you behind the scenes.
关于 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
https://github.blog/ai-and-ml/github-copilot/copilot-ask-edit-and-agent-modes-what-they-do-and-when-to-use-them/
Ask 模式 是三种模式中最简单的一种,适合快速获取编程问题的答案。开发者可以高亮代码并输入问题,Copilot 会生成回答,解释代码功能、提供建议或给出代码片段,但不会修改代码。这种模式适合需要快速解决疑问、获取灵感或学习新知识的场景,比如查询如何使用某个库或优化 SQL 查询。
Edit 模式 则更进一步,允许开发者通过自然语言描述对项目中的文件进行修改。开发者可以高亮代码块并输入指令,如“添加错误处理”或“使用 async/await 重构”,Copilot 会根据指令生成代码修改建议,但不会自动保存,需要开发者确认。这种模式适合对现有代码进行精确修改、重构或优化,同时保留开发者的控制权。此外,开发者还可以通过自定义指令来指导 Copilot 的修改风格和偏好,使其更符合团队的编码规范。
Agent 模式 是最强大的一种,它可以根据开发者提供的高级指令自主规划任务步骤,选择文件、运行工具或终端命令,并自动迭代代码修改。这种模式适合需要进行大规模代码修改、构建新功能或修复复杂问题的场景。Agent 模式能够分析整个项目,识别并应用相关变更,保持代码一致性。它还可以通过自定义指令来遵循项目的特定规则和风格,从而提高任务的准确性和效率。不过,Agent 模式可能会让一些开发者感到需要放弃一定的控制权,因为它会自动应用更改,而不是等待明确的批准。
对于资深开发者而言,Agent 模式并非总是最佳选择。在处理需要精细操作的代码时,Ask 模式或 Edit 模式可能更为合适。资深开发者可以通过清晰的指令和自定义规则来引导 Agent 模式,使其更好地服务于复杂的项目。自定义指令可以帮助 Copilot 理解项目的结构、设计原则和代码风格,从而提供更精准的建议和修改。
建议开发者尝试不同的模式,根据具体任务选择合适的工具。Ask 模式适合快速获取答案,Edit 模式适合精确修改,而 Agent 模式则适合需要自主执行任务的场景。无论选择哪种模式,开发者都应该仔细检查代码更改,确保其符合预期。
#Github #Copilot #AI #Agents
https://github.blog/ai-and-ml/github-copilot/copilot-ask-edit-and-agent-modes-what-they-do-and-when-to-use-them/
The GitHub Blog
Copilot ask, edit, and agent modes: What they do and when to use them
An introduction to GitHub Copilot's three distinct modes and a practical guide for integrating them effectively into your workflow.
GitHub Copilot 编码助手公开预览版
GitHub Copilot 编码助手于 2025 年 5 月 19 日正式进入公开预览阶段,为开发者带来全新的编程体验。开发者可以像分配给其他开发者一样将问题分配给 Copilot,它会在后台运行,利用 GitHub Actions 提供的云端开发环境,探索代码仓库、进行修改,并通过测试和代码规范验证后提交代码。完成任务后,Copilot 会通知开发者进行代码审查,开发者可以通过在拉取请求中留言要求 Copilot 进行修改,或者在本地分支中继续开发,Copilot 会全程协助。
Copilot 在处理低到中等复杂度的任务时表现优异,例如在经过良好测试的代码库中添加功能、修复漏洞、扩展测试、重构代码以及改进文档等,甚至可以同时处理多个问题。该功能目前面向 Copilot Pro+ 和 Copilot Enterprise 订阅用户开放,使用该功能会消耗 GitHub Actions 分钟数和 Copilot 高级请求次数,从计划中包含的权益开始计算。从 2025 年 6 月 4 日起,Copilot 编码助手每次模型请求将使用一个高级请求,这是一项预览功能,未来可能会发生变化。
#Github #Copilot #AI
https://github.blog/changelog/2025-05-19-github-copilot-coding-agent-in-public-preview/
GitHub Copilot 编码助手于 2025 年 5 月 19 日正式进入公开预览阶段,为开发者带来全新的编程体验。开发者可以像分配给其他开发者一样将问题分配给 Copilot,它会在后台运行,利用 GitHub Actions 提供的云端开发环境,探索代码仓库、进行修改,并通过测试和代码规范验证后提交代码。完成任务后,Copilot 会通知开发者进行代码审查,开发者可以通过在拉取请求中留言要求 Copilot 进行修改,或者在本地分支中继续开发,Copilot 会全程协助。
Copilot 在处理低到中等复杂度的任务时表现优异,例如在经过良好测试的代码库中添加功能、修复漏洞、扩展测试、重构代码以及改进文档等,甚至可以同时处理多个问题。该功能目前面向 Copilot Pro+ 和 Copilot Enterprise 订阅用户开放,使用该功能会消耗 GitHub Actions 分钟数和 Copilot 高级请求次数,从计划中包含的权益开始计算。从 2025 年 6 月 4 日起,Copilot 编码助手每次模型请求将使用一个高级请求,这是一项预览功能,未来可能会发生变化。
#Github #Copilot #AI
https://github.blog/changelog/2025-05-19-github-copilot-coding-agent-in-public-preview/
The GitHub Blog
GitHub Copilot coding agent in public preview - GitHub Changelog
Backlog getting you down? Drowning in technical debt? Delegate issues to Copilot so you can focus on the creative, complex, and high-impact work that matters most. Copilot coding agent makes…
使用 GitHub Copilot 进行测试驱动开发 (TDD)
Kedasha Kerr 介绍了如何借助 GitHub Copilot 实现测试驱动开发(TDD)。测试是开发过程中不可或缺但又常常令人感到繁琐的环节,尤其是随着代码库的不断增大和复杂度的提升。而 GitHub Copilot 能够有效帮助开发者自动化部分测试流程,从而提高开发效率。
Kedasha 首先强调了测试的重要性,指出测试是确保代码符合预期行为的关键手段。测试的类型多种多样,包括验收测试、集成测试和单元测试。其中,单元测试通过将代码分解为更小的单元进行测试,确保每个单元都能正常运行,从而增强对整个应用程序的信心。单元测试的另一个优势在于其可自动化性,开发者可以通过运行大量测试来快速了解代码的健康状况,并及时发现潜在问题。
Kedasha 接着介绍了如何使用 GitHub Copilot 编写单元测试。开发者可以在 Visual Studio Code 中使用 GitHub Copilot,通过高亮代码片段并调用 Copilot Chat,利用
TDD 是一种先编写测试再开发实现代码的开发方式,其核心在于通过测试来引导开发过程。TDD 的一个关键理念是“红绿重构”:首先编写测试,测试失败(红阶段),然后编写刚好能让测试通过的代码(绿阶段),最后对代码进行重构以优化结构,同时确保测试始终通过。GitHub Copilot 在 TDD 中的作用尤为突出,开发者可以通过向 Copilot 描述预期功能来生成测试代码,然后让 Copilot 生成实现代码,从而快速完成开发流程。
Kedasha 还强调了编写单元测试时的最佳实践,包括为测试添加文档、保持测试组织有序、创建测试工具以提高效率以及在代码变更时更新测试。此外,文章还提供了多个资源链接,供开发者进一步学习如何使用 GitHub Copilot 进行测试开发。
#Copilot #Github #AI #TDD #测试
https://github.blog/ai-and-ml/github-copilot/github-for-beginners-test-driven-development-tdd-with-github-copilot/
Kedasha Kerr 介绍了如何借助 GitHub Copilot 实现测试驱动开发(TDD)。测试是开发过程中不可或缺但又常常令人感到繁琐的环节,尤其是随着代码库的不断增大和复杂度的提升。而 GitHub Copilot 能够有效帮助开发者自动化部分测试流程,从而提高开发效率。
Kedasha 首先强调了测试的重要性,指出测试是确保代码符合预期行为的关键手段。测试的类型多种多样,包括验收测试、集成测试和单元测试。其中,单元测试通过将代码分解为更小的单元进行测试,确保每个单元都能正常运行,从而增强对整个应用程序的信心。单元测试的另一个优势在于其可自动化性,开发者可以通过运行大量测试来快速了解代码的健康状况,并及时发现潜在问题。
Kedasha 接着介绍了如何使用 GitHub Copilot 编写单元测试。开发者可以在 Visual Studio Code 中使用 GitHub Copilot,通过高亮代码片段并调用 Copilot Chat,利用
/tests add unit tests for my code
命令生成测试代码。Copilot 会根据代码提供测试计划和代码建议,开发者可以将其添加到新文件中,并通过运行 python -m pytest
命令来执行测试。TDD 是一种先编写测试再开发实现代码的开发方式,其核心在于通过测试来引导开发过程。TDD 的一个关键理念是“红绿重构”:首先编写测试,测试失败(红阶段),然后编写刚好能让测试通过的代码(绿阶段),最后对代码进行重构以优化结构,同时确保测试始终通过。GitHub Copilot 在 TDD 中的作用尤为突出,开发者可以通过向 Copilot 描述预期功能来生成测试代码,然后让 Copilot 生成实现代码,从而快速完成开发流程。
Kedasha 还强调了编写单元测试时的最佳实践,包括为测试添加文档、保持测试组织有序、创建测试工具以提高效率以及在代码变更时更新测试。此外,文章还提供了多个资源链接,供开发者进一步学习如何使用 GitHub Copilot 进行测试开发。
#Copilot #Github #AI #TDD #测试
https://github.blog/ai-and-ml/github-copilot/github-for-beginners-test-driven-development-tdd-with-github-copilot/
The GitHub Blog
GitHub for Beginners: Test-driven development (TDD) with GitHub Copilot
See how to use GitHub Copilot to engage in some test-driven development.
Alexandra Lietzke 介绍了 GitHub Copilot 的强大功能——Agent 模式。Agent 模式是一种自主、实时且同步的协作工具,能够根据自然语言提示执行多步骤的编码任务,帮助开发者快速实现从需求到原型的转变。
Agent 模式的核心在于其能够理解开发者的意图,构建解决方案并不断迭代直至达到预期结果。它不仅可以分析代码库以获取完整上下文,还能规划并执行多步骤解决方案、运行命令或测试、调用外部工具完成特定任务,甚至提出架构改进意见。通过一个系统提示,Agent 模式可以自主运行命令、应用编辑、检测错误并实时调整,开发者可以清晰地看到其推理过程和所使用的工具。
Agent 模式适用于不同层次的开发者。对于新手,它是一个同步开发工具,能够帮助快速构建应用;对于经验丰富的开发者,则可以显著提升工作效率,让他们专注于更高层次的问题解决。Agent 模式还支持通过 Model Context Protocol(MCP)服务器或扩展程序安装更多专业工具,从而扩展其功能,例如自动化 GitHub 工作流、提取和分析仓库数据等。
开发者可以通过多种方式使用 Agent 模式,包括重构代码、迁移项目、编写测试、现代化遗留代码、自动修复代码生成错误、添加新功能、基于功能规格或 UI 草图构建原型等。文章还提到,由于 Agent 模式基于非确定性的大型语言模型(LLM),因此即使在相同的提示和上下文中,其建议也可能有所不同。
开发者可以通过在 VS Code 中打开 Copilot Chat 视图并选择 Agent 模式来开始使用,也可以在 Visual Studio 中进行预览。Agent 模式还可以与其他 GitHub Copilot 功能结合使用,例如自定义指令,以便根据开发者的日常编码实践、工具和开发流程来调整 Copilot 的响应方式。此外,开发者还可以选择不同的 AI 模型来驱动 Agent 模式,以适应不同的开发需求。
Agent 模式为开发者提供了极大的灵活性,可以根据个人需求将其用于构建原型应用、处理现有代码库或自动化工作流程中的低层次任务。开发者可以根据自己的风格和需求定制 Agent 模式,从而更高效地完成开发工作。
#AI #Copilot #Agents #Github #实践
https://github.blog/ai-and-ml/github-copilot/agent-mode-101-all-about-github-copilots-powerful-mode/
Agent 模式的核心在于其能够理解开发者的意图,构建解决方案并不断迭代直至达到预期结果。它不仅可以分析代码库以获取完整上下文,还能规划并执行多步骤解决方案、运行命令或测试、调用外部工具完成特定任务,甚至提出架构改进意见。通过一个系统提示,Agent 模式可以自主运行命令、应用编辑、检测错误并实时调整,开发者可以清晰地看到其推理过程和所使用的工具。
Agent 模式适用于不同层次的开发者。对于新手,它是一个同步开发工具,能够帮助快速构建应用;对于经验丰富的开发者,则可以显著提升工作效率,让他们专注于更高层次的问题解决。Agent 模式还支持通过 Model Context Protocol(MCP)服务器或扩展程序安装更多专业工具,从而扩展其功能,例如自动化 GitHub 工作流、提取和分析仓库数据等。
开发者可以通过多种方式使用 Agent 模式,包括重构代码、迁移项目、编写测试、现代化遗留代码、自动修复代码生成错误、添加新功能、基于功能规格或 UI 草图构建原型等。文章还提到,由于 Agent 模式基于非确定性的大型语言模型(LLM),因此即使在相同的提示和上下文中,其建议也可能有所不同。
开发者可以通过在 VS Code 中打开 Copilot Chat 视图并选择 Agent 模式来开始使用,也可以在 Visual Studio 中进行预览。Agent 模式还可以与其他 GitHub Copilot 功能结合使用,例如自定义指令,以便根据开发者的日常编码实践、工具和开发流程来调整 Copilot 的响应方式。此外,开发者还可以选择不同的 AI 模型来驱动 Agent 模式,以适应不同的开发需求。
Agent 模式为开发者提供了极大的灵活性,可以根据个人需求将其用于构建原型应用、处理现有代码库或自动化工作流程中的低层次任务。开发者可以根据自己的风格和需求定制 Agent 模式,从而更高效地完成开发工作。
#AI #Copilot #Agents #Github #实践
https://github.blog/ai-and-ml/github-copilot/agent-mode-101-all-about-github-copilots-powerful-mode/
The GitHub Blog
Agent mode 101: All about GitHub Copilot’s powerful mode
A full look at agent mode in GitHub Copilot, including what it can do, when to use it, and best practices.
Vibe coding:成为 AI 开发人员的路线图
Gwen Davis 为开发者提供了一份从普通程序员成长为 AI 开发专家的详细指南。随着 AI 技术在各个领域的广泛应用,预计到 2027 年,将有 80% 的开发者需要掌握基本的 AI 技能,因此现在正是进入这一领域的绝佳时机。
开发者需要首先掌握几种关键的编程语言和框架,如 Python、Java 和 C++,这些语言在 AI 和机器学习领域有着广泛的应用。同时,TensorFlow、Keras、PyTorch 和 Scikit-learn 等框架也是开发者必不可少的工具。GitHub 提供了丰富的学习资源,例如 GitHub Learning Lab、The Algorithms、TensorFlow Tutorials 和 PyTorch Examples,帮助开发者快速提升相关技能。此外,GitHub Copilot 作为一款 AI 辅助编程工具,能够为开发者提供实时代码建议,帮助他们更高效地学习和使用新的编程语言和框架。
在机器学习方面,Gwen 建议开发者深入了解 深度学习、自然语言处理(NLP) 和 计算机视觉 等关键子领域。这些领域不仅推动了 AI 技术的发展,也在实际应用中扮演着重要角色。开发者可以通过 GitHub 上的开源项目,如 Awesome Machine Learning、Keras、NLTK 和 OpenCV,获取相关工具和教程,参与 Kaggle 竞赛解决方案的开发,或者为带有 “good first issue” 标签的开源 AI 项目贡献代码,从而积累实践经验。
开发者需要通过构建一个出色的 GitHub 个人作品集来展示自己的技能和项目成果。这包括合理组织代码仓库、突出展示优秀项目、创建专业的个人简介、利用 GitHub Pages 构建个人网站以及积极参与开源项目贡献。通过这些方式,开发者可以在开发者社区中脱颖而出,吸引潜在雇主或合作伙伴的注意。
Gwen 建议开发者获取 GitHub Copilot 认证,以证明自己能够熟练运用 AI 驱动的工具来提升开发效率。GitHub 提供了认证课程,涵盖 AI 驱动开发、工作流自动化以及与 CI/CD 管道的集成等主题。通过学习官方文档、完成实践练习以及在实际项目中应用 GitHub Copilot,开发者可以为认证考试做好准备,并在通过考试后获得数字徽章,将其展示在 LinkedIn、GitHub 个人资料或个人作品集中,进一步提升自己的职业竞争力。
Gwen 鼓励开发者抓住 AI 革命带来的机遇,利用 GitHub 提供的工具和资源,开始构建和探索 AI 项目,塑造未来的技术发展。
#AI #Github #指南
https://github.blog/ai-and-ml/vibe-coding-your-roadmap-to-becoming-an-ai-developer/
Gwen Davis 为开发者提供了一份从普通程序员成长为 AI 开发专家的详细指南。随着 AI 技术在各个领域的广泛应用,预计到 2027 年,将有 80% 的开发者需要掌握基本的 AI 技能,因此现在正是进入这一领域的绝佳时机。
开发者需要首先掌握几种关键的编程语言和框架,如 Python、Java 和 C++,这些语言在 AI 和机器学习领域有着广泛的应用。同时,TensorFlow、Keras、PyTorch 和 Scikit-learn 等框架也是开发者必不可少的工具。GitHub 提供了丰富的学习资源,例如 GitHub Learning Lab、The Algorithms、TensorFlow Tutorials 和 PyTorch Examples,帮助开发者快速提升相关技能。此外,GitHub Copilot 作为一款 AI 辅助编程工具,能够为开发者提供实时代码建议,帮助他们更高效地学习和使用新的编程语言和框架。
在机器学习方面,Gwen 建议开发者深入了解 深度学习、自然语言处理(NLP) 和 计算机视觉 等关键子领域。这些领域不仅推动了 AI 技术的发展,也在实际应用中扮演着重要角色。开发者可以通过 GitHub 上的开源项目,如 Awesome Machine Learning、Keras、NLTK 和 OpenCV,获取相关工具和教程,参与 Kaggle 竞赛解决方案的开发,或者为带有 “good first issue” 标签的开源 AI 项目贡献代码,从而积累实践经验。
开发者需要通过构建一个出色的 GitHub 个人作品集来展示自己的技能和项目成果。这包括合理组织代码仓库、突出展示优秀项目、创建专业的个人简介、利用 GitHub Pages 构建个人网站以及积极参与开源项目贡献。通过这些方式,开发者可以在开发者社区中脱颖而出,吸引潜在雇主或合作伙伴的注意。
Gwen 建议开发者获取 GitHub Copilot 认证,以证明自己能够熟练运用 AI 驱动的工具来提升开发效率。GitHub 提供了认证课程,涵盖 AI 驱动开发、工作流自动化以及与 CI/CD 管道的集成等主题。通过学习官方文档、完成实践练习以及在实际项目中应用 GitHub Copilot,开发者可以为认证考试做好准备,并在通过考试后获得数字徽章,将其展示在 LinkedIn、GitHub 个人资料或个人作品集中,进一步提升自己的职业竞争力。
Gwen 鼓励开发者抓住 AI 革命带来的机遇,利用 GitHub 提供的工具和资源,开始构建和探索 AI 项目,塑造未来的技术发展。
#AI #Github #指南
https://github.blog/ai-and-ml/vibe-coding-your-roadmap-to-becoming-an-ai-developer/
The GitHub Blog
Vibe coding: Your roadmap to becoming an AI developer
Learn how to go from curious coder to AI wizard—with a little help from GitHub.
GitHub 计费团队如何使用 GitHub Copilot 中的编码代理持续减少技术债务
GitHub Copilot 的编码代理工具为解决技术债务提供了新的思路和方法。技术债务是软件开发中一个长期存在的问题,随着时间推移,快速修复、“临时”解决方案和截止日期妥协会累积成技术债务,就像财务债务一样,拖延越久解决成本越高。优先处理技术债务面临诸多挑战,因为开发团队通常忙于应对紧迫的截止日期和不断涌现的功能需求,技术债务处理工作往往被搁置。
传统的技术债务管理方法,如“园艺周”(专门用于处理技术债务的冲刺阶段)和延长功能开发时间线,效果并不理想。“园艺周”将技术债务视为例外情况而非持续维护的一部分,导致大问题未得到解决,小问题被推迟处理;延长开发时间线则会破坏工程团队与产品团队之间的信任。
GitHub Copilot 的编码代理工具为解决技术债务提供了新的思路。通过将技术债务任务分配给编码代理,开发人员可以在专注于新功能和架构变更的同时,让代理处理技术债务,无需中断正常的开发流程或影响功能交付时间表。例如,编码代理可以增加代码测试覆盖范围、替换依赖项、标准化代码库中的模式、优化前端加载模式以及识别和删除死代码。这些任务都是实际开发中常见的技术债务问题,而编码代理能够高效地完成这些任务,大大减少了处理技术债务所需的时间。
GitHub Copilot 的编码代理工具并非要取代人类工程师,而是增强工程师的能力。代理可以处理重复、耗时的代码重构、更新依赖项和标准化模式等工作,而人类工程师则可以专注于架构决策、功能创新和解决复杂业务问题。这种分工使得软件能够保持更健康的状态,团队能够更快地交付产品,工程师也能将时间花在更有价值的工作上。
尽管 AI 代理在处理定义明确、重复性的任务上表现出色,但在涉及重大架构决策或复杂业务逻辑变更时,人类的判断仍然不可替代。开发人员需要仔细规划和权衡,确保每个提示都经过深思熟虑,每个代码库的变更都经过彻底审查。AI 代理能够带来速度和一致性,而人类工程师则提供战略思维,决定优先处理哪些技术债务,理解不同方法的业务影响,并识别可能引发更大问题的“快速修复”。
为了更好地利用 GitHub Copilot 的编码代理,开发人员可以采取以下建议:为代码库编写清晰的 Copilot 指令,以获得更好的使用体验;将任务分解为可管理的小块,以便更高效地审查变更;掌握有效的提示技巧,明确传达需求、上下文、约束条件和编码标准;始终彻底审查代码,确保质量。这些方法能够帮助开发人员更好地与 AI 代理协作,提高工作效率。
软件工程正处于一个关键时期,技术债务一直是生产力的隐形杀手。AI 编码代理为解决这一问题提供了新的机会。学会与 AI 代理有效协作的工程师将获得巨大优势,他们能够维护复杂的代码库,处理其他人回避的技术债务,甚至可能消除昂贵且耗时的系统重写需求。然而,这一转变需要有意识的努力,开发人员需要尝试这些工具,了解它们的优势和局限性,并将其整合到工作流程中。
#Github #Copilot #AI #实践
https://github.blog/ai-and-ml/github-copilot/how-the-github-billing-team-uses-the-coding-agent-in-github-copilot-to-continuously-burn-down-technical-debt/
GitHub Copilot 的编码代理工具为解决技术债务提供了新的思路和方法。技术债务是软件开发中一个长期存在的问题,随着时间推移,快速修复、“临时”解决方案和截止日期妥协会累积成技术债务,就像财务债务一样,拖延越久解决成本越高。优先处理技术债务面临诸多挑战,因为开发团队通常忙于应对紧迫的截止日期和不断涌现的功能需求,技术债务处理工作往往被搁置。
传统的技术债务管理方法,如“园艺周”(专门用于处理技术债务的冲刺阶段)和延长功能开发时间线,效果并不理想。“园艺周”将技术债务视为例外情况而非持续维护的一部分,导致大问题未得到解决,小问题被推迟处理;延长开发时间线则会破坏工程团队与产品团队之间的信任。
GitHub Copilot 的编码代理工具为解决技术债务提供了新的思路。通过将技术债务任务分配给编码代理,开发人员可以在专注于新功能和架构变更的同时,让代理处理技术债务,无需中断正常的开发流程或影响功能交付时间表。例如,编码代理可以增加代码测试覆盖范围、替换依赖项、标准化代码库中的模式、优化前端加载模式以及识别和删除死代码。这些任务都是实际开发中常见的技术债务问题,而编码代理能够高效地完成这些任务,大大减少了处理技术债务所需的时间。
GitHub Copilot 的编码代理工具并非要取代人类工程师,而是增强工程师的能力。代理可以处理重复、耗时的代码重构、更新依赖项和标准化模式等工作,而人类工程师则可以专注于架构决策、功能创新和解决复杂业务问题。这种分工使得软件能够保持更健康的状态,团队能够更快地交付产品,工程师也能将时间花在更有价值的工作上。
尽管 AI 代理在处理定义明确、重复性的任务上表现出色,但在涉及重大架构决策或复杂业务逻辑变更时,人类的判断仍然不可替代。开发人员需要仔细规划和权衡,确保每个提示都经过深思熟虑,每个代码库的变更都经过彻底审查。AI 代理能够带来速度和一致性,而人类工程师则提供战略思维,决定优先处理哪些技术债务,理解不同方法的业务影响,并识别可能引发更大问题的“快速修复”。
为了更好地利用 GitHub Copilot 的编码代理,开发人员可以采取以下建议:为代码库编写清晰的 Copilot 指令,以获得更好的使用体验;将任务分解为可管理的小块,以便更高效地审查变更;掌握有效的提示技巧,明确传达需求、上下文、约束条件和编码标准;始终彻底审查代码,确保质量。这些方法能够帮助开发人员更好地与 AI 代理协作,提高工作效率。
软件工程正处于一个关键时期,技术债务一直是生产力的隐形杀手。AI 编码代理为解决这一问题提供了新的机会。学会与 AI 代理有效协作的工程师将获得巨大优势,他们能够维护复杂的代码库,处理其他人回避的技术债务,甚至可能消除昂贵且耗时的系统重写需求。然而,这一转变需要有意识的努力,开发人员需要尝试这些工具,了解它们的优势和局限性,并将其整合到工作流程中。
#Github #Copilot #AI #实践
https://github.blog/ai-and-ml/github-copilot/how-the-github-billing-team-uses-the-coding-agent-in-github-copilot-to-continuously-burn-down-technical-debt/
The GitHub Blog
How the GitHub billing team uses the coding agent in GitHub Copilot to continuously burn down technical debt
Tech debt is a big problem that no one has time to solve. GitHub Copilot coding agent can help.
GitHub CEO:尽管 AI 蓬勃发展,但手动编码仍是关键
Thomas Dohmke 强调尽管 AI 工具在软件开发中日益普及,但保留手动编码技能仍然至关重要。Dohmke 指出,开发者需要具备修改 AI 生成代码的能力,以避免生产力问题。他描述了一种有效的开发流程,即 AI 工具生成代码并提交拉取请求,开发者随后利用其编程技能进行即时调整。Dohmke 警告说,过度依赖自动化工具会导致效率低下,例如在自然语言中花费过多时间解释简单更改,而不是直接编辑代码。他提到:“最糟糕的情况是试图用自然语言描述我已经知道如何用编程语言完成的任务。”
Dohmke 还讨论了 “vibe coding” 这一概念,这是由 OpenAI 联合创始人 Andrej Karpathy 提出的,用来描述过度依赖 AI 生成代码的现象。Dohmke 的观点与行业共识一致,即最有效的 AI 编码策略是将自动化与人类编程技能相结合。德勤的研究表明,开发者主要使用 AI 工具来完成特定任务,如编写样板代码,同时保持人工监督,这可以每天提高 10 到 20 分钟的生产力。研究还显示,大约一半的 AI 生成代码存在部分错误,这凸显了人类专业知识的持续需求。谷歌的经验也反映了这种混合模式,该公司报告称,其超过 25% 的代码现在由 AI 生成,但仍需要大量的人工审查和优化。这种平衡的方法反映了对 AI 在软件开发中能力和局限性的成熟理解,表明最成功的实现将是增强而非取代开发人员专业知识的方案。
AI 并非在消除编程工作,而是将开发者的角色从纯编码者转变为 AI 辅助开发流程的协调者。行业专家预测,开发者角色将分为两类:利用 AI 进行代码生成的产品工程师和确保软件系统质量和安全性的高级架构师。这种转变需要新的技能,专注于战略问题解决、有效指导 AI 和做出高级设计决策,而不是手动编写每一行代码。软件工程师的持续短缺,加上研究表明 AI 工具对初级开发人员特别有益,表明 AI 将有助于弥合人才缺口,同时为经验丰富的程序员创造新的机会。这种转变与软件开发中的历史模式一致,新的工具和抽象改变了开发人员的工作方式,但并未消除对人类智慧的需求。
“vibe coding” 这一新兴方法展示了 AI 生成代码的潜力和局限性,尤其是在初创企业和复杂项目中。虽然 AI 工具能够实现快速原型设计和与敏捷方法论一致的迭代开发,但也引发了对代码质量、安全漏洞和可维护性的重大担忧。真实案例已经揭示了过度依赖未经验证的 AI 生成代码的危险,尤其是那些可能不会立即显现的安全问题。对于初创企业来说,这种紧张关系尤为相关,因为非技术创始人可能难以使用主要由 AI 生成的代码构建可持续的复杂系统,可能会产生阻碍未来增长的技术债务。成熟科技公司的经验表明,成功的 AI 集成需要在自动化与严格的质量保证流程之间取得平衡,这一经验对于在 “vibe coding” 趋势中导航的小型组织来说可能至关重要。
#AI #Github #Vibe_Coding #思考
https://www.techinasia.com/news/github-ceo-manual-coding-remains-key-despite-ai-boom
Thomas Dohmke 强调尽管 AI 工具在软件开发中日益普及,但保留手动编码技能仍然至关重要。Dohmke 指出,开发者需要具备修改 AI 生成代码的能力,以避免生产力问题。他描述了一种有效的开发流程,即 AI 工具生成代码并提交拉取请求,开发者随后利用其编程技能进行即时调整。Dohmke 警告说,过度依赖自动化工具会导致效率低下,例如在自然语言中花费过多时间解释简单更改,而不是直接编辑代码。他提到:“最糟糕的情况是试图用自然语言描述我已经知道如何用编程语言完成的任务。”
Dohmke 还讨论了 “vibe coding” 这一概念,这是由 OpenAI 联合创始人 Andrej Karpathy 提出的,用来描述过度依赖 AI 生成代码的现象。Dohmke 的观点与行业共识一致,即最有效的 AI 编码策略是将自动化与人类编程技能相结合。德勤的研究表明,开发者主要使用 AI 工具来完成特定任务,如编写样板代码,同时保持人工监督,这可以每天提高 10 到 20 分钟的生产力。研究还显示,大约一半的 AI 生成代码存在部分错误,这凸显了人类专业知识的持续需求。谷歌的经验也反映了这种混合模式,该公司报告称,其超过 25% 的代码现在由 AI 生成,但仍需要大量的人工审查和优化。这种平衡的方法反映了对 AI 在软件开发中能力和局限性的成熟理解,表明最成功的实现将是增强而非取代开发人员专业知识的方案。
AI 并非在消除编程工作,而是将开发者的角色从纯编码者转变为 AI 辅助开发流程的协调者。行业专家预测,开发者角色将分为两类:利用 AI 进行代码生成的产品工程师和确保软件系统质量和安全性的高级架构师。这种转变需要新的技能,专注于战略问题解决、有效指导 AI 和做出高级设计决策,而不是手动编写每一行代码。软件工程师的持续短缺,加上研究表明 AI 工具对初级开发人员特别有益,表明 AI 将有助于弥合人才缺口,同时为经验丰富的程序员创造新的机会。这种转变与软件开发中的历史模式一致,新的工具和抽象改变了开发人员的工作方式,但并未消除对人类智慧的需求。
“vibe coding” 这一新兴方法展示了 AI 生成代码的潜力和局限性,尤其是在初创企业和复杂项目中。虽然 AI 工具能够实现快速原型设计和与敏捷方法论一致的迭代开发,但也引发了对代码质量、安全漏洞和可维护性的重大担忧。真实案例已经揭示了过度依赖未经验证的 AI 生成代码的危险,尤其是那些可能不会立即显现的安全问题。对于初创企业来说,这种紧张关系尤为相关,因为非技术创始人可能难以使用主要由 AI 生成的代码构建可持续的复杂系统,可能会产生阻碍未来增长的技术债务。成熟科技公司的经验表明,成功的 AI 集成需要在自动化与严格的质量保证流程之间取得平衡,这一经验对于在 “vibe coding” 趋势中导航的小型组织来说可能至关重要。
#AI #Github #Vibe_Coding #思考
https://www.techinasia.com/news/github-ceo-manual-coding-remains-key-despite-ai-boom
Tech in Asia
GitHub CEO: manual coding remains key despite AI boom
GitHub CEO Thomas Dohmke said developers can make immediate adjustments using their programming skills.