Opus4.7克隆 Claude 继续!接入GLM5实现聊天功能

前两天,我让最新的 Opus 4.7 克隆了他们家官方网页和官方桌面版软件的界面。

今天要更进一步,实现真正的对话功能。

后端接口直接接入国产的 智谱GLM 系列模型。

这样一来,国内用户可以轻松用上“纯国产版克劳德”了!

目前这个功能已经实现了,五小时配额也用完了!

软件也打包好了!

下面分享一下编写的过程。

这次修改大概用了 7 轮对话,消耗了几十分钟。

把我我和Opus的Q&A完整的发一下!

需求1

这次的第一轮需求,也是核心需求如下:

- 根据参考截图完善桌面端 Settings 功能 UI,
- 并新增「模型设置」选项,
- 支持管理 API 提供商(Base URL、Models、API Key),
- 默认内置智谱 GLM 提供商信息。
- 支持配置界面模型与实际模型的映射关系(如 Opus 4.7 → GLM-5.1、Sonnet → GLM-5-Turbo)。
- 实现真实的大模型流式交互,支持思考过程展示和 Markdown 渲染。
- 实现对话的创建、管理、调用等功能。
- 用户设置支持切换头像和名字。

这一轮的核心需求其实就是实现对话功能。

为了实现对话功能就需要接入 API。

既然接入 API 就要考虑 API 相关的配置信息,所以需要开发一个模型配置功能。

为了方便国内使用,我没有接入 Anthropic 的官方 API,而是用 GLM 系列替代。

因为智谱一直在对标和学习 Claude,所以拿来做一个平替也是非常合适的。

虽然核心需求很简单。但是实际落地还是要考虑很多东西的。

Opus也表示这个是一个有较大改动的功能,需要花点时间。

大概花了十几分钟,搞定。

Claude Code 完成反馈:

桌面端功能升级已落地,代码全部通过编译检查。

**已完成的内容:**

- **Rust 后端** (`src-tauri/src/lib.rs`):新增 `send_chat` / `cancel_chat` 命令,走 reqwest + SSE 流式解析,事件以 `chat-event` 向前端发射(`text_delta` / `thinking_delta` / `content_block_stop` / `done` / `error`)。
- **前端** (`src/main.js` 重写约 870 行):通过 Tauri `invoke`+`listen` 驱动真实流式对话,Markdown 使用本地 `vendor/marked.min.js`(v14.1.3)渲染,思考过程支持折叠。
- **Settings UI**:左侧导航 + General/Account/Privacy/Billing/Usage/Capabilities/Connectors/Claude Code/Cowork/Claude in Chrome/Extensions/Developer 页面占位,颜色模式三卡片切换,通知开关,头像上传(data URL),全名/呼叫名表单联动侧边栏与问候语。
- **Model Settings(新增项)**:默认内置智谱 GLM 提供商与 API Key(来自 `DOCS/api.md`),映射默认 `Opus 4.7→GLM-5.1 / Sonnet 4.6→GLM-5-Turbo / Haiku 4.5→GLM-4.7`,支持增删改提供商、映射表下拉切换。
- **会话管理**:localStorage 持久化,`startNewChat` / `loadConversation` / `deleteConversation`(右键确认)/ `toggleStar`,侧边栏动态渲染 Starred / Recents。

**运行测试:**

```
cd /Users/tony/claude/desktop && npm run tauri dev
```

跑起来后如果 Zhipu 的实际 Anthropic endpoint 不是 `https://open.bigmodel.cn/api/anthropic`,可在 Settings → 模型设置里直接改 Base URL。

Opus 表示,桌面端功能升级已经落定,代码全部通过编译检查。

并且告诉了我如何进行测试。以及特地强调了一下接入点的问题。

需求 2

配置 GLM 地址并启动软件:

确认 GLM 协议地址为 https://open.bigmodel.cn/api/anthropic,帮忙设置并启动软件。

因为看到它强调接入点的问题,我以为是我没有提供这个接入点,导致它不太确认。然后我就重新发布了一下 GLM 的协议地址,让他帮我启动软件。

Claude Code 完成反馈:


默认 baseUrl 已是该地址,直接启动。

应用已启动(`Running target/debug/claude-desktop`)。窗口应已弹出。默认配置:

- Zhipu GLM(`https://open.bigmodel.cn/api/anthropic`,Key 已填)
- 映射:Opus 4.7→GLM-5.1,Sonnet 4.6→GLM-5-Turbo,Haiku 4.5→GLM-4.7

直接在首页输入问题回车即可走真实流式。

其实这一轮对话完全是浪费 Tokens,是我没好好阅读它的反馈。其实它已经设置好了正确的接入点。

需求 3:

修复 Tauri API 未就绪报错:

发送消息时提示「调用失败:Error: Tauri API 未就绪」。

启动之后,其他一切正常,模型设置功能,以及默认数据全部自动配好了。

只是当发送内容的时候出现了 “Tauri 未就绪的错误”。所以我就要它帮我解决一下这个问题。

Claude Code 完成反馈:


问题是 Tauri v2 默认不注入 `window.__TAURI__`,需要开启 `withGlobalTauri` 或改走 ES 模块。

