用 Codex CLI 造了一个 Claude Code 桌面客户端
我用 Codex CLI 造了一个 Claude Code 桌面客户端从一句「要是有个 GUI 就好了」到 8000 行代码的 Electron 应用起因我用 Claude Code 写代码有大半年了。终端里claude一敲确实好用。但每次切项目要重新指定路径、想回顾之前的对话只能翻终端滚动条、想在多个会话之间切换得开好几个终端 Tab —— 体验上总觉得差了点东西。某个周五下午我盯着终端里密密麻麻的 stream-json 输出突然想「要不给它套个壳」这个念头本来应该像大多数 side project 一样在周末过去后自然消散。但这次不一样 —— 我打开了 Codex CLI开始了一场彻底的 Vibe Coding 之旅。初见雏形Claude Code Desktop 运行截图 —— 左侧会话列表、中间聊天面板、右侧文件浏览器与 Markdown 预览为什么用 Codex CLI市面上有很多 AI 编程工具我选择 Codex CLI 的原因很简单终端原生—— 不依赖 IDE直接在你的项目目录里跑跟 Claude Code 的使用方式一致全流程自主—— 从读文件、编辑代码、运行测试到 git 提交它自己搞定透明的思考过程—— 每一步都能看到它在想什么、要改什么、为什么这么改零配置—— 装好就能用不需要配置 agent、不需要选模型、不需要写 prompt template在四天的开发中我几乎没自己写过一行代码。全程通过自然语言跟 Codex CLI 对话让它理解需求、生成代码、修复 bug、重构架构。使用人群Claude Code Desktop 不是为所有人设计的它有非常明确的用户画像核心用户用户群使用场景痛点AI 重度开发者每天使用 Claude Code 写代码 4h终端切换会话繁琐、无法回溯对话历史、缺乏可视化工具调用Vibe Coder通过 AI 辅助快速原型和迭代需要同时管理多个上下文项目纯终端不够直观技术写作者 / 学习者用 AI 辅助学习、写文档、做笔记需要对照文件浏览器和聊天内容分屏工作流更高效开源维护者多项目并行频繁切换上下文项目级会话组织、跨窗口操作、代码审查集成设计原则不取代 CLI—— 只是给 CLI 加了一层 GUI底层还是claude命令本地优先—— 所有数据存在 SQLite 里不上传、不分析、不分享键盘驱动—— 能用快捷键绝不点鼠标⌘N 新建、⌘K 搜索、⌘B 切换侧边栏透明可审计—— 所有 AI 操作都在右侧面板可见没有隐藏的自动化产品设计理念1. 会话优先Conversation-First绝大多数 AI 编程工具是「文件优先」的 —— 你先打开一个项目然后在里面跟 AI 对话。Claude Code Desktop 反过来会话是一等公民。每个会话可以绑定一个项目文件夹也可以不绑定。会话按项目自动分组置顶、搜索、重命名、删除 —— 就像你的聊天软件管理对话一样管理你的 AI 编程会话。2. 两种模式一个核心应用提供两种交互模式Agent 模式通过anthropic-ai/claude-agent-sdk直接调用 SDK工具调用可视化权限审批流适合全自动工作流Chat 模式通过子进程启动 CLI解析 NDJSON 流式输出适合轻量对话两种模式共享同一个 SQLite 数据库你可以在 Agent 模式下开始一个对话切换到 Chat 模式继续反之亦然。数据永不丢失。3. 工具可见性AI 编程最大的痛点之一是「不知道它在干什么」。Claude Code Desktop 的右侧面板解决了这个问题Activity实时查看 AI 的思考过程和工具调用Files浏览项目文件MD 文件支持 Markdown 渲染Terminal查看 AI 执行的命令和输出Review审查 AI 的代码变更每一个工具调用、每一次文件修改、每一行命令输出都可以在右侧面板实时追踪。4. 设计美学精致的工具感UI 设计参考了 Hermes Desktop 的审美语言深色为主紫色点睛—— 暗色基底减少视觉疲劳紫色强调色传递「AI 工具」的品牌感玻璃质感——backdrop-filter: blur(20px)的毛玻璃效果让界面有层次感而不沉重信息密度适中—— 侧边栏、聊天面板、文件浏览器三栏布局每栏各司其职微交互动画—— 按钮 hover、面板切换、消息出现都有平滑过渡不突兀SF Pro 字体—— 原生 macOS 字体渲染跟系统界面无缝融合第一天从零到能跑Vibe Coding 的第一原则别想太多先让它动起来。我没画架构图没写 PRD甚至没想清楚最终要长什么样。直接开了个 Electron React TypeScript Vite 的模板项目然后开始跟 Codex CLI 对话“帮我写一个 Electron 应用左边是会话列表右边是聊天窗口点会话能加载历史消息。”Codex CLI 噼里啪啦生成了第一版代码。我跑起来一看 —— 丑但能用。左侧边栏列着会话右侧是空白的聊天区域。然后我继续“加一个输入框按 Enter 发送消息调用 claude CLI 子进程获取回复。”“消息要流式显示就像 ChatGPT 那样一个字一个字出来。”“加 SQLite 持久化重启不能丢消息。”“把会话按项目文件夹分组展开折叠那种。”每一轮对话Codex CLI 生成几十到几百行代码我跑一下看效果不满意就回退重来。这种感觉就像在跟一个 7×24 小时在线的、永远不会不耐烦的结对程序员一起工作。第二天从能跑到能用第二天应用已经能用了。Codex CLI 推荐了better-sqlite3做持久化、node-pty做伪终端、xterm.js做终端渲染。技术栈越来越丰满了Electron 31 React 18 TypeScript 5 Vite 5 Tailwind CSS 3 Zustand better-sqlite3 node-pty xterm.js anthropic-ai/claude-agent-sdk但那天晚上我几乎全在修 bug。Codex CLI 生成的代码不是完美的。它经常忘记处理异步边界条件竞态、重入、闭包过期生成类型定义但忘了导出写出优雅的代码但完全不处理错误把useEffect的依赖数组写错导致无限循环我花了大量时间在调试、看日志、读 Codex CLI 生成的代码、然后指出问题让它修复。这其实是一种新的协作模式我负责「知道什么是对的」AI 负责「怎么实现」。第三天Agent SDK 集成第三天是最有意思的。Anthropic 发布了anthropic-ai/claude-agent-sdk一个可以直接在代码中调用 Claude 的 SDK。这意味着我可以跳过 CLI 子进程的方式直接通过 SDK 让 Claude 在应用里运行 —— 工具调用、权限审批、文件修改全部可以可视化。我让 Codex CLI 读了 SDK 的文档然后说“集成这个 SDK取代现有的 CLI 子进程模式但保留 CLI 模式作为备选。”Codex CLI 花了大概 20 轮对话生成了两个模式共存的架构Agent 模式通过 SDK 直接调用支持工具调用可视化和权限审批流Chat 模式通过子进程启动 CLI解析 NDJSON 流式输出两种模式共享同一个 SQLite 数据库通过 Electron IPC 通信。用户可以在右上角一键切换。发现的问题AI 代码的盲区三天的密集开发后我让 Codex CLI 做了一个全面的代码审计。结果让我吃了一惊 —— 发现了26 个 Bug其中 9 个是高严重度。一些印象深刻的消息重复发送// 两个 if 同时满足handleSend 被调用两次if(e.keyEnter!e.shiftKey){handleSend();}if(e.keyEnter(e.metaKey||e.ctrlKey)){handleSend();}CmdEnter 在 macOS 上同时触发Enter和metaKey两条 if 都命中消息发了两遍。状态机永久卡死Codex CLI 设计了一个流式状态机IDLE → SENDING → THINKING → STREAMING → STOPPED → IDLE。但这个状态机从ERROR状态只允许RESET或SEND事件。如果正常stream:end事件到来时状态是ERRORSTOPPED事件被忽略输入框永久禁用。内容持久化错位Chat 模式下Codex CLI 只把text类型的 chunk 写入了数据库。thinking、tool_use、tool_result、diff这些内容在重启后全部丢失。用户重启应用后只能看到半截对话。第四天UI 重构功能稳定后我开始关心长相。原来的 UI 是 Codex CLI 用 Tailwind 默认配置生成的 —— 能用但说不上好看。我决定参考 Hermes DesktopNous Research 的桌面客户端的设计语言做一次全面的 UI 升级。改了什么设计系统重新定义了 CSS 变量体系从颜色到阴影到圆角到动画曲线玻璃质感加入了backdrop-filter: blur(20px)的毛玻璃效果骨架屏用 shimmer 动画替代了简单的 spinner 文字设置弹窗从单块布局改为 4 Tab 设计General / API / Shortcuts / About快捷键面板把所有快捷键列出来让用户知道 ⌘K 是搜索、⌘B 是切换侧边栏空状态每个面板在无数据时显示友好的空状态提示Logo 重设计从星星图标换成了终端提示符 SVGMD 阅读模式文件预览支持 Markdown 渲染CSS 体积从 35KB 增长到 39KB但视觉上完全是两个世界。一些数字项目周期4 天其实只有一个周末 两个晚上代码行数约 8000 行TypeScript CSSCodex CLI 生成占比估计 90% 的代码由 AI 生成Bug 数量审计发现 26 个9 个高严重度技术栈Electron 31 React 18 TypeScript 5 Vite 5 Tailwind CSS 3 better-sqlite3 node-pty anthropic-ai/claude-agent-sdk关于 Vibe Coding 的几点思考1. AI 擅长「写」不擅长「想」AI 可以在一分钟内写出 100 行代码但它不会主动思考「这个状态机有没有死锁路径」、「这个 IPC 通道需不需要异常处理」。这些需要人来想。2. 代码审查从未如此重要当 90% 的代码来自 AI 时代码审查不再是「看看有没有 bug」而是唯一的质量控制手段。每一段 AI 生成的代码都要经过人脑的编译。3. 架构决策还是得自己来AI 善于实现但架构层面它容易做出局部最优但全局糟糕的决策生成过度设计的抽象忽略非功能需求性能、安全性、可维护性4. Vibe Coding 的门槛并没有降低很多人以为 AI 写代码 人人都是程序员。但我的经验是Vibe Coding 的能力下限取决于你读代码的能力而不是写代码的能力。如果你看不懂 AI 生成的代码你就无法判断它是对是错无法修复它无法改进它。项目地址如果你对这个项目感兴趣或者想看看 Codex CLI 写的 8000 行代码长什么样https://github.com/d2025440304-ops/Claude-code-GUI后记写这篇文章的时候我正在用这个 GUI 跟 Claude 对话让它帮我润色这篇文章的措辞。Vibe Coding 没有终点只有下一个迭代。2026 年 8 月 3 日Dai

