造了个 Cli Coding Agent,内置免费模型,开箱即用 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
echoVic
V2EX    程序员

造了个 Cli Coding Agent,内置免费模型,开箱即用

 
  •   echoVic 11 天前 1212 次点击

    起因

    一直在用 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 吧


    相关链接

    交流群 微信: VIc-Forever (备注「 Blade 」)


    P.S. 项目名叫 Blade 是因为想做一个"锋利"的工具,简单、快速、有效。Logo 是一把剑

    7 条回复    2026-01-16 08:47:29 +08:00
    buaishi
        1
    buaishi  
       11 天前
    冒昧问一下,对比 opencode ?
    echoVic
        2
    echoVic  
    OP
       11 天前
    @buaishi OpenCode 项目很赞!我做 Blade Code 主要是:

    1. 想深入理解 Claude Code 的实现原理,所以逆向了一遍
    2. 想加一些自己的功能,比如 Spec 模式(规格驱动开发)


    两个项目定位不太一样,OpenCode 更通用,Blade Code 更贴近 Claude Code
    的使用体验。

    建议都试试,或者可以用我的项目二开
    iorilu
        3
    iorilu  
       11 天前
    想问问

    你说的逆向 claude code, 是指包含了所有 claude code 功能, 并在此基础上强化了吗

    还是说, 只是学习了 claude code 的代码架构原理等, 自己重新开发的
    echoVic
        4
    echoVic  
    OP
       11 天前
    @iorilu claude code 没有源码,所以看 claude code 压缩后的代码,根据自己的理解重新开发了一个,也加入了自己的一些想法
    keakon
        5
    keakon  
       11 天前
    其实可以参考 https://github.com/NoeFabris/opencode-antigravity-auth 来白嫖 Antigravity 。
    自己的 GLM Coding Plan 可能存在盗用的情况。
    echoVic
        6
    echoVic  
    OP
       10 天前
    @keakon 支持 Antigravity auth 的
    盗用就盗用吧,这个也不贵
    clarkyu
        7
    clarkyu  
       8 天前
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1025 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 18:53 PVG 02:53 LAX 10:53 JFK 13:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86