标签 Python 下的文章

拥抱Agentic Coding:软件开发的未来

本文永久链接 – https://tonybai.com/2025/07/05/agentic-coding-is-the-future

大家好,我是Tony Bai。

软件开发的范式正在经历一场深刻的变革。从 GitHub Copilot 的惊艳亮相,到各种IDE中集成的代码生成功能,我们已经习惯了 AI 在编码过程中的“自动补全”。但这仅仅是序幕。如今,一种更强大、更具颠覆性的模式正在兴起,它就是——Agentic Coding (智能体驱动编码)

最近,Flask 和 Jinja2 等知名开源项目的作者 Armin Ronacher 分享了他近几个月沉浸式体验 Agentic Coding 的感受。他认为,这开启了人机协作编程的新篇章,带来了前所未有的生产力飞跃。

Agentic Coding 不再是简单的代码提示,而是开发者与 AI Agent 之间的实时协作 (real time collaboration)。它预示着软件开发的未来,一个我们都应该主动了解和拥抱的未来。

超越“自动补全”:Agentic Coding 是什么?

要理解 Agentic Coding 的变革性,首先要明白它与我们熟悉的“自动补全”工具的本质区别。如果说 Copilot 是你的“智能导航仪”,那么编码 Agent 就是你的“编程搭档”。它能够:

  • 理解和分解复杂任务: 将一个宏大的目标(如“为这个项目添加用户认证功能”)分解为一系列可执行的子任务。
  • 自主使用工具链: 像人类开发者一样,运行编译器 (go build)、测试框架 (go test)、linter、formatter 等。
  • 与开发环境深度交互: 直接创建、修改、删除文件;与 Git 进行交互;浏览文件系统。
  • 基于反馈进行迭代: 当编译失败或测试不通过时,Agent 会阅读错误信息,理解问题所在,并尝试进行修复,形成一个“试错-反馈-修正”的闭环。
  • 长时间、持续地工作: 甚至可以运行数小时来完成大型任务。

Agentic Coding 的核心,是将 LLM 的推理能力与实际的开发工具链和环境深度结合,使其从一个“代码片段生成器”进化为一个能够自主执行复杂编程任务的“智能体”。

浪潮已至:Agentic Coding 为何在当下爆发?

Armin 认为,这场浪潮的兴起主要源于三个因素的共同作用:

  1. 模型能力的突破: OpenAI o3 、Claude 4 Opus、Gemini 2.5 pro等最新一代模型,在“工具使用 (tool usage)”能力上取得了质的飞跃。
  2. 官方 Agent 的引领: Anthropic 的 claude-code 等官方 Agent 实现,为社区提供了最佳实践的范本。
  3. 更优的成本效益: 通过订阅服务使用 Agentic Coding,使得长时间、高强度的 Agent 运行在经济上变得可行。

如何高效拥抱 Agentic Coding:来自一线的实践指南

要驾驭好这位强大的“编程搭档”,并非易事。Armin 分享了大量宝贵的实践经验,总结起来,核心在于:构建一个“Agent 友好”的环境,并学会如何有效管理上下文。

语言和代码库的选择:“简单”是 Agent 的朋友

  • 简单的语言更受欢迎

Armin 发现,像 Go、PHP、基础 Python 这样的语言,对 Agent 更友好。它们的语法结构清晰,概念相对较少,使得 AI 更容易理解和生成代码。Go 语言的简洁性、强大的标准库和较少的生态系统变动,使其成为 Agentic Coding 的理想选择之一。

  • 生态系统稳定性很重要

生态系统变动越少的语言或框架,效果越好。

  • 代码库内部模式要统一

如果一个代码库中存在多种相互冲突的设计模式,Agent 会感到困惑。

  • 命名要清晰

长且独特的函数名能帮助 Agent 更好地理解和定位代码,避免不必要的代码重复。

优化你的开发环境:为 Agent “铺路”

  • 构建“Agent友好”的工具

你的工具在被误用时,应该明确报错并提供有用的错误信息,而不是静默失败。Armin 举例说,Rust 的测试框架在未选中任何测试时会报告“成功运行0个测试”,这就是一个反例。

  • 统一的、纯文本的日志系统

Agent 需要的是简单、清晰的文本日志来理解系统状态。将浏览器控制台日志、SQL 日志等统一输出到 Agent 可以访问的日志文件中,能极大地帮助它进行端到端的调试。

  • 为 Agent 提供“草稿空间”

在项目中明确告知 Agent 在哪里可以安全地创建和运行一次性的测试或探索性代码。

上下文管理是关键:避免“信息过载”与“迷失方向”

  • 审慎使用 MCP,拥抱命令行工具