相关新闻

C++ Primer Plus编程练习参考答案:从基础语法到面向对象实战精解

C++ Primer Plus编程练习参考答案:从基础语法到面向对象实战精解

1. 为什么你需要一份“参考答案”,而不是“标准答案”?在C学习的漫长旅途中,尤其是啃《C Primer Plus》这类经典大部头时,几乎每个学习者都会在课后编程练习前卡壳。你可能会在搜索引擎里输入“C Primer Plus 编程练习答案”&…

2026/8/4 3:20:10 阅读更多 →
从黑箱到白箱:BP神经网络 + SHAP可解释性 + NSGA-II多目标优化的完整技术方案

从黑箱到白箱:BP神经网络 + SHAP可解释性 + NSGA-II多目标优化的完整技术方案

当工业场景中需要同时优化多个相互冲突的目标时,传统的单目标优化方法已捉襟见肘。本文将分享一套完整的"代理模型—可解释性分析—多目标寻优"技术方案,代码实现可直接复现。一、研究背景 在工程设计与工艺优化中,经常面临这样的困…

2026/8/4 3:20:10 阅读更多 →
Windows 11下解决npm脚本执行错误:PowerShell执行策略详解

Windows 11下解决npm脚本执行错误:PowerShell执行策略详解

1. 问题场景:当你在Windows 11上尝试新工具时 最近在折腾一些本地AI工具或者开源项目时,你可能会遇到一个叫 openclaw 的东西。不管它是用来做网络爬虫、自动化测试,还是某个特定领域的数据处理工具,安装过程往往离不开 npm …

