从 Cha 到 Ch
重大公告
我正在停止维护 Cha 并专注于 Ch。在 2025 年 8 月 23 日 我将 Cha 标记为已弃用,并将未来所有的开发工作指向 Ch。现在的哲学很简单:只保留一个简单、轻量且快速的工具,维护它并修复错误。不追逐新特性。
我最初为什么构建 Cha
当 LLMs 和 ChatGPT 刚出现时,我想要的 CLI 工具并没有出现。ChatGPT 在 2022 年 11 月发布,并在 2023 年初随着 GPT-4 的发布真正火了起来。我一直在等着成熟的命令行工具出现,但没有一个真的按我想要的方式工作。所以我构建了 Cha 并每天都在使用。事实上,在我的第一篇博客文章中我直言不讳:类似的项目很多,但没有一个符合我的需求,所以我自己写了一个。
Cha 是我的孩子。我每天都用它,也很喜欢维护它。在一年之内,它凭借在 GitHub 上获得的 +60 颗星小有成长。在此期间,它新增了网页抓取、YouTube 转录拉取、图像生成、多行输入、交互式/非交互式聊天、STT 提示输入、支持自定义工具、支持除 OpenAI 之外的各种平台、自己的答案搜索引擎、高级目录导航与文件编辑、复制内容到剪贴板的能力、响应的 TTS 等等。它功能很多,能用,而且作为命令行工具非常有用且强大。
为什么迁移到 Ch(从 Python 到 Go)
随着时间推移,Cha 变得臃肿。功能集很棒,但对于我日常所需而言,表面太广。这导致 Cha 变得非常臃肿。另外它用 Python 编写,这引入了两个关键问题。其一是速度,即便在做了大量优化和工程以绕过 Python 初始包导入缓慢的时间并使用多进程之后,初始加载时间仍然需要 0.8 秒。另一个问题是 Python 非常难以安装。由于 Cha 依赖各种第三方开源工具,安装起来非常有挑战性。我的临界点是在出差时只带着一台运行在 Android 平板并在 在Termux 上运行时,它根本无法工作,要让它勉强工作非常痛苦且毫无意义。
于是我决定开始一个新的实验,叫做 Ch。Ch 会像 Cha,但用 GoLang 而不是 Python 编写,只包含 Cha 的核心必要功能,目标是轻量、快速、易于在大多数系统上安装,并且不那么功能繁重。这样一来,作为唯一维护者也更容易维护该项目。
在几个月的开发和使用 Ch 之后,我看到 Cha 的未来在于 Ch 而不是原始的 Cha 代码库。我在 Cha 上花了太多时间,维护两个代码库对于一个人来说太耗时了,而 Ch 在执行核心功能时更加轻量、更快且更易安装。这使得决定变得清晰……
Go 的重写给了我 快速启动、单个二进制文件 和 更小的心理模型。Ch 的 README 很好的总结了这一点:Ch 是继任者,启动速度超过 10 倍,性能显著更好。
决定
我在 2025 年 8 月 23 日 正式将 Cha 弃用,并在 Cha 的 README 中将人们引导到 Ch。Cha 仓库将作为历史参考保留,而我会把 Ch 保持在维护模式,侧重于稳定性和修复 bug,除非有值得且/或关键需要添加的新功能(随着时间推移这可能意味着什么就看情况了),否则不会再添加太多新特性。
今天 Ch 包含的功能
Ch 覆盖了日常工作流程而没有臃肿的负担:
- 使用用 GoLang 编写的轻量级 CLI 实现的高性能启动
- 多提供商支持(OpenAI、Groq、DeepSeek、Anthropic、XAI、Together、Gemini、Mistral、Ollama)
- 交互式和直接模式、可从任何命令管道输入、文件和目录加载、令牌计数、代码块导出、聊天历史查看、模型/平台切换、回溯、代码转储、Shell 会话录制、剪贴板集成
- 内置网页抓取和搜索,包括 YouTube 链接处理,以一种直接的方式整合
与 Cha 相比 Ch 缺少的内容(以及原因)
Ch 试图只保留 Cha 的核心必要功能,因此我从 Ch 中删减了以下 Cha 的特性:
- 先进的“编辑器”UI 和“答案搜索”不会迁移过来
- 音频、视频和图像摄取、语音转文字和文字转语音,以及一些额外的导出和代码转储便利功能不是优先项
- Cha 中的一些导航辅助和“更改根目录”行为不在 Ch 中
- 本地“带已保存聊天的配置文件”有意不作为默认路径
我把许多这些特性标记为臃肿或“可有可无”。我认为关键的是网页浏览和网页抓取,这在 Ch 中最初缺失,但我已经将其集成进 Ch,使核心循环在没有其余功能的情况下完整。不仅如此,Ch 还有一个新特性叫 !x,它可以在你仍处于 Ch 会话时记录一个 shell 会话并将其添加到聊天历史中,允许你使用其他 CLI 工具并将它们的输出保存在模型输入中(如果你愿意)。这个特性让你在不让 Ch 承担所有负担并变得臃肿的情况下,获得很多原本在 Cha 中缺失的功能。你可以在这篇新的博客文章中了解更多关于 Ch 的信息。
Ch/Cha 与 Claude Code 的比较
在 2025 年 7 月,我写了一篇关于 Cha 与最新 AI 驱动的 CLI 工具的对比,用以解释 Cha 提供了哪些那些工具没有的价值。知道这一点后,我仍想在这篇博客里包含这部分内容,因为 Ch 的核心提供了相同的价值,并且即便在这次迁移之后几个月,该比较仍然成立。同样的理念也适用于 Ch。
关键差异
- Ch/Cha 的方法强调在每一步都完全由用户掌控,不会有后台 AI 工作者做出自主决策。你获得明确的、由用户控制的上下文管理,日常活跃使用的成本通常在每月 1 到 20 美元之间。没有意外的编辑,一切由用户指导,适合深度参与并严格控制成本。
- 像 Claude Code 和 Gemini 这样的 Agent 驱动型 CLI 则走不同的路线,采用自动化工作流决策和智能代理做出自主选择。它们处理 AI 管理的上下文和文件处理,类似使用场景下的成本通常在每月 10 到 200 美元以上。它们在自主代码修改方面表现出色,适合快速原型开发和委派工作。
何时选择 Ch/Cha 风格
- 以最低成本并保持完全透明
- 对每次交互拥有完全控制权
- 深度参与你的开发过程
- 对敏感项目进行明确的上下文管理
何时选择 Agent 驱动工具
- 需要快速原型开发和快速迭代
- 倾向于 AI 自动化和委派
- 更看重速度而非成本
建议
没有万能解。没有一个工具能覆盖所有场景。Ch 非常适合低成本的日常任务和精确控制。像 Claude Code 或 Gemini CLI 这样的 Agent 驱动工具则在复杂的、多文件、多环境的编码场景中,注重速度和自动化时表现突出。当你想降低成本并保持控制时使用 Ch。当你需要快速迭代并且不介意委派控制时使用 Agent 驱动工具。许多人先从 Ch 开始以学习良好的交互模式,然后随着需求演进再添加 Agent 驱动工具。
Cha 与 Ch 的未来
Cha 和 Ch 的未来就是这样。Cha 已被 弃用并归档,仅作为一种历史参考。Ch 现在就是新的 Cha。它将继续维护、加强(如有必要)并被使用。我会强烈抵制对 Ch 的功能膨胀。今后,当我提到 Cha 时,我指的是 Ch,而基于旧版 Python 的 Cha 将被称为 “Cha v0” 或 “旧 Cha”。考虑到这一点——
感谢
如果你从一开始就关注 Cha 的旅程,谢谢你。那个项目教会了我很多,并推动我走向一个更符合我实际工作方式的版本,同时也对社区更有益。如果你是新来的,开始使用 Ch 吧,并保持简单!