作者发现,当前模型对命令行工具的理解和使用能力,远胜于对 MCP 的。Agent 可以轻松地将多个 CLI 工具组合进 Shell 脚本来完成复杂任务。

  • 主动提供摘要,避免 Agent “闲逛”

为 Agent 提供关键 API 或代码模块的摘要,或者构建一个工具来生成摘要,能极大地节省上下文并提高效率。

  • 避免在“混乱”的环境中启动 Agent

如果你的开发环境本身是坏的,Agent 会花费大量上下文去修复环境,而不是解决你真正想解决的问题。

  • 使用子任务分解复杂问题

将大任务分解为清晰的子任务,是管理复杂性和上下文的有效手段。

拥抱前需理解的关键点:从挑战看发展方向

面对 Agentic Coding 的强大能力,一些开发者可能会有疑虑。我们不必将其视为障碍,而应看作是推动技术向更成熟阶段发展的方向。

  • 关于代码质量: Agentic Coding 对开发者的审查能力和架构判断力提出了更高的要求。我们的角色将更多地从“代码生产者”转变为“代码质量的最终负责人和架构师”。我们始终对合并到 main 分支的代码负责。
  • 关于“幻觉”问题: 通过工具链(编译、测试、lint)形成的闭环反馈,Agentic Coding 正在有效地缓解“幻觉”问题。这也指明了未来 Agent 开发平台需要重点投入的方向——构建更健壮的验证和反馈机制。
  • 关于不擅长特定语言: Agentic Coding 的发展将推动语言和生态系统向更“Agent 友好”的方向演进。正如 Armin 所说,Go 语言因其恰到好处的类型安全、广泛的标准库和推崇惯用法的文化,在这方面已展现出天然优势。
  • 关于安全风险(YOLO 模式): 当前重度用户为了最大化 Agent 能力而给予其完全系统权限的“YOLO 模式”,是一种早期探索阶段的高风险行为。未来,成熟的 Agentic Coding 平台必然会提供更安全、更可靠的权限管理和沙箱环境,这是该领域走向普及的必经之路。

注:YOLO 是 “You Only Live Once” (你只活一次) 的缩写。这个词最初流行于社交网络,表达的是一种活在当下、大胆尝试、不畏惧风险的人生态度。在技术领域,特别是 Armin Ronacher 在谈论 Agentic Coding 时使用的语境下,“YOLO 模式”特指一种大胆甚至有些“鲁莽”的使用方式,即给予 AI Agent 极高的、几乎不受限制的系统访问权限。

Go 语言在 Agentic Coding 时代的独特机遇

在 Armin 的分享中,Go 语言被特别提及,并被认为是 Agentic Coding 的理想选择之一。这并非偶然,Go 的诸多特性使其在这场人机协作的新范式中占据了有利位置:

  1. 简洁性与可预测性: Go 语言“简单为王”的设计哲学,使其语法结构清晰、概念少、没有复杂的隐式行为。这使得 AI Agent 能更容易地理解、分析和生成高质量的 Go 代码。
  2. 强大的工具链与高效的反馈闭环: Go 的快速编译、内置测试、静态检查等工具,为 Agent 提供了极其高效的“试错-反馈-修正”闭环。Armin 提到的 Go Test Caching 功能,能让 Agent 更智能地只运行受影响的测试,这是一个绝佳的例子。
  3. 并发与系统编程能力: Go 语言本身非常适合编写 Agent 所需的各种命令行工具、后端服务、以及处理并发任务的 CI/CD 流程。我们可以用 Go 来为 AI Agent 构建高效、可靠的“武器库”。
  4. 清晰的错误处理: Go 显式的 error 返回值机制,相比于异常,为 Agent 提供了更清晰、更可预测的错误处理路径。

小结:拥抱 Agentic Coding,就是拥抱软件开发的未来

Agentic Coding 正在开启一个软件开发的新篇章。它标志着我们与 AI 的关系,从简单的“主仆”(人命令,AI补全),演进为更深度的“伙伴”(人规划,AI协作执行)。

这场变革要求我们主动进化。开发者需要将重心更多地从繁琐的代码实现,转移到复杂问题的分解、系统架构的设计、以及对 AI Agent 的精准引导和结果验证上。

对于我们 Gopher 而言,这是一个激动人心的机遇。Go 语言的设计哲学和工程特性,使其在这场变革中具有天然的优势。与其对新范式感到疑虑或观望,不如主动去学习、实践,探索如何驾驭这位强大的“编程搭档”,让它成为我们提升自身能力、加速项目交付、并最终能专注于更有创造性工作的强大助力。

技术的浪潮滚滚向前,拥抱 Agentic Coding,就是拥抱软件开发的未来。

资料链接:https://www.youtube.com/watch?v=nfOVgz_omlU