2026/8/4 3:20:10 阅读更多 →

最新新闻

短剧追更指南:个性化片单与资源管理技巧

短剧追更指南:个性化片单与资源管理技巧

1. 短剧追更指南:如何打造个性化片单最近两年,短剧市场呈现爆发式增长。根据行业数据显示,2023年国内短剧市场规模已突破百亿,平均每天上线新剧超过50部。这种每集3-15分钟的轻量级内容,正在成为年轻人碎片化时间的主要…

2026/8/4 11:08:13 阅读更多 →
如何用DouyinLiveRecorder实现40+平台24小时自动直播录制:终极指南

如何用DouyinLiveRecorder实现40+平台24小时自动直播录制:终极指南

如何用DouyinLiveRecorder实现40平台24小时自动直播录制:终极指南 【免费下载链接】DouyinLiveRecorder 可循环值守和多人录制的直播录制软件,支持抖音、TikTok、Youtube、快手、虎牙、斗鱼、B站、小红书、pandatv、sooplive、flextv、popkontv、twitcas…

2026/8/4 11:08:13 阅读更多 →
YT2786A/YT2786A5 离线式无电感交流输入(30ma) 5V3.3V双路输出线性稳压电路 典型应用电路

YT2786A/YT2786A5 离线式无电感交流输入(30ma) 5V3.3V双路输出线性稳压电路 典型应用电路

