Claude Code、Cursor与TRAE:谁才是真正的AI王者?

共计 4126 个字符,预计需要花费 11 分钟才能阅读完成。

在您常用的代码生成工具中,哪个功能最强大?

1. 理解能力卓越

2. 代码质量出色

3. 生成效率高

4. 使用成本

如果您有其他推荐,欢迎分享,谢谢!

项目起源

最近,Claude Code 受到广泛关注,作为一个终端 AI 编程助手,它能够直接在命令行中帮助用户编写代码、修复 Bug 和执行命令。

经过一段时间的使用,我产生了一个想法:这种技术的核心原理到底是什么?我是否能够尝试自己开发一个呢?

因此,我花费了几周的时间,用 Go 语言从头构建了一个迷你版本,命名为MiniCode

完成后,我意识到这个过程涉及的知识点相当多,而网上关于此的系统性讲解却很少。因此,我将整个过程整理成一个30 天教程,从最基本的 API 调用,到流式输出、工具系统,再到 TUI 界面,逐步引导你理解 AI Agent 的核心原理。

项目链接: https://github.com/JiayuXu0/MiniCode 欢迎大家 Star,衷心感谢!

https://www.zhihu.com/video/1992713323851036365


结论:AI Agent 并不复杂

许多文章对 AI Agent 的描述显得非常神秘,提到诸如“自主决策”、“任务规划”以及“记忆系统”等概念,仿佛是在讨论通用人工智能(AGI)。

但其实,其核心原理相当简单:

它的运作方式是一个 循环过程:LLM 会决定是否使用工具,若使用则将结果反馈,再由 LLM 判断,直到它认为可以给出答案为止。

Claude Code 的“智能”本质上源于:

  1. 强大的基础模型(Claude 4)
  2. 精心设计的工具集合(20 多个工具)
  3. 巧妙的提示工程

虽然我们无法匹敌其模型能力,但在工具系统和架构设计方面,完全可以借鉴。


为何选择 Go 而非 Python?

网络上 90% 以上的 AI Agent 教程都是基于 Python 和 LangChain。我选择 Go 的原因包括:

1. 性能优势

Go 编译成原生二进制,启动速度快,内存占用小。而 Python 在导入一系列依赖时就需要耗费几秒。

2. 部署便捷

只需将一个二进制文件复制到服务器上即可运行,无需安装 Python、配置虚拟环境,也不需要花费时间进行 pip install。

3. 支持并发处理

流式输出要求同时处理多个任务:接收 API 响应、更新用户界面、响应用户输入。Go 的 goroutine 非常适合这种场景,相较于 Python 的 async/await,使用起来更加方便。

4. 类型安全

工具的输入和输出都有明确的类型定义,编译阶段能够及时发现错误。而 Python 有时只能在运行时才提示你 KeyError。


技术栈选择

组件 选择 理由
AI SDK Fantasy 由 Charmbracelet 开发,比 LangChain 轻量十倍
TUI 框架 Bubble Tea 基于 Elm 架构,状态管理清晰
LLM 智谱 GLM-4 国产模型,提供免费额度,API 兼容 OpenAI

Fantasy 是我这次的意外收获。它是由 Charmbracelet(即开发 Bubble Tea 的团队)推出的 AI SDK,具备以下特点:

  • 统一接口,支持 OpenAI、Anthropic、Google 等主流服务提供商
  • 原生支持流式输出
  • 工具系统设计优雅
  • 避免了 LangChain 的过度抽象

核心实现:工具系统

Claude Code 最为核心的功能是 工具调用。例如,当你请求“帮我找到所有 Go 文件”时,它将:

  1. 理解你的请求
  2. 调用相应工具进行文件搜索
  3. 获取结果后组织语言进行回复

在 Fantasy 中,定义一个工具极为简单:

// 定义输入结构
type GlobInput struct {Pattern string `json:"pattern" description:"The glob pattern (e.g., **/*.go)"`
    Path    string `json:"path,omitempty" description:"Search directory"`
}