聊一聊,也帮个忙:

  • 你认为 Agentic Coding 将在哪些方面最先深刻地改变我们的日常开发工作?
  • Armin Ronacher 提出的这些实践技巧,哪一点你认为最重要,并计划在自己的工作中尝试?
  • 你认为 Go 语言为了更好地成为 Agentic Coding 时代的首选语言之一,社区或官方还可以在哪些方面发力?

欢迎在评论区留下你的思考和经验。如果你觉得这篇文章为你描绘了软件开发的未来图景,也请转发给你身边的开发者朋友们,一起迎接 Agentic Coding 时代的到来!

想与我进行更深入的 Go 语言、AI 赋能开发与技术趋势交流吗? 欢迎加入我的“Go & AI 精进营”知识星球

[此处放置知识星球二维码]

我们星球见!


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

Twitch工程师的Go进阶之路:为何你写的Go代码,总感觉“不对劲”?

本文永久链接 – https://tonybai.com/2025/07/04/everything-i-did-to-become-an-expert-in-golang

大家好,我是Tony Bai。

你是否也有过这样的时刻?

你已经用 Go 写了不少代码,项目也能跑起来,但内心深处总有一种挥之不去的“别扭感”。你写的 Go 代码,看起来更像是“带有 Go 语法的 Java/Python”,充斥着你从旧语言带来的思维习惯。代码或许能工作,但它不优雅,不简洁,总感觉“不对劲”。

最近,Twitch 的一位资深机器学习工程师 Melkey 分享了他从 Go 小白成长为生产级系统开发者的心路历程。他的故事,完美地诠释了如何突破这个瓶颈,完成从“会写”到“写好”Go 的关键一跃。

在这篇文章中,我们就来解读一下这位工程师的Go专家之路,看看从中可以借鉴到哪些有意义的方法。

从“被迫营业”到“感觉不对”的困境

和许多人一样,Melkey 开始学习 Go 并非出于热爱,而是因为工作的“逼迫”。2021年,当他以初级工程师的身份加入 Twitch 时,他还是一个习惯于用 Python 写脚本的“简单小子”,对 Go 一无所知。为了保住这份改变人生的工作,他别无选择,只能硬着头皮学下去。

很快,他熟悉了指针、静态类型和 Go 的基本语法。但问题也随之而来:他感觉自己的 Go 水平停滞不前,写出的代码“干巴巴的”,缺乏神韵。 他只是在完成任务,却丝毫没有感受到这门语言的魅力,更谈不上建立起真正的理解和喜爱。

这正是许多 Gopher,尤其是从其他语言转来的开发者,都会遇到的困境:我们只是在用 Go 的语法,实现其他语言的逻辑。 我们还没有真正进入 Go 的世界。

“顿悟”时刻:《Effective Go》带来的思维重塑

改变发生在 Melkey 偶然读到 Go 官方文档中的一篇文章——Effective Go 的那一刻。这篇文章里的几段话,像一道闪电,瞬间击穿了他的迷茫:

“A straightforward translation of a C++ or Java program into Go is unlikely to produce a satisfactory result—Java programs are written in Java, not Go.

In other words, to write Go well, it’s important to understand its properties and idioms. It’s also important to know the established conventions for programming in Go… so that programs you write will be easy for other Go programmers to understand.”

这段话的核心思想振聋发聩:将 C++ 或 Java 程序直接翻译成 Go,不可能得到令人满意的结果。要想写好 Go,就必须理解它的特性和惯用法。

Melkey 恍然大悟:他之前所做的,正是这种“直接翻译”的笨拙工作。他缺少的,是一次彻底的“思维重塑”——停止用过去的经验来套用 Go,而是开始真正地用 Go 的思维方式去思考问题。

什么是“Go 的思维方式”?

那么,这种听起来有些玄乎的“Go 思维”究竟是什么?它不是什么神秘的魔法,而是植根于 Go 语言设计中的一系列核心哲学:

1. 崇尚简洁与可读性

Go 厌恶“魔法”。它倾向于用清晰、直白、甚至略显“笨拙”的代码,来换取长期的可读性和可维护性。相比于某些语言中炫技式的语法糖和复杂的隐式行为,Go 鼓励你把事情的来龙去脉写得一清二楚。

2. 组合优于继承

Go 没有类和继承。它通过接口(interface)实现多态,通过结构体嵌入(struct embedding)实现组合。这种方式鼓励开发者构建小而专注的组件,然后像搭乐高一样将它们组合起来,而不是构建庞大而僵硬的继承树。

3. 显式错误处理