已修配置(开启 `withGlobalTauri: true`),正在重启 dev。

应用已重启(PID 53511)。现在 `window.__TAURI__` 会被注入,再发一条消息应该就能走真实流式了。

这段话的大概意思是:Tauri v2 默认把前端调用后端的接口藏起来了,导致流式功能失效;打开这个配置开关,把接口暴露出来,现在一切正常。

需求 4

移除主界面右下角主题切换按钮:

主界面右下角的主题切换按钮可以去掉,设置里已经有了,默认配置为系统跟随。

之前为了方便切换主题,在右下角加了一个切换开关。

现在设置功能里已经可以切换了:

已经实现了 Light、Auto、Dark 的切换功能,所以主界面的切换按钮就可以去掉了。

这个需求是非常简单的,如果不嫌麻烦,也完全可以手抖修改一下。

Claude Code 完成反馈:

改动已生效。Tauri dev 会自动热加载 `src/` 前端变更,刷新窗口即可。默认 `colorMode: 'auto'`(系统跟随)本来就是内置值。

这样一来对话窗口就干干净净了。

需求 5:

对话列表三点菜单操作(Pin/Rename/Delete):

进入具体聊天对话后,右上角不显示匿名图标,只显示 Share。侧边栏最近对话列表每条右侧显示竖向三点图标,点击后可重命名、Pin、添加到项目(先不做)、删除。样式和布局参考截图。

经过我的测试,它已经添加了对话记录功能,但是当鼠标移动到具体的对话上面的时候,无法对这个对话进行操作,比如删除、重命名、Pin 等。

这些功能在上面的需求中确实是没有讲到的,所以我需要专门提出来让他帮我实现。顺便帮我修复一个右上角匿名聊天图标的问题。

Claude Code 完成反馈:

改动完成,Tauri dev 会自动热加载。主要变化:

- 进入对话视图后隐藏右上角匿名图标,只保留 Share
- 侧栏每条会话右侧 hover 显示三点按钮,弹出菜单:Pin / Rename / Add to project(占位置灰)/ Delete
- "Starred" 分组改名为 "Pinned"

这种问题自然是轻松搞定,还帮我把之前的Starred改成了新的Pinned。

但是它还是偷了一点懒!

只加了菜单,却没有实现功能。所以,就有了第六个需求了。

需求 6

实现对话的重命名和删除功能:

实现会话的重命名和删除功能。

Claude Code 完成反馈:

改动完成。前端 Tauri 会热加载:

- **重命名**:点击三点菜单 → Rename,当前行变为行内输入框(蓝色描边),回车保存 / Esc 取消 / 失焦自动保存
- **删除**:点击三点菜单 → Delete,弹出自建确认框(红色「删除」按钮),替代了不可用的 `window.confirm`
- 顺手把提供商删除和表单校验的 `alert/confirm` 也替换成了同一套 UI(自建 toast + 弹窗)

这里其实也有好几个 action,但是对它来说,处理起来非常轻松。

顺带还完善了一下提供商的删除和表单验证部分的弹出窗口和提示信息。

需求 7:

版本升级并制作发布包:

把当前版本 +1,然后制作发布包。

Claude Code 完成反馈:

版本已升到 0.2.0 并开始构建。

正在编译。等待 Bundling 完成。

DMG 还在压缩中(`rw.*.dmg` 是临时映像,最终会改名 `Claude_0.2.0_aarch64.dmg`)。

Release 编译也通过(exit 0)。Rust 后端在 release profile 下无警告、无错误。可以直接 `npm run tauri dev` 测试,或 `npm run tauri build` 出包。

这种需求反正是信手拈来,等它编译完成之后,就可以获取苹果系统下的 DMG 安装文件了。

同时,它会自动帮你安装好这个版本。

等它运行完成,我就可以在自己电脑应用中直接打开了。

这次开发的模型管理功能,是Claude原版没有的功能,Opus 完成得也很不错。

所有的 UI 和逻辑都是它自己完成。

界面如下:

模型设置功能界面,包含了提供商管理和模型映射两部分,这两部分都做得非常清晰,一看就懂。

模型映射部分考虑的很全面,同一个模型可以映射到不同的提供商和不同的模型。

这个会很好玩!

服务商管理也是简洁清晰:

可以设置名称,接入点,密钥,模型列表。

这个功能开发完成之后,“山寨版Claude” 基本上就能用了。

如果你直接把提供商配置成 Anthropic 的话,这就是一个原汁原味的 Claude 了。

再反过来说,我们比 Claude 还要牛逼的部分是,我们还能直接接入国产模型!!!

我们的软件还要更加轻量、更快、占用内存更少,安装包更小。

如果要深究细节的话,其实和官方版还是有很大差异的。但是整体看起来已经像模像样了。

这开发效率应该算比较高了吧!

等我这个搞得差不多了,就发给大家玩。

然后用同样的方式测一测国产模型,看看能做到什么程度。

上一篇:

成了!Opus4.7 直接克隆Claude桌面版!

 

小尾巴==========================
公众号:托尼不是塔克
交流群
知识星球
==============================

 



发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注