位置:首页 > 进阶教程 > GPT5.6接手Opus4.8项目后为何会翻车

GPT5.6接手Opus4.8项目后为何会翻车

时间:2026-08-21  |  作者:318050  |  阅读:0

我非常生气,必须曝光它。GPT 5.6 Sol 这个浓眉大眼的,看起来那么靠谱,一上来就挖了一个坑,让它改又牛头不对马嘴!

让它分析为什么改错了,它就说是上家 Opus 自己写的也不行。直到我精准指出问题点之后,它才说是它重构的时候写错代码了……卧槽,我感觉现在我的代码不干净了。

我现在想直接铲掉它改的代码,但是我已经消耗了一周的配额……沉默的时间成本和 tokens 成本啊。

这个项目 K3 重构都没出问题,你 TM 给我挖了这么多坑,浪费一天时间,只能拿来当写作素材了。

下面给大家分享一下脉络,让大家充分理解整个过程。高手和看似高手,其实还是有很大差别的!

1、核心需求

我先从核心需求说起。

我之前套壳 Claude Code,并抄袭 Claude Desktop 的界面,做了一个高度还原 Claude 的中文版 Claude 桌面版,而且完全切割了官方的登录,可以轻松配置第三方模型。

这个项目本身挺好的。

但是最近做了一些 fork 版本,以及要做功能更新时,我发现了一个隐藏问题:单文件代码量太大了,快要上万行了。

所以我希望重构一下这个项目。其实也不算重构,只是重新做模块化设计。

这个任务,Opus 4.8 和 K3 已经在 fork 中做过一次了。这次 Opus 配额用完了,我就决定让 GPT 5.6 推进我的主项目。

2、分析问题

按照我们的惯例,有需求,先要分享需求和项目的情况。

所以我的第一轮对话是这样的:

他的结论是:

然后他列出了当前结构判断:

文件规模主要问题
desktop/src/main.js (line 1)8035 行305 个函数、228 处事件监听、354 处 DOM 查询,聊天、项目、设置、浏览器、终端、Claude Code 会话全部集中
desktop/src/styles.css (line 1)4093 行基础样式、主题、布局和各业务功能混在一起
desktop/src-tauri/src/lib.rs (line 1)3179 行41 个 Tauri Command、进程管理、PTY、浏览器、Skills、统计和托盘集中在一个模块
desktop/src/index.html (line 1)1249 行177 个 ID、93 个内嵌 SVG,承担了几乎全部界面结构

这么一看,这个项目功能点也挺多了,确实要好好整理一下了。

然后它上了经典的不是……而是。

真正的问题不是单纯“行数多”,而是:

- 这个全局 `state` 一口气承担了设置、会话、项目、专家以及 Code 状态的统一管理,[定义在这里 (line 409)](E:/Jarvis_github/JClaude/desktop/src/main.js:409)。- 各个模块之间主要依靠 `window.__jclaude*` 这类临时接口做通信,比如面板桥接和 Code 会话桥接,[见这里 (line 3912)](E:/Jarvis_github/JClaude/desktop/src/main.js:3912)及[这里 (line 7055)](E:/Jarvis_github/JClaude/desktop/src/main.js:7055)。- 不少功能能不能正常跑起来,其实都卡在几个前提上:脚本执行顺序是否正确、DOM 是否已经就绪、某个全局函数是否已经提前声明。- 体量最大的是 Code CLIIIFE,单独这一块就大约有 2046 行,[从这里开始 (line 5518)](E:/Jarvis_github/JClaude/desktop/src/main.js:5518)。- 另外,Rust 里的 Claude Code CLI 加上持久会话部分,合起来大约 1400 行,但依然全部塞在一个 `lib.rs` 文件中。

不过即便如此,整体上还是做过相当清晰的规划。

优先级规划

  • P0:先补安全边界
  • P1:统一状态和存储
  • P1:建立最小测试网

推荐的目标结构

desktop/src/├── main.js# 只做启动和模块装配├── core/│├── tauri.js # 唯一 IPC 入口│├── storage.js│├── store.js│├── events.js│└── markdown.js├── domain/│├── models.js│├── experts.js│├── system-prompt.js│└── i18n.js├── features/│├── chat/│├── projects/│├── settings/│├── code-session/│├── code-panels/│├── experts-skills/│└── browser/├── ui/│├── dialogs.js│├── menus.js│└── tooltip.js└── styles/ ├── tokens.css ├── base.css ├── layout.css ├── components/ └── features/