if err != nil 是 Go 中最常见也最富争议的代码。但它恰恰体现了 Go 的哲学:错误是程序中正常且重要的一部分,必须被显式地处理,而不是通过 try-catch 这样的语法结构被隐藏起来。它强迫你直面每一个可能出错的地方。

4. 并发是语言的一等公民

Goroutine 和 Channel 不仅仅是两个原生语法元素,它们是一种构建程序的新范式。正如 Rob Pike 所言,“并发不是并行”。Go 鼓励你从设计的源头,就把程序看作是一组通过通信来协作的、独立的并发单元,而不是在写完一堆顺序代码后,再思考如何用线程池去“并行化”它。

从理论到实践:用项目和资源内化新思维

当然,仅仅理解了这些哲学还远远不够。Melkey 强调,在读完所有文档后,他意识到“阅读所能做的就这么多了”,必须将新学到的思想付诸实践。

理论的顿悟,必须通过刻意的项目练习来巩固和内化。下面,就是他亲身走过的、从入门到精通的“四步实战路径”,以及在这条路上为他保驾护航的“精选资源清单”。

一条清晰的实战路径:用四类项目锤炼 Go 思维

  • 第一站:HTTP 服务 (从简单到复杂)

这是 Go 最核心的应用场景,也是梦开始的地方。从最基础的 CRUD、健康检查 API 入手,逐步深入到 OAuth 认证、自定义中间件、利用 context 包进行请求范围内的值传递等。这个过程能让你全面掌握构建生产级 Web 后端所需的各项技能。

  • 第二站:CLI 工具

许多优秀的 Go 开源项目,如 Docker、Kubectl,都是强大的 CLI 工具。通过使用 Cobra、Bubble T 等流行库,去构建自己的命令行应用,你会深刻理解 Go 作为“云原生时代的 C 语言”的工具属性,并学会如何优雅地处理命令行参数、标志和应用状态。

  • 第三站:gRPC 服务

当你感觉 HTTP 服务已驾轻就熟时,就该迈向微服务了。学习 gRPC 和 Protocol Buffers,构建服务间的通信。这将迫使你的思维从处理“用户-服务器”交互,转变为处理“服务-服务”间的交互,是成为分布式系统架构师的关键一步。

  • 第四站:管道作业与脚本

真正的精通,是把一门语言用成“肌肉记忆”。尝试用 Go 替代你过去的脚本语言(如 Python),去编写一些数据处理的管道作业或日常运维脚本,比如批量清洗数据库中的脏数据。这会极大提升你对 Go 标准库的熟练度,让它成为你工具箱里最顺手的那一把。

注:Melkey是机器学习工程师,因为他的第四站中,更多是数据处理相关的实战路径。

良师益友:来自一线的精选资源清单

在这条充满挑战的实践之路上,你不是一个人在战斗。Melkey 也分享了那些曾给予他巨大帮助的“良师益友”。这份清单的宝贵之处在于,它经过了生产一线工程师的真实筛选:

  • Web 后端实战圣经:《Let’s Go Further》 by Alex Edwards

这本书被誉为 Go Web 开发的经典之作。即便时隔数年,其中的原则和实践依然极具价值。我也极力推荐这本书,Alex 的代码风格非常清晰,对初学者极其友好,能帮你打下坚实的基础。

  • 测试驱动开发双璧:《Learn Go with Tests》 & 《Writing an Interpreter in Go》

前者是优秀的在线教程,手把手教你如何通过测试来学习 Go。后者则通过编写一个解释器的过程,让你在实践中深刻理解测试驱动开发(TDD)的精髓。它们不仅教测试,更在教 Go 语言本身。

  • 避坑与最佳实践指南:《100 Go Mistakes and How to Avoid Them》

这是一本能让你快速提升代码质量的“速查手册”。通过学习别人踩过的坑,你可以少走很多弯路,写出更地道、更健壮的 Go 代码。

小结:真正的精通,是一场思维的迁徙

Melkey 的故事告诉我们,精通一门编程语言,从来都不只是学习语法和 API 那么简单。它更像是一场思维的迁徙——你必须愿意放下过去的地图,学习新大陆的规则和文化,并最终成为这片土地上地道的“原住民”

如果你也感觉自己写的 Go 代码“不对劲”,不妨停下来,问问自己:我是在用 Go 的方式思考,还是在用过去的经验翻译?

或许,你的“顿悟”时刻,也正隐藏在重读一遍《Effective Go》的字里行间,或是开启下一个实战项目的决心之中。

你是否也有过类似的“顿悟”时刻?又是哪篇文章、哪个项目或哪位导师,帮助你完成了 Go 思维的重塑?欢迎在评论区分享你的故事。

资料地址:https://www.youtube.com/watch?v=wr8gJMj3ODw


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 Go语言精进之路1 Go语言精进之路2 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats