造了个 Cli Coding Agent,内置免费模型,开箱即用
起因
一直在用 Claude Code ( Anthropic 官方的 CLI 工具),体验很好,但是闭源的,想加点自己的功能没法搞。
于是花了点时间逆向了一下源码,搞清楚了实现原理,然后自己复刻了一个。
好处是:
- 完全掌控,想加什么功能就加什么功能
- 比如我加了个 Spec 模式(规格驱动开发),这是 Claude Code 没有的
- 可以用自己喜欢的模型和 API Key
- 顺便学习了一波 Agent 的实现原理
既然都写了,就开源出来了。
项目介绍
Blade Code - 一个基于 React + Ink 的 AI 编程助手 CLI 工具。
GitHub: https://github.com/echoVic/blade-code
几个特点
1. 真·开箱即用
npx blade-code
就这一行,不需要配置任何东西。内置了免费的 GLM-4.7 模型(智谱提供的),虽然不是最强的,但日常写代码够用了。
当然你也可以配置自己的 API Key ,支持 OpenAI 、Claude 、Gemini 、Qwen 等等。
2. 工具很全
内置了 20+ 工具,基本覆盖了日常编码需求:
- 文件读写、代码搜索(基于 ripgrep )
- Shell 执行、Git 操作
- Web 搜索、网页抓取
- 任务管理、会话管理
- …
3. 权限可控
这个是我最在意的。提供了 5 种权限模式:
default: 敏感操作需要确认autoEdit: 自动编辑文件,但其他操作需要确认plan: 先规划后执行spec: 规格驱动开发(我自己加的,写需求 → 生成规格 → 确认后执行)yolo: 完全自动(慎用)
还可以设置工具白名单/黑名单,精确控制 AI 能用哪些工具。
4. MCP 支持
支持 Model Context Protocol ,可以接入各种 MCP 服务器。比 Claude Desktop 的配置简单多了:
blade mcp add filesystem
blade mcp add github
5. 会话管理
支持多会话、会话恢复、会话 Fork 。写到一半想切换任务?没问题,随时恢复。
使用体验
基础用法
# 交互模式
blade
# 直接提问
blade "帮我重构这个函数"
# 打印模式(适合管道)
blade --print "写个快排" > sort.js
实际场景
场景 1: 代码审查
blade "review 一下最近的改动"
AI 会自动 git diff ,然后给出建议。
场景 2: 生成文档
blade --print "给这个项目写个 README" > README.md
场景 3: 调试问题
blade "帮我看看为什么测试失败了"
AI 会读取测试输出,分析代码,给出修复建议。
技术实现
简单说几个有意思的点:
1. 无状态 Agent 设计
Agent 本身不保存状态,所有状态通过 context 传递。这样做的好处是:
- 会话可以随时序列化/反序列化
- 支持会话 Fork
- 方便做分布式(虽然现在还没做)
2. 工具系统
基于 Zod 的工具定义和验证,类型安全,扩展方便。内置工具和 MCP 工具用同一套系统。
3. React + Ink
用 React 写 CLI 的体验还挺爽的,组件化、状态管理都很自然。Ink 的性能也不错。
最后
项目刚开源不久,肯定有不少 bug 和不完善的地方。欢迎试用,欢迎提 issue ,欢迎 PR 。
如果觉得有用,给个 star 吧 ⭐️
相关链接
- GitHub: https://github.com/echoVic/blade-code
- NPM: https://www.npmjs.com/package/blade-code
- 文档: https://echovic.github.io/blade-code/
- Discord: https://discord.gg/utXDVcv6
交流群 微信: VIc-Forever (备注「 Blade 」)
P.S. 项目名叫 Blade 是因为想做一个”锋利”的工具,简单、快速、有效。Logo 是一把剑 🗡️
冒昧问一下,对比 opencode ?