構(gòu)建指南:從TypeScript模型生成到代碼審查實(shí)戰(zhàn))
1. 項(xiàng)目概述從萬(wàn)星項(xiàng)目看AI編程助手的技能革命最近在GitHub上Matt Pocock的TypeScript工具庫(kù)typescript-eslint突破了10萬(wàn)星這個(gè)里程碑背后除了項(xiàng)目本身的質(zhì)量更讓我感興趣的是Matt作為一位頂尖開發(fā)者如何高效地運(yùn)用和構(gòu)建AI編程助手的“技能”Skills。這不僅僅是關(guān)于使用一個(gè)工具而是關(guān)于如何將AI深度融入開發(fā)生態(tài)構(gòu)建一個(gè)可擴(kuò)展、可復(fù)用的智能工作流。對(duì)于每一位開發(fā)者無(wú)論是前端、后端還是全棧理解并玩轉(zhuǎn)這個(gè)新興的“Skill生態(tài)”已經(jīng)從一個(gè)加分項(xiàng)變成了提升十倍效能的必備能力。簡(jiǎn)單來(lái)說(shuō)AI編程助手的Skill可以理解為給這個(gè)“超級(jí)實(shí)習(xí)生”安裝的專屬插件或編寫的定制化指令集。一個(gè)基礎(chǔ)的AI助手能幫你寫代碼、解BUG但一個(gè)加載了正確Skills的AI助手能理解你項(xiàng)目的特定技術(shù)棧比如Vue 3 TypeScript Pinia、遵循你團(tuán)隊(duì)的代碼規(guī)范、甚至直接調(diào)用你內(nèi)部的工具鏈如生成特定格式的API請(qǐng)求代碼。Matt的萬(wàn)星項(xiàng)目背后必然有一套高效、精準(zhǔn)的AI協(xié)作模式這正是我們今天要拆解的核心如何像頂級(jí)開發(fā)者一樣手把手地設(shè)計(jì)、實(shí)現(xiàn)并運(yùn)用屬于你自己的AI編程技能生態(tài)從而將重復(fù)性勞動(dòng)自動(dòng)化將創(chuàng)造性思考最大化。2. Skill生態(tài)的核心架構(gòu)與設(shè)計(jì)哲學(xué)2.1 什么是AI編程助手的Skill很多人把AI編程助手簡(jiǎn)單地當(dāng)作一個(gè)更聰明的代碼補(bǔ)全工具這是對(duì)其能力的巨大浪費(fèi)。在我看來(lái)Skill是其真正的威力所在。你可以把它類比為給一位天賦異稟但缺乏經(jīng)驗(yàn)的工程師配備的“工作手冊(cè)”和“專用工具箱”。基礎(chǔ)能力Out-of-the-box就像工程師自帶的編程語(yǔ)言知識(shí)和基礎(chǔ)算法思維。AI助手出廠就具備理解多種語(yǔ)言、生成代碼片段、解釋邏輯的能力。技能Skills這是你為這位工程師編寫的“標(biāo)準(zhǔn)操作程序”SOP和“領(lǐng)域知識(shí)庫(kù)”。例如一個(gè)“生成React組件”的Skill不僅生成JSX還強(qiáng)制包含PropTypes/TypeScript接口、默認(rèn)導(dǎo)出、特定的CSS-in-JS寫法比如你團(tuán)隊(duì)規(guī)定的styled-components模式并自動(dòng)在文件頂部添加團(tuán)隊(duì)版權(quán)注釋。一個(gè)“優(yōu)化數(shù)據(jù)庫(kù)查詢”的Skill當(dāng)AI分析一段SQL時(shí)這個(gè)Skill會(huì)激活引導(dǎo)AI依據(jù)你數(shù)據(jù)庫(kù)如PostgreSQL的版本、表索引情況給出具體的EXPLAIN ANALYZE建議和改寫方案。一個(gè)“處理項(xiàng)目特定錯(cuò)誤碼”的Skill當(dāng)AI看到類似ERR_API_1004的日志時(shí)能自動(dòng)關(guān)聯(lián)到你內(nèi)部文檔解釋其含義“用戶權(quán)限校驗(yàn)失敗”并給出標(biāo)準(zhǔn)的排查路徑和修復(fù)函數(shù)。Matt Pocock在維護(hù)大型TS項(xiàng)目時(shí)一定會(huì)定義諸如“生成符合typescript-eslint特定規(guī)則的代碼”、“為新的ESLint規(guī)則編寫測(cè)試用例模板”、“撰寫符合項(xiàng)目語(yǔ)氣的PR描述”等Skills。這些Skills將他的個(gè)人經(jīng)驗(yàn)和項(xiàng)目約束固化成了AI可執(zhí)行的指令保證了輸出的一致性和專業(yè)性。2.2 設(shè)計(jì)高效Skill的三大原則設(shè)計(jì)一個(gè)有用的Skill遠(yuǎn)比寫一個(gè)復(fù)雜的提示詞Prompt要深刻。它需要系統(tǒng)性的思考。我總結(jié)為三個(gè)核心原則場(chǎng)景化而非通用化一個(gè)試圖“寫好所有函數(shù)”的Skill注定失敗。優(yōu)秀的Skill聚焦于一個(gè)具體、高頻、可描述的場(chǎng)景。例如“為Vue 3 Composition API編寫一個(gè)異步數(shù)據(jù)獲取Hook”就比“改進(jìn)Vue代碼”要好得多。場(chǎng)景越具體AI的理解和輸出就越精準(zhǔn)。提供結(jié)構(gòu)化上下文與約束這是Skill與簡(jiǎn)單對(duì)話的關(guān)鍵區(qū)別。你不能只說(shuō)“生成一個(gè)登錄表單”而要在Skill中定義好技術(shù)棧React 18 TypeScript Tailwind CSS。狀態(tài)管理使用Zustand且狀態(tài)切片命名為authStore。驗(yàn)證庫(kù)使用Zod且Schema必須從/schemas/auth.ts導(dǎo)入。UI庫(kù)使用Shadcn/ui的Button和Input組件。代碼風(fēng)格函數(shù)組件命名導(dǎo)出使用async/await。 將這些約束以清晰的結(jié)構(gòu)如YAML、JSON或帶注釋的示例提供給AI它能產(chǎn)出幾乎開箱即用的代碼。閉環(huán)與可迭代一個(gè)Skill不是一次性的提示詞。它應(yīng)該包含“驗(yàn)證”和“改進(jìn)”環(huán)節(jié)。例如一個(gè)“代碼審查”Skill在給出建議后可以要求AI根據(jù)反饋如“這個(gè)性能優(yōu)化點(diǎn)不適用于我們場(chǎng)景”來(lái)更新其知識(shí)庫(kù)或者設(shè)計(jì)一個(gè)簡(jiǎn)單的測(cè)試用例來(lái)驗(yàn)證AI生成的函數(shù)是否運(yùn)行正確。這使Skill能夠隨著項(xiàng)目演進(jìn)而成長(zhǎng)。3. 手把手構(gòu)建你的第一個(gè)核心Skill理論說(shuō)再多不如動(dòng)手實(shí)踐。讓我們以一個(gè)最通用也最高頻的場(chǎng)景為例構(gòu)建一個(gè)“生成TypeScript數(shù)據(jù)模型與Zod驗(yàn)證Schema”的Skill。這個(gè)Skill能極大減少在前后端協(xié)作中定義數(shù)據(jù)契約的重復(fù)勞動(dòng)。3.1 定義Skill的輸入與輸出規(guī)范首先我們需要明確這個(gè)Skill的“接口”。一個(gè)好的Skill應(yīng)該像一個(gè)小型API。輸入Input一段自然語(yǔ)言描述定義數(shù)據(jù)模型。例如“創(chuàng)建一個(gè)用戶模型User包含字段id數(shù)字自增、username字符串必填3-20字符、email字符串符合郵箱格式、status枚舉active, inactive, suspended、createdAt日期時(shí)間戳。profile是一個(gè)可選對(duì)象包含avatarUrl字符串可選和bio字符串最大500字符。”輸出Output兩個(gè)并行的代碼塊一個(gè)是TypeScript接口/類型定義另一個(gè)是Zod驗(yàn)證模式Schema。它們必須嚴(yán)格對(duì)應(yīng)。3.2 編寫Skill的詳細(xì)指令與上下文接下來(lái)我們將上述規(guī)范轉(zhuǎn)化為AI能精確理解的指令。這不僅僅是寫提示詞而是在構(gòu)建一個(gè)“微服務(wù)”的配置說(shuō)明。# Skill: TypeScript Interface Zod Schema Generator ## 核心目標(biāo) 根據(jù)用戶對(duì)數(shù)據(jù)模型的自然語(yǔ)言描述同步生成嚴(yán)格對(duì)應(yīng)的TypeScript類型定義和Zod驗(yàn)證模式。 ## 上下文與約束 1. **技術(shù)棧**TypeScript 4.9 Zod 3.22。 2. **TypeScript規(guī)范** * 使用 interface 而非 type 定義主要模型除非有特殊需求。 * 所有字段必須顯式聲明是否可選?。 * 時(shí)間字段統(tǒng)一為 Date 類型或 stringISO格式根據(jù)描述決定。 3. **Zod規(guī)范** * 從 zod 導(dǎo)入 z。 * Schema對(duì)象命名為 [ModelName]Schema如 UserSchema。 * 充分利用Zod的鏈?zhǔn)椒椒?min(), .max(), .email(), .regex()實(shí)現(xiàn)描述中的約束。 * 可選字段使用 .optional()。 * 枚舉使用 z.enum([...])。 4. **輸出格式** * 首先輸出TypeScript接口。 * 然后輸出Zod Schema。 * 兩者之間用空行分隔。 * 在代碼塊中輸出并標(biāo)注語(yǔ)言類型typescript。 ## 處理邏輯 1. **解析描述**識(shí)別實(shí)體名、字段名、類型、約束條件必填/可選、格式、范圍、枚舉值。 2. **類型映射** * “數(shù)字” - number * “字符串” - string * “日期時(shí)間戳” - Date (或 string如果描述為ISO字符串) * “枚舉” - TypeScript的聯(lián)合字面量類型Zod的z.enum * “對(duì)象” - 對(duì)應(yīng)的接口類型 3. **約束轉(zhuǎn)換**將“3-20字符”轉(zhuǎn)換為Zod的 .min(3).max(20)將“符合郵箱格式”轉(zhuǎn)換為 .email()。 ## 示例供AI參考學(xué)習(xí) **用戶輸入**“一個(gè)文章Post模型有標(biāo)題title字符串必填內(nèi)容content字符串標(biāo)簽tags字符串?dāng)?shù)組可選發(fā)布時(shí)間publishAt日期時(shí)間戳可選。” **AI輸出** typescript // TypeScript Interface interface Post { title: string; content?: string; tags?: string[]; publishAt?: Date; }// Zod Schema import { z } from zod; export const PostSchema z.object({ title: z.string().min(1, Title is required), content: z.string().optional(), tags: z.array(z.string()).optional(), publishAt: z.date().optional(), }); **注意**這個(gè)Skill指令本身就是一個(gè)可復(fù)用的文檔。你可以把它保存為一個(gè)Markdown文件或存儲(chǔ)在AI助手的“自定義指令”庫(kù)中。關(guān)鍵在于它定義了清晰的“合同”讓AI的輸出變得可預(yù)測(cè)、可集成。 ### 3.3 實(shí)操使用Skill并迭代優(yōu)化 現(xiàn)在我們將上面定義的用戶模型描述輸入給加載了此Skill的AI助手如Cursor、Claude或配置了自定義指令的ChatGPT。 **第一次輸出可能接近完美但我們需要用工程師的眼光審視** 1. id字段描述為“自增”在TypeScript中通常標(biāo)記為number但在Zod中創(chuàng)建時(shí)不需要此字段更新時(shí)需要。我們的Skill是否需要區(qū)分“創(chuàng)建Schema”和“更新Schema”這是一個(gè)可以迭代的點(diǎn)。 2. status枚舉AI可能生成z.enum([active, inactive, suspended])這很好。但我們是否希望它同時(shí)生成一個(gè)TypeScript的聯(lián)合類型type UserStatus active | inactive | suspended并在接口中使用這能讓類型更清晰。我們可以修改Skill指令要求它額外導(dǎo)出這個(gè)枚舉類型。 **迭代后的Skill增強(qiáng)點(diǎn)** 在Skill指令的“輸出格式”部分增加一條“如果字段涉及枚舉請(qǐng)額外導(dǎo)出一個(gè)對(duì)應(yīng)的TypeScript聯(lián)合類型如export type UserStatus ...并在接口中使用該類型。” 經(jīng)過(guò)這樣1-2輪的交互和指令微調(diào)這個(gè)Skill就會(huì)變得極其強(qiáng)大和穩(wěn)定。之后每當(dāng)產(chǎn)品經(jīng)理或后端同事發(fā)來(lái)一段新的API字段描述你只需要復(fù)制粘貼這個(gè)Skill就能在幾秒內(nèi)生成完全可用的類型和驗(yàn)證代碼省去了大量機(jī)械翻譯和敲鍵盤的時(shí)間。 ## 4. 進(jìn)階構(gòu)建與管理個(gè)人Skill生態(tài)系統(tǒng) 當(dāng)你擁有了幾個(gè)核心Skill后如何管理它們并讓它們協(xié)同工作就成為了下一個(gè)課題。這就像管理一個(gè)內(nèi)部工具庫(kù)。 ### 4.1 Skill的分類與存儲(chǔ) 我建議按維度進(jìn)行分類存儲(chǔ) * **按技術(shù)棧**vue-skills/, react-skills/, node-skills/, database-skills/。 * **按任務(wù)類型**code-generation/, code-review/, debugging/, documentation/, refactoring/。 * **按項(xiàng)目特定**project-alpha/包含該項(xiàng)目特有的組件生成、API調(diào)用規(guī)范等。 存儲(chǔ)格式可以是Markdown文件如上例也可以是JSON或YAML關(guān)鍵在于**可讀、可版本管理**用Git管理。每個(gè)Skill文件應(yīng)包含名稱、描述、版本、輸入輸出示例、變更日志。 ### 4.2 Skill的組合與鏈?zhǔn)秸{(diào)用 真正的威力在于組合。例如一個(gè)“**實(shí)現(xiàn)新功能**”的工作流可以鏈?zhǔn)秸{(diào)用多個(gè)Skill 1. **Skill A需求解析與API設(shè)計(jì)**根據(jù)功能描述生成RESTful API端點(diǎn)規(guī)劃和請(qǐng)求/響應(yīng)數(shù)據(jù)結(jié)構(gòu)描述。 2. **Skill B生成數(shù)據(jù)模型與Schema**即我們上面構(gòu)建的Skill根據(jù)Skill A的輸出生成對(duì)應(yīng)的TypeScript接口和Zod Schema。 3. **Skill C生成Service層函數(shù)**根據(jù)API端點(diǎn)和數(shù)據(jù)模型生成包含錯(cuò)誤處理的異步服務(wù)函數(shù)。 4. **Skill D生成React Hook**根據(jù)Service函數(shù)生成一個(gè)封裝了加載、錯(cuò)誤、數(shù)據(jù)狀態(tài)的自定義Hook。 5. **Skill E生成單元測(cè)試骨架**為生成的Hook和Service函數(shù)生成Jest/Vitest測(cè)試用例骨架。 你可以通過(guò)一個(gè)“總控”提示詞引導(dǎo)AI按順序執(zhí)行這一系列Skill或者手動(dòng)分步執(zhí)行。這相當(dāng)于將你的開發(fā)模式標(biāo)準(zhǔn)化、流水線化。 ### 4.3 以“代碼審查”Skill為例的深度解析 讓我們?cè)偕钊胍粋€(gè)復(fù)雜Skill**代碼審查**。一個(gè)簡(jiǎn)單的“請(qǐng)審查這段代碼”是低效的。一個(gè)高效的Code Review Skill應(yīng)該像你團(tuán)隊(duì)最資深的工程師一樣思考。 **一個(gè)強(qiáng)大的Code Review Skill指令應(yīng)包含** 1. **審查維度清單**明確告訴AI從哪些方面檢查并分配優(yōu)先級(jí)。 * **安全性**高SQL注入、XSS、敏感信息泄露、權(quán)限校驗(yàn)缺失。 * **性能**高不必要的重渲染React、N1查詢、大循環(huán)復(fù)雜度、未緩存的昂貴計(jì)算。 * **可維護(hù)性**中代碼重復(fù)、函數(shù)過(guò)長(zhǎng)30行、魔法數(shù)字、模糊的變量名。 * **一致性**中是否遵循項(xiàng)目ESLint/Prettier規(guī)則、導(dǎo)入順序、命名約定如handleClick vs onClick。 * **正確性**高邊界條件處理空數(shù)組、null值、異步錯(cuò)誤捕獲、狀態(tài)更新競(jìng)態(tài)條件。 2. **提供項(xiàng)目上下文**在Skill中鏈接或粘貼你項(xiàng)目的.eslintrc.js核心規(guī)則、tsconfig.json嚴(yán)格模式設(shè)置、以及重要的代碼規(guī)范文檔片段。讓AI的審查基于你的標(biāo)準(zhǔn)而非通用標(biāo)準(zhǔn)。 3. **輸出結(jié)構(gòu)化報(bào)告**要求AI以如下格式輸出便于跟蹤 markdown ## 代碼審查報(bào)告 **文件** src/components/UserList.tsx **總體評(píng)價(jià)** [良好/有風(fēng)險(xiǎn)/需要重大修改] ### 關(guān)鍵問(wèn)題必須修復(fù) 1. **安全性 - 高風(fēng)險(xiǎn)** * **位置**第45行div{user.bio}/div * **問(wèn)題**直接渲染用戶輸入的bio字段存在XSS風(fēng)險(xiǎn)。 * **建議**使用DOMPurify清洗或React的dangerouslySetInnerHTML并注明已清洗。 2. **性能 - 中風(fēng)險(xiǎn)** * **位置**第23行users.filter(u u.active).map(...) * **問(wèn)題**在渲染函數(shù)內(nèi)連續(xù)進(jìn)行filter和map每次渲染都會(huì)創(chuàng)建新數(shù)組可能導(dǎo)致子組件不必要的重渲染。 * **建議**使用useMemo緩存計(jì)算結(jié)果。 ### 改進(jìn)建議建議修復(fù) 1. **可維護(hù)性** * **位置**第10-35行fetchUsers函數(shù)。 * **問(wèn)題**函數(shù)過(guò)長(zhǎng)25行混合了數(shù)據(jù)獲取、錯(cuò)誤處理和狀態(tài)更新邏輯。 * **建議**拆分為fetchUsers純獲取、handleFetchError錯(cuò)誤處理、updateUserState狀態(tài)更新三個(gè)小函數(shù)。 4. **提供修復(fù)示例**對(duì)于復(fù)雜問(wèn)題要求AI直接給出修復(fù)后的代碼差分diff而不僅僅是文字描述。 構(gòu)建這樣一個(gè)Skill需要初始投入但一旦建成它將成為團(tuán)隊(duì)24小時(shí)在線的“第一道質(zhì)量關(guān)卡”能捕捉到那些在深夜趕工時(shí)容易忽略的常見問(wèn)題。 ## 5. 實(shí)戰(zhàn)避坑Skill開發(fā)中的常見陷阱與優(yōu)化策略 在實(shí)際構(gòu)建和使用Skill的過(guò)程中我踩過(guò)不少坑也總結(jié)出一些讓Skill從“能用”到“好用”的關(guān)鍵策略。 ### 5.1 陷阱一指令過(guò)于模糊或存在歧義 * **糟糕的指令**“寫一個(gè)函數(shù)。” * **優(yōu)秀的指令**“寫一個(gè)TypeScript函數(shù)名為formatCurrency接受一個(gè)number類型的參數(shù)amount和一個(gè)可選的string類型參數(shù)currencyCode默認(rèn)值USD。函數(shù)返回一個(gè)字符串將數(shù)字格式化為貨幣樣式如1234.5 - $1,234.50。使用Intl.NumberFormat API實(shí)現(xiàn)。請(qǐng)包含JSDoc注釋。” **優(yōu)化策略**使用“給定-當(dāng)-那么”Given-When-Then的格式來(lái)定義Skill。給定輸入條件當(dāng)執(zhí)行某個(gè)操作那么輸出必須滿足什么標(biāo)準(zhǔn)。這能極大減少AI的“猜測(cè)”空間。 ### 5.2 陷阱二缺乏負(fù)面示例與邊界條件 AI只知道你告訴它的“正確”做法但不知道什么是“錯(cuò)誤”的。這可能導(dǎo)致它生成看似合理但有隱患的代碼。 * **解決方案**在Skill的“示例”部分不僅提供正面示例也提供1-2個(gè)**反面典型**并解釋為什么不好。 **反面示例**用戶輸入“驗(yàn)證手機(jī)號(hào)”AI生成一個(gè)簡(jiǎn)單的/^1\d{10}$/正則。 **問(wèn)題**未考慮國(guó)際區(qū)號(hào)、號(hào)碼分隔符、以及最新的號(hào)段。 **改進(jìn)指令**在Skill中說(shuō)明“對(duì)于手機(jī)號(hào)驗(yàn)證優(yōu)先考慮使用成熟的庫(kù)如libphonenumber-js。如果必須用正則需明確說(shuō)明該正則僅適用于中國(guó)大陸11位手機(jī)號(hào)并提示其局限性。” ### 5.3 陷阱三忽視版本管理與更新 技術(shù)棧和項(xiàng)目規(guī)范在變化Skill不能一成不變。 * **解決方案**為每個(gè)Skill引入簡(jiǎn)單的版本號(hào)如v1.0.1和變更日志。當(dāng)團(tuán)隊(duì)升級(jí)了UI庫(kù)或決定從Redux遷移到Zustand時(shí)專門花時(shí)間更新對(duì)應(yīng)的Skill。將Skill庫(kù)的更新作為一項(xiàng)常規(guī)的技術(shù)債務(wù)維護(hù)任務(wù)。 ### 5.4 陷阱四試圖用一個(gè)Skill解決所有問(wèn)題 這是最大的誘惑也是最常見的失敗原因。一個(gè)“萬(wàn)能代碼生成器”Skill的指令會(huì)變得無(wú)比復(fù)雜且矛盾最終效果很差。 * **黃金法則**“一個(gè)Skill一個(gè)職責(zé)”。專注于做好一件小事。生成UI組件、處理數(shù)據(jù)轉(zhuǎn)換、編寫測(cè)試、審查代碼這些都應(yīng)該是獨(dú)立的Skill。通過(guò)組合它們來(lái)完成復(fù)雜任務(wù)而不是創(chuàng)造一個(gè)巨無(wú)霸。 ## 6. 融入工作流讓Skill成為你的開發(fā)習(xí)慣 構(gòu)建Skill不是目的讓它無(wú)縫融入你的日常編碼Workflow才是價(jià)值所在。 1. **啟動(dòng)模板**為新項(xiàng)目創(chuàng)建一個(gè)“項(xiàng)目初始化”Skill它能根據(jù)你選擇的框架Next.js, Vite, Nuxt生成包含你偏好配置ESLint規(guī)則、Prettier、目錄結(jié)構(gòu)、常用工具類的基礎(chǔ)模板。 2. **結(jié)對(duì)編程模式**在IDE中如使用Cursor將常用Skill設(shè)置為快捷鍵或代碼塊觸發(fā)。例如選中一個(gè)JSON響應(yīng)體按CmdK輸入“生成TS接口”對(duì)應(yīng)的Skill自動(dòng)運(yùn)行。 3. **團(tuán)隊(duì)共享與標(biāo)準(zhǔn)化**在團(tuán)隊(duì)Wiki或共享Git倉(cāng)庫(kù)中維護(hù)一套“官方推薦Skill庫(kù)”。新成員 onboarding 的第一天除了拉取代碼就是導(dǎo)入這些Skill這能快速讓他的開發(fā)輸出符合團(tuán)隊(duì)標(biāo)準(zhǔn)縮短磨合期。 4. **復(fù)盤與進(jìn)化**每周或每?jī)芍芑仡櫼幌履愫虯I的對(duì)話歷史。哪些重復(fù)性問(wèn)題你總在手動(dòng)糾正把它抽象成一個(gè)新的Skill。例如你發(fā)現(xiàn)總在提醒AI“不要使用any類型”那么就創(chuàng)建一個(gè)“**TypeScript嚴(yán)格模式審查**”的Skill專門檢查并替換any為更具體的類型。 Matt Pocock的萬(wàn)星項(xiàng)目啟示我們頂尖開發(fā)者的效率不僅源于深厚的編碼能力更源于將最佳實(shí)踐和重復(fù)模式工具化、自動(dòng)化的能力。AI編程助手及其Skill生態(tài)正是這個(gè)時(shí)代賦予我們的最強(qiáng)杠桿。它不是一個(gè)替代思考的魔法黑盒而是一個(gè)需要你精心設(shè)計(jì)、反復(fù)調(diào)試的“思維外骨骼”。開始構(gòu)建你的第一個(gè)Skill從一個(gè)具體的、讓你感到輕微疼痛的重復(fù)任務(wù)開始你會(huì)立刻感受到那種將繁瑣工作委托出去的流暢感。這個(gè)過(guò)程本身就是對(duì)問(wèn)題更深層次的思考與抽象這或許才是最大的收獲。