Hacker News 中文摘要

RSS订阅

如何构建编程助手 -- How to build a coding agent

文章摘要

文章介绍了一个关于如何构建编码代理的免费工作坊,该工作坊已在两次会议上进行过展示。作者提供了工作坊的材料和源代码,并邀请有兴趣的雇主联系以举办类似活动。工作坊旨在深入解析编码代理的内部运作,帮助参与者理解并构建自己的编码代理。

文章总结

如何构建一个编程助手:免费工作坊

在2025年8月24日,Geoffrey Huntley发布了一篇关于如何构建编程助手的文章,并提供了一个免费的工作坊。该工作坊已经在两个会议上进行了展示,旨在帮助参与者理解并构建自己的编程助手,类似于Roo Code、Cline、Amp、Cursor、Windsurf或OpenCode等工具。

主要内容:

  1. 编程助手的基本概念
    编程助手(Coding Agent)是一种能够自动化编程任务的工具。尽管“助手”一词被广泛使用,但很多人并不清楚其内部工作原理。通过学习如何构建编程助手,你可以从AI的消费者转变为AI的生产者,掌握自动化技术的基础。

  2. 构建编程助手的简单性
    构建一个编程助手并不复杂,只需要300行代码,这些代码在一个循环中运行,并通过LLM(大语言模型)的token进行驱动。你只需要不断向循环中注入token,就能创建一个助手。

  3. 工作坊的实时演示
    在工作坊中,Geoffrey Huntley将实时演示如何构建一个编程助手,并解释其工作原理。通过这种方式,参与者可以直观地理解助手的构建过程。

  4. 编程助手的核心功能
    编程助手的核心功能包括:

    • 读取文件:读取文件内容并将其加载到上下文窗口中。
    • 列出文件:列出指定路径下的所有文件和目录。
    • 执行Bash命令:在计算机上执行Bash命令并返回结果。
    • 编辑文件:根据推理结果对文件进行编辑。
    • 代码搜索:使用ripgrep工具搜索代码模式。
  5. LLM的选择与使用
    并非所有的LLM都适合构建编程助手。Geoffrey Huntley建议选择具有高度“工具调用”能力的模型,如Claude Sonnet或Kimi K2。这些模型被训练为专注于执行工具调用,类似于松鼠追逐坚果的行为。

  6. 上下文窗口的管理
    上下文窗口的大小有限,因此在使用编程助手时,应确保每次活动后清除上下文窗口,以避免信息混乱。

  7. 编程助手的未来
    随着AI技术的快速发展,编程助手已经成为技术行业中的一项基本技能。掌握如何构建编程助手,不仅能够提升个人能力,还能在就业市场中占据优势。

总结:
通过这个工作坊,参与者可以学习到如何构建一个简单的编程助手,并理解其背后的基本原理。Geoffrey Huntley鼓励大家积极投资于个人发展,掌握AI技术,以应对未来的职业挑战。

如果你对这个工作坊感兴趣,可以通过GitHub获取相关材料和源代码。

评论总结

  1. 对现有编码代理的认可与展示

    • 评论1展示了Princeton SWE-bench团队开发的编码代理,代码简洁且表现良好。
    • 引用:“We (the Princeton SWE-bench team) built an agent in ~100 lines of code that does pretty well on SWE-bench.”
    • 引用:“https://github.com/SWE-agent/mini-swe-agent”
  2. 对编码代理局限性的批评

    • 评论2指出,现有代理在处理旧代码库时可能表现不佳,且消耗大量token。
    • 引用:“now build it for old codebase, let's see how precisely it edits or removes features without breaking the whole codebase.”
    • 引用:“lets see how many tokens it consumes per bug fix or feature addition.”
  3. 对CLI编码代理未来发展的质疑

    • 评论3认为,当前CLI编码代理过于简单,容易出错,未来应转向更复杂的仪表盘/HUD界面。
    • 引用:“I really think the current trend of CLI coding agents isn't going to be the future.”
    • 引用:“The future of agents is that multiple of them will be working at once on the codebase.”
  4. 对程序合成的期待

    • 评论4提出,模型应能够根据给定的工具构建并返回可执行的程序。
    • 引用:“Where is the program synthesis? My way of thinking is given primitives as tools, i want the model to construct and return the program to execute.”
  5. 对工具必要性的质疑

    • 评论5质疑,许多功能是否可以通过bash实现,而不需要额外的工具。
    • 引用:“Why are any of the tools beyond the bash tool required?”
    • 引用:“Surely listing files, searching a repo, editing a file can all be achieved with bash?”