我逆向了 Claude Code,并接入了 qwen - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
musi
V2EX    分享创造

我逆向了 Claude Code,并接入了 qwen

  •  1
     
  •   musi 228 天前 7266 次点击
    这是一个创建于 228 天前的主题,其中的信息可能已经有所发展或是发生改变。

    夜里发布的 Claude Code 还需要申请资格,看了下使用 nodejs 实现的,尝试逆向。主要就是去除了资格验证以及实现了接口转发请求,以下是效果图。

    第 1 条附言    228 天前
    46 条回复    2025-06-25 15:28:25 +08:00
    googlefans
        1
    googlefans  
       228 天前
    可以拿来赚钱了
    musi
        2
    musi  
    OP
       228 天前   3
    @googlefans 没有这个打算,并且已经开源了
    https://github.com/musistudio/claude-code-reverse
    Tsingchengliu
        3
    Tsingchengliu  
       228 天前
    早上看到 claude code 时,我想:几周内肯定有人逆向支持自定义 apikey 。没想到当天就有了,神速
    liu11onepoint
        4
    liu11onepoint  
       227 天前
    可以部署到 vercel 或者 netlify 不
    musi
        5
    musi  
    OP
       227 天前
    @liu11onepoint #4 claude code 是在本地终端运行的,不理解你这里的部署是部署什么东西
    ZephyrusOrz
        6
    ZephyrusOrz  
       227 天前
    好快的逆向,可以接入 R1 了
    musi
        7
    musi  
    OP
       227 天前
    @ZephyrusOrz #6 事实上,Claude Code 基本上无法使用 R1 ,因为基本上都是通过 Function Call 实现的功能,而 R1 系列基本不支持
    ZephyrusOrz
        8
    ZephyrusOrz  
       227 天前
    @musi 那支持哪些模型呢?有空的时候准备折腾一下
    musi
        9
    musi  
    OP
       227 天前
    @ZephyrusOrz #8 按道理来说支持 function call 的模型都支持,就是最终效果行不行的问题,我目前试了 qwen-max-2025-01-25 ,效果还可以,不过费 token ,官网送的一百万 token 我已经用了只剩 30w 了
    ZephyrusOrz
        10
    ZephyrusOrz  
       227 天前
    @musi 空了研究一下!感谢 OP
    netyang
        11
    netyang  
       227 天前
    @musi 好像还是得登录?
    musi
        12
    musi  
    OP
       227 天前
    @netyang #11 你需要先删掉 HOME/.claude.json 这个文件然后再开启服务
    lavvrence
        13
    lavvrence  
       227 天前
    Koala 团队也做了一样的事: https://www.bilibili.com/video/BV1cKPjeUEPN
    musi
        14
    musi  
    OP
       227 天前
    @jaylee4869 他们侧重点在于还原整个项目代码,我的侧重点在于在不侵入官方代码的情况下转发 API 使用
    foufoufm
        15
    foufoufm  
       226 天前
    支持一下,不过看不太懂原理,希望有机会能分享一下
    lanceran
        16
    lanceran  
       226 天前
    这个服务开启之后怎么使用呢,直接 claude 使用就可以了吗大佬
    musi
        17
    musi  
    OP
       226 天前
    @lanceran 你需要在环境变量或.env 文件中配置 OpenAI 的 baseurl key model 就可以用了
    imlink
        18
    imlink  
       226 天前
    已感谢,可以跑。提示下如果用 gpt4-mini 的模型,input token 会不够
    musi
        19
    musi  
    OP
       226 天前
    @imlink 确实很费 token ,我一天就跑完了 qwen 的一百万 token ,我正在正尝试先用本地 qwen:32b 模型做个网关,对于复杂 code 任务自动路由到远端大模型
    HeMaSchool
        20
    HeMaSchool  
       226 天前
    运行起来好像有问题
    [![image.png]( https://i.postimg.cc/90ZFXV7F/image.png)]( https://postimg.cc/kRMdw0sk)
    musi
        21
    musi  
    OP
       226 天前 via iPhone
    @HeMaSchool #20 你使用的什么模型呢
    ldw2046
        22
    ldw2046  
       225 天前
    楼主,这个可以用 deepseek 的模型吗?我还是不太了解怎么使用。const apiKey = process.env.OPENAI_API_KEY;
    const baseUrl = process.env.OPENAI_BASE_URL;
    const defaultModel = process.env.OPENAI_MODEL; 是修改这几个参数吗?
    musi
        23
    musi  
    OP
       225 天前
    @ldw2046 #22 不可以使用 ds 的模型,ds 目前不能很好的支持 function call ,你可以用 qwen 或者 openai 的
    这几个参数使用环境变量,你可以直接设置环境变量,也可以直接在 index.mjs 同级目录下创建一个.env 文件,内容类似于
    OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
    OPENAI_MODEL="qwen-plus-2025-01-25"
    OPENAI_API_KEY=""
    ldw2046
        24
    ldw2046  
       225 天前
    多谢啦,到时候试试
    musi
        25
    musi  
    OP
       224 天前 via iPhone
    @ZephyrusOrz
    @imlink
    @ldw2046
    最新进展,现在可以通过 router 模式支持 ds 的 chat 和 r1 ,用上 ds 的 cache 确实便宜了不少
    ZephyrusOrz
        26
    ZephyrusOrz  
       224 天前
    @musi 多谢
    musi
        28
    musi  
    OP
       223 天前 via iPhone
    @lulu00147 你这个是想表达什么?
    74123gzy
        29
    74123gzy  
       222 天前
    gemini 2.0 如何?这个 api 免费
    musi
        31
    musi  
    OP
       222 天前
    @74123gzy 看了下,又是个新的 API 格式,兼容格式是个麻烦事,还有就是我在测试的过程中发现 gemini-2.0-flash 对 system prompt 的遵从不是很好,不知道是不是我用的方法有问题
    musi
        32
    musi  
    OP
       222 天前
    @74123gzy #30 我发现官方有支持 OpenAI 格式的地址,加了个代理测试了一下,这个模型跟智障差不了多少,不知道是不是我没付费给我降智了
    catwalk
        33
    catwalk  
       219 天前
    很赞,能加上 xai api 吗,这个充 5 刀,每月送 150 刀额度
    trio
        34
    trio  
       122 天前
    哥,牛逼
    trio
        35
    trio  
       122 天前
    @74123gzy 你试试 LiteLLM ,代理所有 LLM
    musi
        36
    musi  
    OP
       122 天前 via iPhone
    @trio 很巧我在今天更新了一版,这几天我发现 claude code 在工程上的优化用 deepseek 意外的好用(v3 也能用步骤规划),工具调用的成功率大大增加了,甚至在强依赖项目上文的场景比我直接用 vscode 的 copilot 中的 Claude4 还好用。直接导致我两天用了 deepseek 一千万的 token ,但是 ds 官网提供的 api 才 64k ,有些场景这个上下文还是太小了,后面我试试火山的
    nianlifeixing
        37
    nianlifeixing  
       119 天前
    @musi 感谢 op ,很有用,不过好像支持超长上下文的免费模型比较少,dp 和 qwen 都好像不太多?另外逆向是通过什么分析的呢,很感兴趣
    musi
        38
    musi  
    OP
       119 天前 via iPhone
    @nianlifeixing 我并没有用免费模型,目前 deepseek 官网和火山引擎的混着用,后面会通过路由将长上下文转发到 gemini-2.5-pro 去处理

    整体的开发思路还在整理,后面会在项目中增加几篇文章用于描述思路和我的一些实践
    musi
        39
    musi  
    OP
       117 天前   1
    yyzq007
        40
    yyzq007  
       113 天前
    用起来了, 哥们牛逼
    pxiphx891
        41
    pxiphx891  
       113 天前
    配置在 Router 中的模型和配置在 OPENAI_MODEL 的模型有什么区别?
    musi
        42
    musi  
    OP
       113 天前 via iPhone
    @pxiphx891 OPENAI_MODEL 是主模型,Router 是在匹配某些规则时使用的模型,目前 OPENAI_MODEL 的存在是因为兼容历史版本的配置
    yibo2018
        43
    yibo2018  
       109 天前
    没想到在这里看到作者本人,目前用下来,deepseek 的体验很差劲,推理模型一直卡住不动,chat 模型不会自动执行,每一步都要确认一下 @
    mzl980425
        44
    mzl980425  
       109 天前
    太强了,已经 star
    musi
        45
    musi  
    OP
       109 天前
    @yibo2018 我正在尝试重构转换服务,后面会使用提示词增强 v3 的体验,但还是不建议将 r1 用到默认模型
    AngdyChen
        46
    AngdyChen  
       108 天前
    太强了,用起来了
    任务虽然不能说完全平替但是还真能行
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2595 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 14:44 PVG 22:44 LAX 07:44 JFK 10:44
    Do have faith in what you're doing.
    ubao 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