YT2786A 是一款紧凑型无电感设计的离线式线性稳压器。YT2786A 输出电压已由内部设定为 5V/3.3V/2.7V 三个版本。YT2786A 是一种简单可靠的获得偏置供电的离线式电源解决方案。 标准最简典型应用电路(市电转 5V/3.3V 给 MCU 供电) 1. 外围器件清单&#x…

2026/8/4 11:08:13 阅读更多 →
动态IP到底是什么?动态IP的使用方法

动态IP到底是什么?动态IP的使用方法

“动态IP”到底是啥? 简单说,动态IP就是会变动的IP地址。当你连接网络、拨号或切换代理时,获取的IP地址不是固定的,而是从一个IP池中动态分配来的。 你可以把它理解为:每次“上线”,你的网络身份就变了个样…

2026/8/4 11:08:13 阅读更多 →
长期时间管理系统的设计与实践:Day24-20260120编码解析

长期时间管理系统的设计与实践:Day24-20260120编码解析

1. 项目背景与核心价值这个看似简单的日期标记"Day24-20260120"背后,隐藏着一个持续记录系统的设计哲学。作为连续记录的第24天,2026年1月20日这个未来日期暗示着这是一套面向长期时间管理的解决方案。我在实际使用类似系统三年多的时间里&…

2026/8/4 11:08:13 阅读更多 →
MAA明日方舟助手:解放双手的智能游戏管家,一键完成全部日常任务

MAA明日方舟助手:解放双手的智能游戏管家,一键完成全部日常任务

MAA明日方舟助手:解放双手的智能游戏管家,一键完成全部日常任务 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项…

2026/8/4 11:07:13 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →