从 Cha 到 Ch

项目的 GitHub 仓库

重大公告

我正在停止维护 Cha,并专注于 Ch。在 2025 年 8 月 23 日,我将 Cha 标记为已弃用,并将所有未来的开发工作都指向 Ch。现在理念很简单:保留一个 简单、轻量、快速 的工具,维护它,并修复漏洞。不再追逐功能

我最初为什么构建 Cha

当 LLM 和 ChatGPT 刚出现时,我想要的 CLI 工具一直没有出现。ChatGPT 于 2022 年 11 月发布,并在 2023 年初随着 GPT-4 的发布真正火了起来。我一直在等成熟的命令行工具出现,但没有一个真正以我想要的方式工作。所以我构建了 Cha,并且每天使用它。事实上,在我的第一篇博客文章里,我说得很直白:像这样的项目很常见,但没有一个符合我的需求,所以我自己写了一个。

Cha 是我的心血。我每天都在用它,也很喜欢做这个项目。并且在一年内,它通过在 GitHub 上积累 +60 个星标而稍微成长了一些。在这段时间里,它增加了网页抓取、YouTube 文本转录提取、图像生成、多行输入、交互式/非交互式聊天、STT 提示输入、自定义工具支持、对 OpenAI 之外各种其他平台的支持、它自己的 Answer Search 引擎、高级目录导航与文件编辑、将内容复制到剪贴板的能力、回复的 TTS 等等。它做了很多事情,运行良好,作为命令行工具也确实非常有用且强大

为什么迁移到 Ch(Python 到 Go)

随着时间推移,Cha 变得很重。功能集很好,但对我日常所需来说表面积太大了。这导致 Cha 变得相当臃肿。它还是用 Python 编写的,这带来了两个关键问题。一个是速度,仅初始加载时间仍然需要 0.8 秒,而这还是在做了大量优化和工程工作之后,用来绕过 Python 缓慢的初始包导入时间以及使用多进程。并且 Python 安装起来非常困难。由于 Cha 依赖各种第三方开源工具,安装起来非常有挑战性。我的临界点是,当我旅行时只带着一台运行 iTermuxAndroid 平板,它完全无法运行,而想让它勉强工作也非常痛苦且毫无意义。

所以我决定开启一个叫 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 保持在维护模式,重点放在稳定性和漏洞修复上,除非某个新功能值得添加且/或属于必须添加的关键内容,否则我对新增功能兴趣不大(不管随着时间推移这到底意味着什么)。

Ch 目前包含哪些功能

Ch 覆盖了日常工作流,同时没有臃肿负担:

  • 以 GoLang 编写的轻量级 CLI,启动性能高
  • 多提供方支持(OpenAI、Groq、DeepSeek、Anthropic、XAI、Together、Gemini、Mistral、Ollama)
  • 交互式和直接模式,可从任何命令管道输入,文件和目录加载,token 计数,代码块导出,聊天历史查看器,模型/平台切换,回溯,代码转储,shell 会话记录,剪贴板集成
  • 内置网页抓取和搜索,包括 YouTube 链接处理,以直接明了的方式集成

与 Cha 相比,Ch 缺少什么(以及原因)

Ch চেষ্টা只保留 Cha 的核心功能,但在这样做的过程中,我从 Ch 中删去了以下 Cha 功能:

  • 高级“编辑器”界面和“Answer Search”不会移植过来
  • 音频、视频和图像摄取,语音转文字和文字转语音,以及一些额外的导出和代码转储优化并不是优先事项
  • Cha 中的一些导航辅助功能和“更改根目录”行为不在 Ch 中
  • 本地“带保存聊天的配置文件”并不是默认路径

我把其中很多标记为臃肿或“锦上添花”。我认为关键的是网页浏览和网页抓取,这在 Ch 中原本缺失,但我后来已经把它集成进 Ch,因此核心循环现在可以完整运行,而不需要其他部分。不仅如此,Ch 还有一个名为 !x 的新功能,它会在你仍处于 Ch 会话中时记录一个 shell 会话,并将其添加到聊天历史中,让你可以使用其他 CLI 工具,并在你愿意时为模型保存它们的输出。这个功能让你能够把 Cha 里原本缺失的很多功能带入 Ch,而不需要让 Ch 自己承担所有工作并变得臃肿。你可以在这篇新的博客文章中了解更多关于 Ch 的信息。

Ch/Cha 与 Claude Code 的对比

2025 年 7 月,我写了一篇关于 Cha 与最新 AI 驱动 CLI 工具的对比,用来解释 Cha 提供了哪些那些工具没有的价值。知道这一点后,我仍然想把它包含在这篇博客里,因为 Ch 从本质上讲提供的是同样的价值,而且在这次切换几个月后,这个对比依然成立。同样的理念也适用于 Ch。

关键差异

  • Ch/Cha 的方式强调在每个步骤上都由用户完全控制,没有后台 AI 工作器做自主决策。你会获得明确、由用户控制的上下文管理,日常主动使用时费用通常每月在 1 美元到 20 美元之间。没有意外修改,一切都由用户引导,这使其非常适合深度参与和严格的成本控制。
  • 像 Claude Code 和 Gemini 这样的代理式 CLI 走的是另一条路,它们通过自动化工作流决策和智能代理做出自主选择。它们处理 AI 管理的上下文和文件处理,类似使用量的费用通常每月在 10 美元到 200 多美元之间。它们擅长自主代码修改,因此非常适合快速原型开发和任务委派。

何时选择 Ch/Cha 风格

  • 最低成本且完全透明
  • 对每次交互都拥有完全控制权
  • 深度参与你的开发过程
  • 对敏感项目进行显式上下文管理

何时选择代理式工具

  • 快速原型开发和快速迭代
  • 偏好 AI 自动化和任务委派
  • 速度优先于成本考量

建议

没有万能解药。没有任何工具能覆盖所有场景。Ch 非常适合成本高效的日常任务和精确控制。像 Claude Code 或 Gemini CLI 这样的代理式工具在复杂、多文件、多环境编码方面表现出色,重点是速度和自动化。当你想降低成本并保持控制时,用 Ch。当你需要快速迭代且不介意委派控制权时,用代理式工具。许多人从 Ch 开始学习良好的交互模式,然后随着需求演变再加入代理式工具。

Cha 和 Ch 的未来

Cha 和 Ch 的未来就是这样。Cha 已经弃用并归档,只作为某种历史参考存在。Ch 现在就是新的 Cha。它将继续被维护、增强(如果需要)并使用。我会强烈抵制 Ch 的功能蔓延。并且从今以后,当我说/提到 Cha 时,我指的是 Ch,而旧的基于 Python 的 Cha 将被称为 “Cha v0”“旧 Cha”。考虑到这一点

谢谢你

如果你从一开始就关注了 Cha 的历程,谢谢你。那个项目让我学到了很多,也推动我走向了一个更符合我实际工作方式、同时也更有利于整个社区的版本。如果你是新来的,请开始使用 Ch 并且保持简单