Rust 可以按命令领域拆分:

src-tauri/src/├── lib.rs├── error.rs├── chat.rs├── claude/│├── mod.rs│├── binary.rs│└── session.rs├── terminal.rs├── browser.rs├── skills.rs├── git.rs├── stats.rs└── tray.rs

顺带把推荐的落地顺序也一并列出来,这样推进起来会更清晰。

1、2、3、4、5、6……

这就是它第一轮的反馈。

我贴这么多,就为了体现一点:看他这么说,我是很放心的。都说得这么专业了,感觉就是手拿把掐了。

3、重构过程

既然问题都已经清晰了,就直接干活吧。

然后它就开始干活燃 tokens 了,大概花了 40 分钟。

它信心十足地改完了第一轮,但我还是有点不放心。所以我加了第二轮的需求:

好家伙,大部分确实拆得不错。但是核心的 main.js 还是有 4,000 多行,这个拆分肯定是不达标的。

之前它的同行,都是把这个文件拆到只有几百行了。

我就问它为什么还是那么多,它就顺杆爬,你说得对。然后又搞了 25 分钟。

这次终于清清爽爽了!

我让它启动一下 DEV,大致看了一下没啥问题。

因为我之前用 Opus 都是这个节奏。只要它改完,我大致看一下修改后的功能,没问题就下一个问题了,基本上不会有啥问题。

我觉得 GPT 5.6 Sol,OpenAI 最强的模型,肯定也是没问题的。

平时我让它打杂,它也干得特别仔细。而且它最早就是做 Codex Review 的,不可能会有啥问题的。

4、抄袭新功能

我在另外一个 fork 版本中其实已经实现了语音输入,所以让它帮我抄一下代码。

顺带,我还让它帮我把模型映射功能修改一下,把 Fable 5、Opus 5、Sonnet 5 这些新模型名字加上。

这一步做的还是不错的,很稳,没出现啥问题。

然后后面还让它改了不少功能,比如:

  • 给软件添加一个默认的 workspace
  • 调整主界面的布局,把 Code 放到左边,Chat 放到右边
  • 剔除掉 Cowork 相关的功能

终于等到这一天了,官方已经去掉这个大的 Tab 了。

另外呢,让它帮我根据软件工程相关的内容,设计了一批助手。

整体来说干得挺不错。

我当时就在想,Opus 也不是唯一,你不干有的是人干。你看人家也干得挺好的。

5、问题来了

我大概让它改了三四个问题,周配额也消耗完了。

我就想着打开软件随便点点看。首先我发现一个小问题:

它虽然把代码 Tab 放到了左边,但是它默认选中的还是聊天。

这一点就不是很智能。但凡智商正常的人,我让它把 Code 放到了左边,就应该知道,我希望默认选中的是 Code 了。

当然,这个问题不大。既然它默认还是聊天,我就看一下聊天功能。

然后问题来了:

上图是正确的状态。它改成了其他样子。

我点击右上角内嵌浏览器图片,就可以快速打开 Claude、GPT、Gemini、DeepSeek 等官网。

之前这个功能是好的。为了设计这个功能,也是花了一点时间的,包含了很多控制逻辑,也踩过好几个坑。

然后,这次发现不对了!

问题在于,我点击浏览器之后,内嵌浏览器是打开了,但是上面的返回按钮和 Tab 都没有了,我根本就没法用。

到这里我就有点慌了,因为我不知道它哪个环节引入的问题。

然后我就赶紧给它描述这个现象,告诉它正确的做法。为了让它能理解,我描述得非常清晰。

它也成功地解决了这个问题。

但是,我又发现了另外的问题。

这里面已经不是一个 Bug 了,而是好几个!

为了让他纠正这些问题,我又写了几百字。我以为我写的很清楚了,但是它还是改错了。

因为我提到了,内嵌浏览器打开之后再隐藏掉,左边的 Code 和 Chat 的 Tab 就无法点击了。

它理解成,内嵌浏览器打开之后,不占据左边区域,只占据右侧区域。

傻逼,说话怎么就这么累呢!

我一看它改的不对,立马刹车,强调了一下,终于改对了。

