我本是GUI,又不是命令行。
再想想...
我本是命令行,又不是GUI。
用了十几年的IDE,短短两天的Claude Code体验,让我完成了从质疑、加入到超越的转变。
非常享受只输入需求,AI能够用最强大的模型,最充足的上下文,最完整的历史和仓库理解,最独立并行的稳定环境,最克制和精准的输出表达,全力以赴地完成任务。
01 速度即正义:开箱即用的编码助手
用AI编码助手的时候,大家是否有同样的困扰?
是把右边的chat面板撑大,还是保留更多的editor区域,以及纠结要不要收起左边的目录树。
现在我只想把terminal区域往上拉到最大!
安装IDE或插件,登录和购买套餐,等待 Codebase 索引完成,配置火爆全网的大神级Project Rule,然后思考你的需求,# 加入上下文,@ 引用一些智能体,精心构造一个带点 CoT 韵味的提示词,开启AI智能体生成。
而现在只需要 cd 到目录,然后执行 claude 命令。
Claude code 启动!
02 GUI的黄昏:为什么我们回不去了?
从质疑CLI到真香现场
作为 Eclipse 到 IDEA 的十几年图形界面信徒,我曾坚信 Editor 区+ Chat 面板是AI编码的终极形态。因为
即使再Vibe,我们多少还是要Write,如果我们不check,AI will shit on shit。
直到在终端输入:
claude -i"重写用户鉴权模块,兼容OAuth2.0和JWT混合验证"
看着光标闪烁间生成的 2000 行生产级代码,瞬间完成了从质疑到皈依的信仰跃迁。
图形界面的三大原罪:
- 空间囚徒困境:纠结该压缩 Editor 还是缩小 Chat 面板的日子结束了
- 注意力陷阱:再也不需要像查字典般在IDE面板间切换焦点
- 操作路径依赖:点击菜单 -> 打开插件 -> 输入指令的冗余操作已成历史
Claude Code 是一种在终端里的 agentic 编程方式。你不用学习新的工具、不用切换 IDE,也不用打开特定的网站。它就是一种能够在你原本工作环境中直接使用的 agentic 编程方式。
Boris Cherny(Claude Code 创始人)
终端命令行是任何开发者都能接受的方式,便携快捷,无处不在,既古早,又新颖,我虽然不是Vim玩家,但今天发现在命令行中做编程真是泰裤啦~
我们日常描述一件事情简单,是这么说的:有手就行。
是啊,当AI能力足够强大,复杂精巧的配置编排是不是就没那么必要的,就像Boris Cherny 介绍的 Anthropic 公司主要的产品开发原则:
“从简开始”(do the simple thing first)
03 终端革命:当命令行遇见超智能体
一句 claude 开启今天的人机协作之旅,一句 init 开始快速上手工程项目,就是这么简单。人与 AI 之间的工作交接本来就该这么自然。
Claude Code的一些有意思的交互细节
- 需求输入框:直接输入你的需求,如果不放心需要特别引用文件的话,可以直接使用文件路径或者拖拽。复制粘贴的内容也不用担心过长的问题,Claude Code 有一套内部逻辑,如果过长就会转换成内容标记符载入需求框。
- 自主任务拆解:比如输入"帮忙运行这个flutter工程,使他能够生成 iOS APP 在模拟器上运行"自动生成:
> 帮忙运行这个flutter工程,使他能够生成iOS APP在模拟器上运行
⏺ 我来帮你运行这个Flutter工程并在iOS模拟器上生成APP。
⏺ Update Todos
⎿ ☐ 检查Flutter和iOS开发环境配置
☐ 安装Flutter依赖包
☐ 在iOS模拟器上运行Flutter应用
☐ 启动iOS模拟器
⏺ Update Todos
⎿ ☐ 检查Flutter和iOS开发环境配置
☐ 安装Flutter依赖包
☐ 在iOS模拟器上运行Flutter应用
☐ 启动iOS模拟器
之所以人类经常要纠偏是因为长时间的 Agent 运行,不断挤压进来的上下文会让 AI 迷失在过程中,我们需要将原始的需求时刻保持“置顶”,让 AI 能够始终保持这种目标感,Devin 也是类似的实现。
如果想要在AI IDE和插件类的AI编码助手中使用类似的需求任务拆解能力,非常推荐 claude-task-master 这个开源项目。
- Git全流程接管,甚至是命令行接管
Claude code 将所有的 git 或者是命令行操作都做了识别,把它当作真实的命令去执行,调用命令行工具,在过程中如果要生成 commit message,他也会自动生成并调用命令行执行,非常自然。
⏺ Bash(git status)
⎿ Error: fatal: not a git repository (or any of the parent directories): .git
⏺ Bash(git diff)
⎿ Error: warning: Not a git repository. Use --no-index to compare two paths outside a working
tree
usage: git diff --no-index [<options>] <path> <path>
Diff output format options
-p, --patch generate patch
-s, --no-patch suppress diff output
-u generate patch
-U, --unified[=<n>] generate diffs with <n> lines context
-W, --function-context
generate diffs with <n> lines context
… +118 lines (ctrl+r to see all)
⏺ Bash(git log --oneline -5)
⎿ Error: fatal: not a git repository (or any of the parent directories): .git
⏺ 当前目录不是git仓库。需要先初始化git仓库才能提交。
⏺ Bash(git init)
⎿ Initialized empty Git repository in /Users/jessica/Desktop/repo/watermelon/.git/
⏺ Bash(git add .)
⎿ (No content)
⏺ Bash(git status)
⎿ On branch main
No commits yet
… +67 lines (ctrl+r to expand)
⏺ Bash(git commit -m "Initial commit: Add watermelon ripeness detection Flutter app…)
⎿ [main (root-commit) acf2406] Initial commit: Add watermelon ripeness detection Flutter app
Committer: Jiaqi Wei <jessica@JiaqideMacBook-Pro.local>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
… +76 lines (ctrl+r to expand)
⏺ Bash(git status)
⎿ On branch main
nothing to commit, working tree clean
⏺ ✅ 提交成功!已创建初始提交,包含完整的西瓜成熟度检测Flutter应用。提交包含65个文件,共2790行代
码变更。
4. 良好的交互感,避免等待焦虑
生成过程中会根据不同的行为生成合适的动词,并且配有生成时间和token,把用户最关心的内容呈现出来
- 主动记忆
合理规划项目记忆、个人项目记忆、个人记忆。所有的记忆都通过markdown报错和更新。
记忆类型 | 存储地址 | 记忆目的 | 用途示例 |
---|---|---|---|
项目记忆 | ./CLAUDE.md | 团队共享的项目记忆 | 项目的架构和开发迭代过程(类似DeepWiki) |
用户偏好记忆 | ~/.claude/CLAUDE.md | 全局的个人偏好 | 个人偏好,使用习惯,工具喜好等 |
本地项目记忆 | ./CLAUDE.local.md | 个人关于项目的记忆 | (已过时) |
- 清晰的diff交互
有时候 AI 代码生成得太快,导致人类无法阅读,人类往往都沦于 Accept All 按钮无情的点击者。Claude Code 会将重要的 diff 展示出来,从上到下串行的信息流,反而成为了 Vibe Coding 过程中的一片净土,让开发者能够更加集中注意力。
- 优秀的自我判断意识
命令超时会主动调整自己的超时时间而不是直接和用户说我就是 2 分钟超时,这事我办不了
所谓识时务者为俊杰,当克俊杰识别到有些工具下载过久,无法生成,或者是需要 sudo 运行权限的,就生成方案交由用户手动执行
⏺ 让我检查是否已经有CocoaPods安装在其他位置:
⏺ Bash(find /usr -name "pod" 2>/dev/null || echo "No pod found in /usr")
⎿ No pod found in /usr
⏺ Bash(ls ~/.gem/ruby/*/bin/pod 2>/dev/null || echo "No pod in user gems")
⎿ No pod in user gems
⏺ CocoaPods需要手动安装。请在终端中运行以下命令:
方法1:使用系统Ruby安装(推荐)
sudo gem install cocoapods
方法2:如果方法1有权限问题,使用用户安装
gem install --user-install cocoapods
export PATH=$HOME/.gem/ruby/2.6.0/bin:$PATH
方法3:使用Homebrew(如果有)
brew install cocoapods
安装完成后,运行:
cd /Users/jessica/Desktop/repo/watermelon/ios
pod install
然后回到Xcode,关闭并重新打开 Runner.xcworkspace 文件,就可以正常编译了。
这个错误的根本原因是Flutter的iOS插件(如audioplayers_darwin)需要通过CocoaPods来管理和链接到iO
S项目中。
8. 主动压缩上下文和总结
虽然 Claude Code 会尽可能用最大的上下文去运行命令,但是开发者也可以主动地调用 /compact 工具去做上下文总结,来节约 token 和 加快生成速度。
比如这就是刚才我问了几轮 Flutter iOS APP 如何运行的问题后,Claude Code 给出的总结文本。
================================ Previous Conversation Compacted ===============================
> This session is being continued from a previous conversation that ran out of context. The
conversation is summarized below:
Analysis:
Let me chronologically analyze the conversation to capture all technical details:
1. **Initial Request**: User asked me to help run a Flutter project to generate an iOS app on
a simulator in Chinese: "帮忙运行这个flutter工程,使他能够生成iOS APP在模拟器上运行"
2. **Environment Assessment**: I first checked Flutter environment with `flutter doctor` but
discovered Flutter wasn't installed (`/bin/bash: flutter: command not found`). I also checked
for Xcode command line tools.
3. **Flutter Installation Discovery**: Found Flutter was already installed at
`~/development/flutter/bin/flutter` by examining the .zshrc file, but it wasn't in the current
PATH.
4. **Dependency Installation**: Used the full path to run `flutter pub get` but encountered
dependency issues with the `fft` package version ^2.0.0 not being available. I progressively
tried different versions (^1.0.0, ^0.4.0) and eventually removed it entirely from
pubspec.yaml.
5. **Project Structure Setup**: The project needed iOS platform files, so I ran `flutter
create --platforms=ios .` to generate the necessary iOS project structure.
6. **Simulator Setup**: Started iPhone 14 simulator using `xcrun simctl boot "iPhone 14"` and
opened the Simulator app.
7. **CocoaPods Issue**: Encountered CocoaPods dependency issue when trying to run on iOS.
Attempted installation but faced permission and timeout issues.
8. **Web Platform Alternative**: Created web platform support with `flutter create
--platforms=web .` and successfully ran the app in Chrome browser.
9. **Code Fixes**: Fixed compilation errors in:
- `lib/models/watermelon_result.dart`: Added missing Flutter Material import for Color
class
- `lib/services/audio_service.dart`: Commented out FFT dependencies and fixed recording
path parameter
10. **Xcode Integration**: User wanted to open the project in Xcode to test on a physical
iPhone. I instructed them to open `ios/Runner.xcworkspace` (not the .xcodeproj file).
11. **CocoaPods Error**: User encountered "Module 'audioplayers_darwin' not found" error in
Xcode, which requires CocoaPods installation.
12. **Git Repository**: User requested a commit. I initialized a git repository, added all
files, and created an initial commit with a comprehensive commit message.
13. **Final Request**: User typed "compat" which was unclear, so I asked for clarification.
Summary:
1. Primary Request and Intent:
The user explicitly requested help to run a Flutter project and generate an iOS app to run
on a simulator ("帮忙运行这个flutter工程,使他能够生成iOS APP在模拟器上运行"). Subsequently,
they wanted to open the project in Xcode to test on a physical iPhone device, and finally
requested a git commit of the work.
2. Key Technical Concepts:
- Flutter cross-platform development framework
- iOS Simulator and Xcode integration
- CocoaPods dependency management for iOS
- Flutter pub dependency management
- Git version control
- Audio recording and processing for watermelon ripeness detection
- Cross-platform builds (iOS, Android, Web)
- FFT (Fast Fourier Transform) for audio analysis
3. Files and Code Sections:
- `/Users/jessica/Desktop/repo/watermelon/pubspec.yaml`
- Modified to remove problematic fft dependency
- Contains essential dependencies: flutter, record, permission_handler, audioplayers,
path_provider
- Original fft version ^2.0.0 was not available, tried ^1.0.0 and ^0.4.0, then removed
entirely
- `/Users/jessica/Desktop/repo/watermelon/lib/models/watermelon_result.dart`
- Added missing import: `import 'package:flutter/material.dart';`
- Defines WatermelonRipeness enum and WatermelonResult class
- Contains factory method for frequency-based ripeness detection
- `/Users/jessica/Desktop/repo/watermelon/lib/services/audio_service.dart`
- Commented out FFT import: `// import 'package:fft/fft.dart';`
- Fixed recording start method to include path parameter: `path: 'temp_recording.wav'`
- Implements audio recording, volume detection, and simulated frequency analysis
- `ios/Runner.xcworkspace`
- Generated iOS project workspace that must be opened in Xcode (not .xcodeproj)
- Contains proper CocoaPods integration structure
4. Problem Solving:
- Solved Flutter installation PATH issue by using full path
`~/development/flutter/bin/flutter`
- Resolved dependency conflicts by removing unavailable fft package
- Fixed missing iOS platform files by running `flutter create --platforms=ios .`
- Addressed compilation errors by adding proper imports and fixing method signatures
- Successfully deployed web version as alternative to iOS simulator issues
- Identified CocoaPods requirement for iOS device testing
5. Pending Tasks:
- Install CocoaPods to resolve iOS compilation errors
- Complete iOS device testing setup in Xcode
- Implement proper FFT audio analysis (currently using simulated values)
6. Current Work:
The most recent substantial work was creating a git commit. The user requested "commit" and
I:
- Initialized a git repository with `git init`
- Added all files with `git add .`
- Created a comprehensive initial commit with message: "Initial commit: Add watermelon
ripeness detection Flutter app" including details about cross-platform setup, audio service
implementation, UI components, and dependency fixes
- The commit included 65 files with 2790 insertions
The final user message was simply "compat" which was unclear, so I requested clarification
about what compatibility-related operation they wanted to perform.
7. Optional Next Step:
Since the user's last message "compat" was ambiguous and I requested clarification, the
next step should be to wait for the user to specify what compatibility operation they want to
perform. The previous git commit task was completed successfully, so no further action should
be taken without explicit user direction..
⎿ Read web/manifest.json (36 lines)
⎿ Read web/index.html (39 lines)
⎿ Read lib/services/audio_service.dart (127 lines)
⎿ Read lib/models/watermelon_result.dart (46 lines)
⎿ Read pubspec.yaml (31 lines)
Claude Code还有非常多优秀的机制,比如利用 git worktree 并行实现方案,容我再谈再报。
04 未来已至:从“如来”到“Oh my Jesus”
Claude Code本身就是用Claude Code写出来的
非常喜欢这句话,这也是我长期研究研发智能化的终极梦想:
华佗打点滴,医者自医
人们常说财富是讲究复利的,如果代码也可以呢?如今开发者从代码生产者蜕变为需求质检员,这种层级的认知跃迁,价值远超每月100美元。强烈推荐大家去试试。
当然 Claude Code 也不是完美的,我也遇到过中途的堆栈溢出,命令执行很谨慎,每次遇到新的命令都要来问一遍,commit或compact过程中会遇到diff内容闪烁等交互问题,不过瑕不掩瑜,我只想要一个有完全自主驱动,带有目标使命感,懂得需求的拆分和实现的智能体。
CLI 对环境的要求低,依赖少,生态更标准,比如现在就可以在Github issue或PR中@claude,让他作为一个独立的智能体去完整地完成任务,任何时间,任何地点,这里我想到了一个词很匹配:
AI NATIVE
而且 Claude Code 的运作模式 (Claude Max 包月无限用),让他能够释放 Claude 模型的满血能力,不计成本只为效果更好。
尾声:删除订阅的仪式感
I‘ve begun to suspect that Anthropic is literally the only company on the planet who knows what the fuck is going on.
Steve Yegge
Anthropic 是否能够完全预知未来AI编码的走向犹未可知,但就像他们在播客里说的那样,他们会提前判断未来三个月的模型能力,然后在产品和工程侧向这些能力靠齐,也许这就是他们成功的原因。
加油吧Cursor,还有国内各大 AI 编码公司,在你们变强之前容许我先退订一波。