// 实现工具函数
func Glob(ctx context.Context, input GlobInput, call fantasy.ToolCall) (fantasy.ToolResponse, error) {matches, err := doublestar.FilepathGlob(filepath.Join(input.Path, input.Pattern))
    if err != nil {return fantasy.NewTextErrorResponse(err.Error()), nil
    }
    return fantasy.NewTextResponse(fmt.Sprintf("Found %d files:n%s", len(matches), strings.Join(matches, "n"))), nil
}

// 注册工具
tool := fantasy.NewAgentTool("glob", "Search files by pattern", Glob)

几个关键要点:

  1. description 标签会发送给 LLM,让其明确该参数的用途
  2. 返回 TextErrorResponse 表示工具执行失败,LLM 将意识到需要换一种方法
  3. Fantasy 会自动将结构体转换为 JSON Schema

目前 MiniCode 实现了六个工具:

工具 功能
glob 文件搜索(支持 ** 递归)
view 查看文件内容(带行号)
grep 内容搜索(正则匹配)
bash 执行命令
write 写入文件
edit 编辑文件(字符串替换)

流式输出:打字机效果

非流式输出的体验往往较差——发送请求后,需要等候数秒才能看到回复,过程不明朗。

流式输出则能实时展示 AI 的思考过程:

result, err := agent.Stream(ctx, fantasy.AgentStreamCall{
    Messages: history,
    Prompt:   input,
    
    OnTextDelta: func(id, text string) error {
        // 每收到一个文本片段就更新 UI
        program.Send(streamTextMsg{delta: text})
        return nil
    },
    
    OnToolCall: func(tc fantasy.ToolCallContent) error {
        // 工具调用开始,显示 loading 状态
        program.Send(streamToolCallMsg{name: tc.ToolName})
        return nil
    },
    
    OnToolResult: func(tr fantasy.ToolResultContent) error {
        // 工具执行完成,显示结果
        program.Send(streamToolResultMsg{result: tr.Result})
        return nil
    },
})

这里有一个需要注意的地方:回调函数在独立的 goroutine 中执行,因此不能直接修改 UI 状态,以免造成竞态条件。

解决方案是通过 program.Send() 发送消息到主循环,由 Bubble Tea 的 Update 函数统一处理。


TUI 架构:Elm 模式

Bubble Tea 采用 Elm 架构,核心由三个函数组成:

  • Model: 应用状态
  • Update: 根据消息更新状态
  • View: 根据状态渲染界面

这种架构的优点在于 状态管理非常清晰。所有状态的修改都在 Update 函数中进行,而 View 则是一个纯函数,不存在意外的副作用。

MiniCode 的 Model 结构如下:

type Model struct {
    textarea    textarea.Model    // 输入框
    viewport    viewport.Model    // 消息显示区
    history     []fantasy.Message // 对话历史
    agent       fantasy.Agent     // AI Agent
    streaming   bool              // 是否正在流式输出
    streamParts []streamPart      // 流式内容缓存
    cancelFunc  context.CancelFunc // 取消函数
}

教程大纲

整个项目整理为一个 30 天的教程,目前已完成第 1-4 天的内容:

Day 主题 内容
Day 1 创建第一个 AI Agent Fantasy SDK 基础、Provider、Agent
Day 2 为 Agent 添加工具 Tool 系统、Glob 实现、AgentResult 结构
Day 3 构建交互式 TUI Bubble Tea、Elm 架构、多轮对话
Day 4 实现流式输出 Streaming API、跨 goroutine 通信、取消机制
Day 5+ 更多工具和高级特性 持续更新中…

每篇教程都包含完整的代码示例和详细的原理解析,而不是那种“Hello World”轻松完成的简单文档。


总结

开展这个项目的初衷,旨在弄清楚 Claude Code 的工作原理。完成后我意识到,AI Agent 的核心原理其实并不复杂,真正的挑战在于工程细节和产品的打磨。

目前已完成第 1-4 天的教程,实现了基本功能:流式输出、工具调用、多轮对话、TUI 界面。接下来我会持续更新,将 30 天的内容全部整理完毕。

后续更新计划:

  • Day 5-10:完善工具集(文件读写、代码编辑、命令执行)
  • Day 11-20:Agent 循环与上下文管理
  • Day 21-30:子 Agent、记忆系统、生产级部署