然后又出现了,内置浏览器切换 Tab 自动刷新的问题……你这是想逼 Anthropic 给我封号么?

到这一步我就不淡定了!

为了定位这个问题,我让它自己去对比重构之前的代码,确认当前这个功能相关的代码是否和之前一致!

然后它给我列了一个时间线:

- `58bf96b`,项目版本 `0.5.5`:首次加入内置浏览器。- `a6bea67`,项目版本 `0.5.5`:建立“关闭浏览器不销毁 Tab、重新打开恢复”的预期逻辑。- `627e98a`,项目版本 `0.5.5`:加入切换工作区时停放和恢复。- `v0.6.0`:第一个正式包含内置浏览器的 Git 发布版本。- `61881dc`:Chat 加入项目页面后,浏览器只在 Chat 首页恢复;这发生在重构之前。- `ab63a49`,项目版本 `0.8.0`:拆分重构,同时引入 `document.document.body` 回归。- `515d3a8`:修复顶部栏并加强弹层停放顺序。- `71d6069`:我错误理解需求,临时改成打开浏览器仍保留侧栏;这是一次错误的中间提交。- `26bad8c`:恢复全窗口覆盖和关闭后交互。- `311c477`:停放时不再缩成 1×1,避免页面表现得像刷新。

除了这个列表之外,它还特别强调了之前的代码有什么什么问题,它帮我做了优化。

我实在不想看这个。我关心的是,这个内嵌浏览器的功能为什么出错,是不是你搞出来的?

然后它告诉我,确实是它重构的时候搞出来的。

你问得对,我之前没有把“根因”和“暴露时间”讲清楚。结论是:后面那批语音、模型、助手等功能,本身不应该需要“修复顶栏”。顶栏出问题的真正原因,是更早拆分 main.js 时,我把:document.body.classList.toggle('web-mode', on);误写成了:document.document.body.classList.toggle('web-mode', on);这个错误从重构提交 ab63a49 开始就已经存在。

卧槽,你是正经写代码的么? 这都能误写!

另外还有一个细节,它也自作聪明给我改掉了。

这个坑我和 Opus 已经踩过了,应该是写了注释的,它又踩回去了,心累!

这个问题改完之后,我始终不太放心,又点了点其他功能。又被我轻松抓到一个 Bug。

软件主界面关闭之后,点击托盘不显示主窗口。

这个功能之前绝对是好的。但是现在又坏了。

我就质问他:

它花了 7 分钟修好了。

它说根因是:Windows 双击托盘会产生两次左键事件,原逻辑每次都切换窗口显示状态,导致“显示后立即隐藏”。

修复

  • 托盘左键改为只显示、还原并聚焦主窗口:lib.rs (line 111)
  • 右键菜单的 Show / Hide 继续保留切换能力。
  • 更新托盘行为说明:tray.rs (line 5)

验证结果

  • 实测“隐藏主窗口 → 双击托盘 JClaude → 主窗口恢复”通过。
  • 32 个前端测试、10 个 Rust 测试、结构检查、ESLint、前端构建及 Rust 格式检查全部通过。
  • 已独立提交:a251b17 fix(desktop): 修复托盘双击无法打开主窗口

你看它写的都是挺专业的,而且还做了实测,确实功能也改好了。

但是……它又自作聪明动我需求了。

我要求的就是点一下显示,点一下关闭。我就是这种癖好,我就是需要能打开就能关闭。

我批评它,它就说:

然后它又告诉我这是本来就存在的 Bug,只不过是偶发,这次到它手里才显现出来。

它又说了一堆很专业的话。我已经相信它了,但是按它改完的版本就有点卡顿,就是没有之前版本流畅。

GPT 大部分时候还是很靠谱的,只是你们也看到了,该出问题的时候,还是出问题。

哎,说得好听,写得也专业,情绪价值给到位。最后问题也算是修复了,但是很多问题就不应该产生。

我还是心有余悸。还是乖乖找我 O 哥去了!

递烟捶背:“O 哥这活还得你来,其他人我不放心。”

说一千道一万,还是 O 哥省心,现在 5 代 O 哥更牛逼了,只要是代码榜单,都是第一!

本来我都可以发布新版本给大家玩了,现在还得折腾一下,等 O 哥配额恢复,再复查一遍!

来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多