一日一技:牛指揮馬,Cursor駕駛Claude Code起飛
我日常使用的開(kāi)發(fā)工具是Cursor。雖然用得非常順手,但天天有人在我耳邊說(shuō),Claude Code代碼能力吊打Cursor,Claude Code可以完全替代Cursor之類(lèi)的言論,于是我安裝上Claude Code試了一試。
整體來(lái)說(shuō)Claude Code寫(xiě)代碼的能力確實(shí)還行,但這個(gè)東西畢竟是命令行工具,用起來(lái)非常不方便。特別是我的描述文字較多,有時(shí)候想換行,一不小心直接敲下回車(chē)他就發(fā)出去了。而且沒(méi)有歷史記錄功能,除非我聊一次天手動(dòng)git commit一次,否則就容易出事情。而Cursor好就好在它基于VSCode二次開(kāi)發(fā)的圖形界面用起來(lái)非常順手。各種貼心的功能很方便。
前幾天我看到Claude Code有Python SDK[1],突發(fā)奇想,我能不能利用這個(gè)SDK,讓Cursor來(lái)控制Claude Code做事情呢?讓Cursor負(fù)責(zé)規(guī)劃任務(wù),負(fù)責(zé)git提交代碼。每一步,它都會(huì)生成用來(lái)控制Claude Code的代碼,我只需要運(yùn)行這個(gè)代碼,Claude Code就會(huì)自動(dòng)執(zhí)行任務(wù)。這樣我就既能擁有Cursor的圖形界面,又能有Claude Code更好的編程能力了。
剛準(zhǔn)備測(cè)試,結(jié)果壞消息傳來(lái),我的Claude賬號(hào)被封了。
圖片
但事情就是這么巧,Claude剛封我賬號(hào),我就看到智譜發(fā)布了最新的GLM-4.5模型,不僅模型能力大幅提升,進(jìn)入了第一梯隊(duì),而且開(kāi)源,再而且原生支持Claude Code!真是瞌睡來(lái)了就給我遞枕頭。Claude拜拜了你嘞。
那我們今天就嘗試使用Cursor + Claude Code + GLM-4.5來(lái)實(shí)驗(yàn)一下我的想法。
Claude Code接入GLM-4.5
這一步非常簡(jiǎn)單,首先到智譜開(kāi)放平臺(tái)[2]申請(qǐng)API Key。
然后安裝Claude Code:
npm install -g @anthropic-ai/claude-code第三步設(shè)置環(huán)境變量:
export ANTHROPIC_BASE_URL=https://open.bigmodel.cn/api/anthropic
export ANTHROPIC_AUTH_TOKEN="智譜API Key"第四步執(zhí)行命令claude運(yùn)行Claude Code。我們來(lái)測(cè)試一下效果:
圖片
命令行測(cè)試成功。
使用Python控制Claude Code
這一步,我們使用Python代碼來(lái)控制Claude Code。首先安裝對(duì)應(yīng)的SDK:
pip install claude-code-sdk然后編寫(xiě)如下代碼:
import anyio
from claude_code_sdk import query, ClaudeCodeOptions
from pathlib import Path
asyncdef main():
options = ClaudeCodeOptions(
max_turns=3,
system_prompt="You are a helpful assistant",
cwd=Path("/Users/kingname/Projects/test_cc_sdk"),
allowed_tools=["Read", "Write", "Bash"],
permission_mode="acceptEdits",
model="glm-4.5"
)
asyncfor message in query(prompt="幫我創(chuàng)建一個(gè)fib.py文件。"
"這個(gè)文件里面有一個(gè)計(jì)算斐波拉契數(shù)列的函數(shù)。"
"這個(gè)函數(shù)需要使用一個(gè)速度很快的算法。", optinotallow=options):
print(message)
anyio.run(main)在有環(huán)境變量的終端中,運(yùn)行這段代碼,效果如下圖所示:
圖片
生成的fib.py直接就可以運(yùn)行,并且確實(shí)是快速算法。如下圖所示。這個(gè)算法計(jì)算斐波拉契數(shù)列第1000位,只需要0.000012秒。快得不得了。
圖片
有熟悉Cursor的同學(xué),肯定一眼可以認(rèn)出我上面截圖的編輯器就是Cursor。那么接下來(lái),我們?cè)囈辉囀褂肅ursor來(lái)控制Claude Code!
Cursor操作Claude Code
我們來(lái)設(shè)想一個(gè)項(xiàng)目:一個(gè)用來(lái)宣傳GTD的網(wǎng)站。這個(gè)網(wǎng)站有一個(gè)落地頁(yè),有注冊(cè)、登錄頁(yè)。登錄以后,能夠創(chuàng)建、查看、修改、更新任務(wù)。任務(wù)有列表模式和卡片模式。在卡片模式,可以把任務(wù)從一個(gè)卡片拉到另一個(gè)卡片。還有一個(gè)生產(chǎn)力統(tǒng)計(jì)頁(yè)面。并且網(wǎng)頁(yè)要有設(shè)計(jì)感,使用Next.js + tailwind css + shadcn/ui來(lái)做前端,使用FastAPI做后端,使用MongoDB做數(shù)據(jù)庫(kù)。
我們先在Cursor里面寫(xiě)入我們的需求:
我現(xiàn)在想在當(dāng)前文件夾下面,做一個(gè)GTD宣傳推廣網(wǎng)站。需求如下:
一個(gè)用來(lái)宣傳GTD的網(wǎng)站。這個(gè)網(wǎng)站有一個(gè)落地頁(yè),有注冊(cè)、登錄頁(yè)。登錄以后,能夠創(chuàng)建、查看、修改、更新任務(wù)。任務(wù)有列表模式和卡片模式。在卡片模式,可以把任務(wù)從一個(gè)卡片拉到另一個(gè)卡片。還有一個(gè)生產(chǎn)力統(tǒng)計(jì)頁(yè)面。并且網(wǎng)頁(yè)要有設(shè)計(jì)感,使用Next.js + tailwind css + shadcn/ui來(lái)做前端,使用FastAPI做后端,使用MongoDB做數(shù)據(jù)庫(kù)。FastAPi使用同步寫(xiě)法。
你現(xiàn)在是一個(gè)項(xiàng)目負(fù)責(zé)人,你不需要親自寫(xiě)業(yè)務(wù)代碼。你的任務(wù)有兩個(gè):
1. 規(guī)劃設(shè)計(jì)、拆分任務(wù),你需要生成3個(gè)文件,分別是:
* requirements.md - 需求文檔:用戶(hù)故事和驗(yàn)收標(biāo)準(zhǔn),采用了簡(jiǎn)易需求語(yǔ)法方法 (EARS) ,是一種約束文本需求的機(jī)制
* design.md - 架構(gòu)文檔:記錄技術(shù)架構(gòu)、序列圖和實(shí)施注意事項(xiàng)
* tasks.md - 任務(wù)清單:提供具體的 todolist,便于跟蹤
2. 通過(guò)Python代碼指導(dǎo)Claude code寫(xiě)代碼。請(qǐng)參考 @sample.py 里面的Python代碼,這樣寫(xiě)可以控制Claude Code,給它下指令,讓它來(lái)寫(xiě)真正的業(yè)務(wù)代碼。這樣你就可以思考真正重要的有意義的整體設(shè)計(jì)。
你可以根據(jù)tasks.md中的步驟,每一步生成或者更新生step.py文件。在里面控制claude code。我確認(rèn)代碼沒(méi)有問(wèn)題以后,我就會(huì)運(yùn)行這個(gè)step.py文件。
step.py的大模型請(qǐng)使用glm-4.5很快,Cursor就成功生成了3個(gè)markdown文件,我們依次看看:
desgin.md文件:
圖片
requirements.md文件:
圖片
tasks.md文件:
圖片
第一步的step.py也已經(jīng)生成好了,我們來(lái)看看內(nèi)容:
import anyio
from claude_code_sdk import query, ClaudeCodeOptions
from pathlib import Path
asyncdef main():
"""
執(zhí)行Task 1: 項(xiàng)目結(jié)構(gòu)搭建
- 創(chuàng)建frontend目錄,初始化Next.js項(xiàng)目
- 配置TypeScript、Tailwind CSS、shadcn/ui
- 創(chuàng)建backend目錄,初始化FastAPI項(xiàng)目
- 配置MongoDB連接和基礎(chǔ)數(shù)據(jù)模型
- 設(shè)置開(kāi)發(fā)環(huán)境配置文件
"""
options = ClaudeCodeOptions(
max_turns=10,
system_prompt="""你是一個(gè)專(zhuān)業(yè)的全棧開(kāi)發(fā)工程師,正在為GTD宣傳推廣網(wǎng)站項(xiàng)目搭建基礎(chǔ)架構(gòu)。
請(qǐng)按照以下要求完成項(xiàng)目初始化:
技術(shù)棧要求:
- 前端:Next.js 14 + TypeScript + Tailwind CSS + shadcn/ui
- 后端:FastAPI (同步) + Python 3.11+
- 數(shù)據(jù)庫(kù):MongoDB
項(xiàng)目結(jié)構(gòu)要求:
1. 創(chuàng)建 frontend/ 目錄,初始化Next.js項(xiàng)目
2. 配置TypeScript、Tailwind CSS、shadcn/ui
3. 創(chuàng)建 backend/ 目錄,初始化FastAPI項(xiàng)目
4. 配置MongoDB連接和基礎(chǔ)數(shù)據(jù)模型
5. 設(shè)置開(kāi)發(fā)環(huán)境配置文件
請(qǐng)確保:
- 所有配置文件都完整且正確
- 項(xiàng)目結(jié)構(gòu)符合最佳實(shí)踐
- 依賴(lài)包版本兼容
- 包含必要的開(kāi)發(fā)工具配置(ESLint、Prettier等)
工作目錄是當(dāng)前文件夾,請(qǐng)?jiān)诋?dāng)前目錄下創(chuàng)建項(xiàng)目結(jié)構(gòu)。""",
cwd=Path("/Users/kingname/Projects/test_cc_sdk"),
allowed_tools=["Read", "Write", "Bash"],
permission_mode="acceptEdits",
model="glm-4.5"
)
prompt = """請(qǐng)幫我完成GTD宣傳推廣網(wǎng)站的項(xiàng)目初始化搭建工作。
根據(jù)項(xiàng)目需求,我需要?jiǎng)?chuàng)建一個(gè)包含前后端的完整項(xiàng)目架構(gòu):
**任務(wù)清單:**
1. 創(chuàng)建 frontend/ 目錄并初始化 Next.js 14 項(xiàng)目(使用 TypeScript)
2. 在前端項(xiàng)目中配置 Tailwind CSS 和 shadcn/ui
3. 創(chuàng)建 backend/ 目錄并初始化 FastAPI 項(xiàng)目
4. 配置 MongoDB 連接和基礎(chǔ)數(shù)據(jù)模型
5. 創(chuàng)建必要的開(kāi)發(fā)環(huán)境配置文件
**具體要求:**
前端 (frontend/):
- 使用 Next.js 14 with App Router
- 配置 TypeScript
- 集成 Tailwind CSS
- 安裝和配置 shadcn/ui
- 創(chuàng)建基礎(chǔ)的目錄結(jié)構(gòu)(app/, components/, lib/, types/等)
- 配置 ESLint 和 Prettier
后端 (backend/):
- 使用 FastAPI(同步寫(xiě)法)
- 創(chuàng)建基礎(chǔ)的目錄結(jié)構(gòu)(app/api/, models/, services/等)
- 配置 MongoDB 連接
- 創(chuàng)建 User 和 Task 數(shù)據(jù)模型
- 配置 requirements.txt
- 創(chuàng)建 .env 配置文件模板
請(qǐng)按照最佳實(shí)踐來(lái)組織項(xiàng)目結(jié)構(gòu),確保代碼可以立即運(yùn)行。現(xiàn)在開(kāi)始吧!"""
asyncfor message in query(prompt=prompt, optinotallow=options):
print(message)
if __name__ == "__main__":
anyio.run(main)寫(xiě)得非常專(zhuān)業(yè)。運(yùn)行這段代碼,打印了一大堆東西出來(lái),跑起來(lái)看著有模有樣,但運(yùn)行完成以后,只生成了backend和frontend兩個(gè)空文件夾,里面什么內(nèi)容都沒(méi)有。
經(jīng)過(guò)我多次嘗試和調(diào)試,我發(fā)現(xiàn)主要原因是這個(gè)Python SDK不太完整,里面很多需要跟用戶(hù)交互的部分,SDK無(wú)法自動(dòng)執(zhí)行,導(dǎo)致運(yùn)行失敗。
看起來(lái)讓牛馬成為牛馬,讓人成為人的想法有點(diǎn)天真了。沒(méi)法實(shí)現(xiàn)全自動(dòng),那我們半自動(dòng)試一試。我讓Cursor把下一步要做的事情寫(xiě)入到step.md中,然后我去手動(dòng)復(fù)制給Claude Code執(zhí)行。
看起來(lái)主要的問(wèn)題,是Claude Code里面會(huì)涉及到很多交互環(huán)節(jié),但Python SDK無(wú)法自動(dòng)交互。看來(lái)還是需要我手動(dòng)執(zhí)行。這樣吧,不要step.py文件里。你把每一步需要指揮Claude Code做的事情,生成一個(gè)step.md,我來(lái)一步一步轉(zhuǎn)告他。現(xiàn)在我們成了公司中層,典型的傳話筒,把老板的安排傳達(dá)給下屬。生成的step.md文件如下:
圖片
我們手動(dòng)從里面一步一步復(fù)制出指令,發(fā)送給Claude Code。粘貼的長(zhǎng)文本在Claude Code里面可以正常保留。例如下面這段步驟描述:
請(qǐng)幫我在frontend目錄下初始化一個(gè)完整的Next.js 14項(xiàng)目。
具體步驟:
1. **初始化Next.js項(xiàng)目**
- 在frontend目錄下創(chuàng)建Next.js 14項(xiàng)目
- 使用TypeScript模板
- 使用App Router
2. **配置Tailwind CSS**
- 安裝tailwindcss依賴(lài)
- 配置tailwind.config.js
- 設(shè)置全局樣式
3. **安裝shadcn/ui**
- 初始化shadcn/ui
- 配置components.json
- 安裝基礎(chǔ)UI組件
4. **創(chuàng)建項(xiàng)目結(jié)構(gòu)**
```
frontend/
├── app/
│ ├── page.tsx # 主頁(yè)
│ ├── layout.tsx # 根布局
│ └── globals.css # 全局樣式
├── components/
│ └── ui/ # shadcn/ui組件
├── lib/
│ └── utils.ts # 工具函數(shù)
├── types/
└── hooks/
```
5. **配置開(kāi)發(fā)工具**
- ESLint配置
- Prettier配置
- TypeScript配置
請(qǐng)確保每一步都成功執(zhí)行,項(xiàng)目最終能夠運(yùn)行 `npm run dev` 啟動(dòng)。
開(kāi)始執(zhí)行!先生成代碼的骨架,在生成的過(guò)程中,Claude Code會(huì)多次跟你索要權(quán)限。你手動(dòng)同意以后,創(chuàng)建好結(jié)構(gòu)。然后再讓Cursor落地頁(yè)內(nèi)容的描述:
創(chuàng)建GTD項(xiàng)目的專(zhuān)業(yè)落地頁(yè)
具體任務(wù):
1. 修改app/layout.tsx:
- 完全更改metadata為GTD相關(guān)
- title: "GTD任務(wù)管理系統(tǒng) - 高效生產(chǎn)力工具"
- description: "基于Getting Things Done方法的現(xiàn)代任務(wù)管理平臺(tái),幫您清空大腦,專(zhuān)注執(zhí)行"
1. 完全重寫(xiě)app/page.tsx:
- 創(chuàng)建GTD宣傳落地頁(yè),包含:
* Hero區(qū)域:GTD方法介紹和價(jià)值主張
* 功能特色:任務(wù)管理、看板視圖、生產(chǎn)力統(tǒng)計(jì)
* 立即開(kāi)始按鈕,指向注冊(cè)/登錄
- 使用現(xiàn)代化設(shè)計(jì),保持簡(jiǎn)潔專(zhuān)業(yè)
3. 確保Tailwind CSS配置完整:
- 檢查是否有tailwind.config.ts
- 如果沒(méi)有則創(chuàng)建完整的配置文件
4. 頁(yè)面設(shè)計(jì)要求:
- Hero區(qū)域:突出GTD生產(chǎn)力方法的核心價(jià)值
- 功能展示:任務(wù)收集、整理、回顧的完整workflow
- 現(xiàn)代化UI設(shè)計(jì),專(zhuān)業(yè)的商務(wù)風(fēng)格生成的落地頁(yè)如下圖所示:
圖片
后面的步驟也差不多,簡(jiǎn)單到我都不知道怎么寫(xiě)文章。大概就是:
- 從step.md里面復(fù)制步驟描述
- 粘貼到Claude Code,等待結(jié)束
- 人工測(cè)試是否滿(mǎn)足需求
- 重復(fù)步驟1
我們來(lái)看一下最終生成的網(wǎng)站效果:
- 任務(wù)列表頁(yè)
圖片
- 任務(wù)看板頁(yè)
圖片
數(shù)據(jù)總結(jié)頁(yè)面
圖片
總結(jié)
整個(gè)生成的過(guò)程,我就是給Claude Code下達(dá)命令,然后坐在旁邊刷小紅書(shū),等Claude Code結(jié)束,然后執(zhí)行下一步。如果Claude Code的Python SDK能增強(qiáng)一些,自動(dòng)處理各種權(quán)限交互的問(wèn)題,我覺(jué)得做成全自動(dòng)沒(méi)有任何問(wèn)題。
網(wǎng)站整體寫(xiě)完以后,我剛想感嘆Claude真強(qiáng)啊,然后突然意識(shí)到,我Claude Code后面使用的是國(guó)產(chǎn)的大模型!智譜家的GLM-4.5!我最初只是想給 Cursor 找一個(gè)強(qiáng)大的小弟,于是有了Claude Code。但由于Claude賬號(hào)被封,所以換成了剛出來(lái)的GLM-4.5.但它的編碼能力大大超出了我的預(yù)期。
GLM-4.5不僅僅是Claude的平替,它完全可以是一個(gè)更強(qiáng)大的存在。而且這個(gè)模型完全開(kāi)源!第一款原生Agentic基座模型,能夠勝任全棧開(kāi)發(fā)任務(wù)。推理、代碼、智能體綜合能力(平均分)達(dá)到開(kāi)源模型 SOTA 水平。Agentic Coding 盲評(píng)測(cè)試中,實(shí)測(cè)結(jié)果國(guó)內(nèi)最佳。官方API的價(jià)格非常便宜,輸入 0.8 元/百萬(wàn) tokens,輸出 2 元/百萬(wàn) tokens。同時(shí),高速版本實(shí)測(cè)生成速度超過(guò) 100 tokens/秒。現(xiàn)在注冊(cè)還贈(zèng)送2億Token。
如果你也沒(méi)有Claude賬號(hào),那可以試一試GLM-4.5。用Cursor來(lái)分解任務(wù),生成需求、設(shè)計(jì)、任務(wù)三份文檔。然后把任務(wù)拆成Claude Code能夠執(zhí)行的小步驟。Claude Code通過(guò)GLM-4.5來(lái)執(zhí)行任務(wù)生成代碼,這份工作流,不會(huì)讓你失望的。
參考資料
[1] Python SDK: https://github.com/anthropics/claude-code-sdk-python
[2] 智譜開(kāi)放平臺(tái): https://bigmodel.cn/usercenter/proj-mgmt/apikeys




