老实说,编写教程的工作比写代码要辛苦得多——代码只要能够运行就好,而教程则需要将每一个细节都解释清楚。因此,我恳请大家:

  • 给我点个 Star ⭐️ —— 这将是我不断更新的最大动力
  • 关注这个项目 —— 这样你能第一时间接收到更新通知
  • 请关注我 —— 我会在知乎上同步每天的教程内容

一个人独自写作容易分心,有人关注就会变得不一样了。

GitHub: https://github.com/JiayuXu0/MiniCode

如果你在学习过程中遇到任何问题,欢迎提出问题,我会尽量给予回复。同时也欢迎你贡献代码,一起完善这个项目。

让我们共同努力,在 30 天内理解 AI Agent 的运作!

来源:知乎
原文标题:Claude Code、Cursor、TRAE,究竟谁最强?– liuxr 的回答
声明:
文章来自网络收集后经过 ai 改写发布,如不小心侵犯了您的权益,请联系本站删除,给您带来困扰,深表歉意!
正文完
 0
小智
版权声明:本站原创文章,由 小智 于2026-01-26发表,共计4126字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
使用智语AI写作智能工具,您将体验到ChatGPT中文版的强大功能。无论是撰写专业文章,还是创作引人入胜的故事,AI助手都能为您提供丰富的素材和创意,激发您的写作灵感。您只需输入几个关键词或主题,AI便会迅速为您生成相关内容,让您在短时间内完成写作任务。
利用AI智能写作工具,轻松生成高质量内容。无论是文章、博客还是创意写作,我们的免费 AI 助手都能帮助你提升写作效率,激发灵感。来智语AI体验 ChatGPT中文版,开启你的智能写作之旅!
评论(12 条评论)
冷清风 评论达人 LV.1
2026-01-26 09:50:56 回复

听说 Go 的部署非常方便,省去了不少麻烦,真是个好选择!

     未知
治愈晚风 评论达人 LV.1
2026-01-26 09:40:56 回复

对于新手来说,直接上手 Go 的难度是不是被低估了?

     未知
兔酥可 评论达人 LV.1
2026-01-26 09:30:56 回复

这个 30 天的教程听上去很有挑战性,能否分享一些学习资源或心得?

     未知
霁饼干 评论达人 LV.1
2026-01-26 09:20:56 回复

你觉得 MiniCode 的学习曲线如何?新手能跟得上吗?

     未知
薛山酥 评论达人 LV.1
2026-01-26 09:10:56 回复

Claude Code 的功能确实很强大,尤其是代码修复方面,省下了很多时间。

     未知
林澜夏 评论达人 LV.1
2026-01-26 09:00:56 回复

对于新手来说,直接上手 Go 开发 AI Agent 可能会遇到不少挑战吧?

     未知
自在北屿 评论达人 LV.1
2026-01-26 08:50:56 回复

在构建 AI Agent 时,提示工程的设计是否有特别需要注意的地方?

     未知
顾子微 评论达人 LV.1
2026-01-26 08:40:56 回复

你觉得 Go 的学习曲线如何?对新手友好吗?

     未知
风布丁 评论达人 LV.1
2026-01-26 08:30:56 回复

你说的类型安全让我想起 Python 的种种麻烦,看来 Go 还是有其独特的魅力。

     未知
沈冷盐 评论达人 LV.1
2026-01-26 08:20:56 回复

用 Go 开发 AI Agent 听起来很酷,为什么不多分享一些使用心得呢?

     未知
月光酱 评论达人 LV.1
2026-01-26 08:10:56 回复

你提到的 MiniCode 项目让我很感兴趣,有没有计划分享更多开发细节?

     未知
单一森 评论达人 LV.1
2026-01-26 08:00:56 回复

对于想要快速部署的开发者来说,Go 的优势不容忽视,尤其是在服务器环境中,确实方便很多。

     未知
利用智语AI写作工具,轻松生成高质量内容。无论是文章、博客还是创意写作,我们的免费 AI 助手都能帮助你提升写作效ai率,激发灵感。来智语AI体验ChatGPT中文版,开启你的智能ai写作之旅!
12