歡迎大家來到我們這個 Claude Code 的一個快速入門的教學 那基本上這個教學它是一個不管你是今天已經在使用 Claude Code 還是說你今天是一個準備要把 Claude Code 導入到你日常開發的工作流 這個教學都很適合你們來看過一遍然後學習這裡面的一個知識 那首先我們先來看一下今天要教的內容有哪些部分 那首先第一個是我會先去介紹這個 Claude Code 裡面比較常用的14個指令 那基本上這個整個教學裡面我們都會去根據這14個指令去做展開 然後這裡面你會去了解很多跟 Claude Code 有關的一些基礎知識 還有這個底層的一些原理然後再來就是說第二個部分是這個規則跟這個記憶的區別是什麼 我們要怎麼樣讓我們的 Claude Code 去記得一些事情 然後我們要怎麼樣去做分類然後去做一些自定義的一些規則 然後第三個部分就是說我們要怎麼樣去理解 什麼是 MCP 什麼是 skills 什麼是 plugin 還有就是說我們去比較就是說 skills 跟這個記憶之間的一個區別會是什麼 然後第四個部分就是說我們要怎麼樣去定義一個 subagents 這個 subagents 的意思就是說我們今天 Claude Code 它本身是一個 agent 那它可以去指派或說調用底下的更多 agent 去做各自專精的事情 那第五個部分就是這個 context 的一個基本概念 基本上我們今天在使用 Claude Code 這樣的一個工具的時候 這個 context 的一個基本概念是非常重要的 就是說我們今天要去學習怎麼樣去管理我們這樣的一個上下文 然後讓我們的開發變得更有效率一點 那這裡面也會去教學怎麼樣去使用這個 compact 指令 還有這個 Clear 跟這個 dump to file 的一個策略 然後也會對他們這些策略做一個比較 跟大家去講解怎麼樣去使用會是比較好去維護我們這個 context 的一個部分 然後在開始我們今天的教學之前我先快速的工商一下 這個我另外的其他課程的部分 這個這兩個課程是我跟Hahow在合作的一個課程 基本上左邊這個它也是 Claude Code 的一個教學 只是說它是比較偏向實戰跟 MCP 還有就是說更多一些 skills 工具的一個教學 那基本上它是比較偏向像進階一點的一個 Claude Code 的一個教學課程 那右邊的話它是一個前端面試的一個課程 所以基本上它就是一個如果你有在準備前端面試可以考慮的一個課程 那這個部分的連結我都會放在簡介欄裡面大家可以去如果有興趣的話 可以去看一下 然後我會附上優惠券的部分在這個簡介欄這邊 那我們回到這一個終端機這邊 那我們回到這個 Claude Code 的一個教學的部分 那基本上我們先來到終端機這個地方你可以去輸入這個 Claude Code 的一個指令 那這個 Claude Code 的指令基本上你按下 Enter 之後 它會先教你怎麼樣去選擇這個樣式的部分 那這個地方 你就選擇一個自己喜歡的樣式就可以了 那基本上只要你選擇樣式之後你會進到第二個部分 這個部分 就是你可以選擇看你要用訂閱的方式去做登錄還是說去使用官方的 API key 然後來做使用 Claude Code 的一個額度這個樣子 然後第三個部分是如果你有去買這個 Amazon 或者說這個 Microsoft 平台的一些方案 它會提供額度給你那你可以用第三種方式來做使用這個 Claude Code 的工具 那我自己的話基本上因為我自己有去搭建一個這個跟 API key 有關的一個平台 那這個平台基本上它的好處就是可以幫我自己去節省滿多的一個 token 的使用量 還有就是說它的一個因為我今天如果用訂閱帳戶它可能會有五小時或者說七天的限制 那我用這種方式來做處理的話就不會有受到這樣的一個限制 那我就會用我這個自己的方式來開啟這個 Claude Code 那如果大家對這個方式有興趣的話可以去底下的這個簡介欄看一下 我也會把這個相關資訊放在底下但這邊我們就不對這個地方做過多的介紹 那這邊我進到 Claude Code 裡面一樣我先選擇一個我喜歡的主題 然後這邊就繼續好在這個地方 那這樣我們就進來這個 Claude Code 的一個部分了 那首先第一個我們先來看一下我們要學習哪些指令 基本上我們今天會教到這個裡面所有的這個十四個常用的一個指令 首先我們先來看一下左邊這邊這四個第一個我們先來看 Permissions 這個部分 基本上如果你今天去使用這個 Permissions 的一個用途的話 它的一個用意就是說我們今天在使用 Claude Code 工具的時候 Claude Code 這個工具的時候它基本上它是對你整個電腦 它有非常高的一個存取權限 那你可以選擇就是說你想要允許這個工具 去做什麼樣的事情 那可以去執行什麼樣的指令然後做 比如說編輯檔案或者說寫入檔案 或者說去執行一些跟命令行有關的一些指令的時候 是可以直接執行 還是說要通過你的允許才去做執行都會在這裡面做設定 那我自己平常因為我會稍微比較懶多一點所以我可能就是會用下面這種方式 就是我直接寫一個 Bash 或者說 Read 跟這個 Write 就是我基本上是同意它可以去使用這些工具 然後去幫我的這個在工作上面 如果去修改程式碼 或說讀程式碼或是要去運行一些命令行的指令的時候它都會透過這樣的方式直接去執行 這個就是我給它的一個權限的控制 那如果你今天想要特別去指定說它只能去使用特定的哪一些指令的話 那你可能要去特別寫說就是說像這個 Bash 指令你可能就會寫說花括號 它只能用哪一個指令譬如說 npm 的指令那如果今天是 Read 的話 你想要指定說它只能去讀哪些檔案 那你可能也是用花括號的方式去做讀取這些特定的檔案 但如果是偏向比較方便的方式的話 可以像我一樣就是說把每一個它可以使用到的工具都直接寫在這個地方 然後讓我們這個 agent 在使用的時候它基本上還是會問我們說要不要去 可不可以去執行這個指令跟這個工具然後譬如說讀檔案或是寫檔案 那用這樣的方式可能就會在你的開發上面會比較方便一點就是說不用每次它去執行 對應的工具跟指令的時候都要問你一次然後你還要手動去點過一次這個樣子 那這個是 Permissions 的部分 然後再來就是說我們來看一下 Model 這個地方 Model 這個地方其實就顧名思義是讓你選擇模型的 那基本上就是你可以在這個地方 去選擇就是說你想要用什麼樣的模型 像我這邊去使用的就是這個 Opus 的一個模型那最近就是說你也可以選擇像這個 這個 Sonnet 5 的一個模型去做選擇 然後再來就是說這一個 Effort 的指令我們來看一下 前面這兩個指令都有比較簡單一點就是說一個是直接給權限 然後第二個是你直接去使用對應的模型這樣就可以了 那第三個指令我們會稍微來講解一下 它的一個裡面的內容會是什麼首先這個 Effort 它的一個意思 顧名思義就是說它希望就是說你希望這個模型去付出怎樣的一個努力的程度 然後來執行你的任務 那它的一個區別就是從左邊排到最右邊去 基本上左邊這個地方 它是最快的但是也是最不聰明的 可是相對來說也是最省成本的 因為你今天如果去不讓你的這個 AI 去思考這麼多東西的話 那它所消耗的 token 也會變得比較少一點 但是相對於你的來說就是它的一個工作的一個能力可能就會變得比較有落差一點 然後再來就是說你如果去使用 Medium 跟 High 的話它是我們在日常工作上面 可能會比較常去用到這兩個模式我們可以分別來看一下它的區別是什麼再來這個地方 首先如果你今天是去使用我們剛才提到的最左邊這個 Low 部分 這個 Low 的部分它是基本上都不去做任何思考 就是說很快速的幫你去完成一些比較簡單的一些任務 那再來就是說如果你去使用像 Medium 這個部分的話 它其實就是你一般的一個日常工作你可以做正常的開發 比如說開發一些比較簡單一些需求 然後這些需求是有比較明確的規則 那這部分你就可以用這個 Medium 的一個方式去做開發 那這也會相對來說比下面這幾種方式都還要去更省 token 那第三種方式是我自己個人也比較常去使用的一個方式 就是說你用 High 的模式去做處理那什麼樣的情況我需要去使用到 High 呢 這個 High 的部分就是說如果你今天需要去計畫一些比較複雜的功能 比如說我今天可能設計了好幾個組件然後同一個頁面上面要去做不同的一個狀態管理 那這部分我可能就會用 High 的方式來做處理 它就是說你今天發現你的專案上面有一些 Bug 那這個 Bug 的部分 可能已經用 Medium 來做處理的話 它可能比較不會抓得那麼準確 可能最後也會抓到 Bug 但是可能你要跟它溝通好幾輪之後 它最後才去找到這個 Bug 是什麼 但是如果你用 High 的話它可能會多想一點 那多想一點多去看多一點檔案的話 它會比較快的去修一些普通的 Bug 那定位到這個問題之後它所消耗的一個 token 跟時間會變得比較少一點 但整體來說這個 High 去消耗的 token 還是會比這個 Medium 還要來得多一點 那基本上它在遇到一些問題的時候它會去問你說要怎麼樣去做處理 像 比如說我今天如果是在計畫一些比較複雜的功能的時候 它可能會問你說 我今天覺得 A 方案可以選擇三個選項 那你覺得第一個選項比較好還是第二個選項比較好還是第三個選項比較好 同時它還會告訴你就是說它今天推薦你選擇哪一個選項會比較好 那下面這個 xHigh 的部分我這邊多打一個 T 我把它刪掉 這個 xHigh 的部分 就是說如果你今天是你的工作是需要去 需要涉及到比較大量的一個工具的呼叫 或者說需要去做比較深層的一個搜尋跟探索一些解決方案的話 就是說這個可能你的你在開發之前 可能對這個解決方案也不是那麼的 熟悉或者說去理解這個樣子 那這部分你可以用 xHigh 的方式去做處理 那基本上它所消耗的 token 可能也會比前面這幾種來的高很多 但是它是很接近 Max 的一個性能 只是說它跟 Max 的一個區別就是會比它還要便宜一點 那這部分就是說 你可以去斟酌就是你想要去使用這個 xHigh 來做處理 還是你要用 High 來處理這個日常的工作就可以了 那基本上 如果你遇到一些需要去探索解決方案的一個功能的話 那這部分你可以去考慮使用 xHigh 的方式來做處理可能會比較省時間一點 那再來就是你去使用 Max 的部分 這個 Max 的部分其實 基本上它就是一個非常非常貴的一個使用的一個方式 基本上就是說如果你有一些功能它是這個如果有錯的話 是不可以接受的那譬如說一些比較敏感像金流部分的一些功能 或者說跟用戶 比如說我今天有個系統是要儲值點數 那它被扣點或者說扣掉一些額度莫名其妙被扣掉一些額度這是它沒辦法接受的 這部分的話你就可以使用 Max 的這樣的一個部分去做處理那它會想的比較久一點 然後去幫你 review 一些計畫幫你提出一些比較好的一些解決方案 去處理這個想要去實作的功能 然後最後這個就是這個 Ultra Code 它是一個新的一個模式 那這個模式你可以看到它這個紫色的一個特效就代表說它非常的準確度的部分 它非常的貴 那它貴它的道理是什麼就是說它除了有這個 Max 功能之外 它還會自動幫你去拆 workflow 這個 workflow 的意思就是說 它可能會幫你去開好幾個平行的 sub agent 幫你做事情 比如說你今天有一個非常大型的重構需要去做處理的話 它可能會幫你把這個任務 確實拆成好幾個不同的子任務 然後這個子任務在同時在開好幾個 sub agent 幫你去 各自完成他們獨立要完成的任務 然後最後再做幫你做測試 或是說做一些跨任務的一些處理像比如說 你今天除了要寫前端的程式碼 你可能還需要去規劃後端的一些 API 這個部分的話你可以用這個模式來做處理 但是它就是有一個缺點就是說非常的貴因為它非常的消耗的 token 它會自動拆 workflow 然後開好幾個 sub agent 幫你去做事情 所以這個地方大家可以去考慮它就是說如果你今天有一個大型重構的一個專案 那同時它裡面有一些設計比如說金流或者說一些比較敏感的一些 用戶資訊的一些重構的時候 這個部分你可以就考慮用比較高級的模式來做處理 但是缺點就是它會特別貴因為我們今天在使用這個 AI 開發的時候 最重要的事情就是我們的 token 的消耗那基本上如果你在日常開發裡面 你可以選擇你對應的一些任務比如說比較簡單的 我們就用 Medium 的方式來做處理就好了那如果今天真的比較複雜 我們再花比較多的 token 去用這個 max 或者說 Ultra Code 的方式來做處理 那以上這個部分就是我們這個 effort 的一個重點 就是說你當你選擇了這樣的一個 effort 之後 你的模型就會根據你所選擇 effort 去做對應的努力 然後消耗對應的 token 然後接下來我們來看一下下一個指令 就是這個我認為是整個 Claude Code 開發裡面相當重要的一個指令 這個 plan 的一個指令 這個 plan 的指令它是 就是說你今天可以在這個地方 去下一個命令這個命令就是說如果我今天 如果沒有下這個 plan 的一個命令的時候它的一個區別是什麼 就是說如果你今天想要去讓你的 agent 去計畫一個功能 比如說我現在已經開了一個前端專案然後我希望他去實做一個計算機的功能 可是我希望他在實做之前告訴我就是說他這個計算機的功能會長什麼樣子 那不是說就是說他理解之後就馬上去執行然後幫我修改檔案 這樣有時候就會遇到一個問題就是其實我根本不想要他去修改這麼多的檔案 但他已經幫我修了那我反而還要花時間來看他修的哪些檔案 然後還要去一個一個把它還原 那這時候可能就會變得比起你今天如果去使用 agent 來講的話 你可能花費的心力跟時間都會變得更多一點 那今天用這個 plan mode 的一個好處就是說 你可以先讓你的 agent 提計畫給你那你先去 review 去審核這個計畫 它可不可行就是符合你的需求之後你再讓你的 agent 去做執行 所以我們這邊可以去很簡單的去打這個 plan 的指令 那這個 plan 指令你後面就可以打出什麼比如說我要你設計一個 設計一個計算機的功能 那這邊我就讓他執行一下那我們就稍微等他一下 那他剛才跑了一下子 然後我們現在看到他所問的第一個問題就是說他我們想要去設計什麼樣的一個計算機功能 基本上這個地方你可以去告訴他就是說你是要基本的四則運算還是進階的計算 或者說你想要客製一些自己想要的一些功能你可以打在第四點這個地方 你可以打自己的這個打自己的一些註解在這個地方 告訴這個 agent 說你想要怎麼樣做那基本上我們這個地方先選擇第一個 這個功能就 ok 的那再就是說第二個他要問你就是說 我希望是目前的頁面去開始做這個計算機的功能 還是說要去把整個前端的一個結構先掃過一遍再去做處理 那基本上這兩個時候你就可以去想一下如果只是目前頁面的話 那是不是他所看的檔案比較少 對吧那這個地方的話他所消耗的 token 你就會比較少一點 然後第二個部分就是說 如果是整個前端他去掃更多的檔案讀更多的東西 那這裡面消耗的一個 token 就會是更多的像這個樣子那我們一樣也選擇第一個就好 然後我們把這個 選擇的結果給送出去然後再等他一下子然後我們可以來看到 這一個 Claude Code 已經給我這個對應的一個實作計畫 就是他跑了大概幾分鐘之後 出現了這個計畫那基本上這個計畫我們可以去 review 一下審核一下然後來看一下他是滿足我們的需求 然後再來就是說 他這裡會提供三個選項首先第一個是你可以選擇用自動模式 去做處理那第二個就是說你希望他 如果想要執行一些跟編輯有關的一個指令的時候 去一個一個問你 然後你可以用手動的方式來去做同意跟不同意這件事情 然後第三個就是說 如果你今天舉了這個計畫有些地方不符合你的需求你想要做修改的話 那你可以在這個第三個部分然後告訴他說你想要怎麼樣做 然後讓他去重新把這個計畫給 重新的再寫過一遍然後有時候 如果是一些比較嚴謹的計畫 我自己個人我會在這個地方 可能就告訴他就是說去 review 一下一下 然後確保不要有 bug 然後我覺得另外一個比較重要的就是說你可以跟他說 去多想一些這個邊緣條件就是這個 edge case 就是說如果我今天在設計一個功能的時候 肯定是希望我們這個 agent 他去多想一些比較邊緣的一些 case 那這些 case 去多想一點的話 基本上可以 也不是說保證完全不會有 bug 但是至少這個出 bug 的機率會變得更低一點 那這邊的話基本上我也來介紹一下就是說這兩個模式他的一個區別是什麼 首先我們來看一下就是基本上如果你去讓他執行之後 你會有三種方式來讓他去做決定要不要執行首先第一個就是說 你可以選擇用手動的方式就是說他如果有今天有那問題就是先問你可不可以改 或者說可不可以去做一些執行一些指令這個地方 就是我們用手動的方式來做處理 那第二個部分就是說如果你今天是用這個自動去接受這個 editors 這個意思就在這個地方假設我今天先選的第一個那你可以看到我自己有一個什麼 auto mode on 但是你可以用這個 Shift+Tab 的按鍵去做切換 那這個手動模式就是我剛才提到這個地方任何問題都是先去問過你一遍然後去做執行 那這個好處就是說你可以一步一步地去做審核基本上不會有太大的一個錯誤 因為基本上你就是守門員然後可以去決定說什麼樣的任務可以放行什麼樣的一個任務 不能去做大概像這樣子但這裡面有一個缺點就是會很麻煩因為他可能 沒過幾步就去問你一遍說這個東西可不可以做還是說這個東西我該做還是不該做 大概像這樣子那我們今天來看下一個模式下一個模式就是我們提到的這個第二個模式 這個地方它是自動但是你只開放它去自動的寫檔案但是說如果今天 有一些 bash 指令這個 bash 指令可能就包含就是說去啟動 這個 npm 的服務或者說 我今天去需要去執行一些 可能清除資料夾裡面的內容的檔案的一些指令的時候它會問你說 可不可以去做執行那這部分也是一樣就是說你可能比起上一個層級 你不用去手動的一個一個去告訴他說你可以做還是不能做 那第二個部分就是跟這些 bash 有關的一個命令行的一些指令的話 你可以決定說要不要讓它去執行那這是第二個的部分那第三個部分的話 就是說在你看這個地方有沒有它就問我說可不可以去執行這個任務了 那基本上這個地方我會告訴它就是說你可以直接去執行然後不用再問過我第二次 那我就選第二個然後去執行那我們來看第三個部分 第三個部分就是說 我今天讓它去用這個 auto mode 這個 auto mode 的意思就是說 它會去自動去做所有的事情比如說 我今天讓它去讀檔案 讓它去寫檔案然後去自動的把這些東西可以做出來 但是它有 還是會有一個分類器在背景去判斷說之前內容是 有問題的還是說它是有可能會有一些風險的那這時候 如果它判斷是有風險的 它會直接把它擋掉就告訴說這個 action 就是說你不能用這樣的方式來做處理 但是你可以去選擇其他方式 然後來做處理這個樣子所以基本上這個 auto 它是自動幫你去做很多這個大概 90%以上的一些判斷跟這個工作上面的一些 譬如說寫程式碼或者說執行命令行跟去讀程式碼的一些工作 都是自動幫你做掉了但是如果有一些真的設計比較高權限的一個 bash 指令的話 它還是會告訴你就是說問你說可以同意還是不能同意 但是這三個模式比起來的話其實 基本上就是最下面這個模式是最方便的 但是它所帶給你的一個風險可能又會高一點像之前 就是說有發生過一個專案 這個專案就是 有一間公司然後他們想要去讓這個 Claude Code 的一個 agent 去做開發的時候是可以基本上就是說不要問過他們就是說他想做什麼 就讓他去做什麼那他們就輸入了這樣的一個指令但是這個指令他的一個缺點就是 他不會問你任何事情他覺得想做就做那時候他們就這個 agent 去覺得就是說 他必須要寫一個指令是去清除掉所有系統裡面的一些檔案 那這時候 agent 就做這樣的事情然後你就把那台電腦裡面很多很重要的資料都刪除掉 所以基本上我們今天也不是說可以讓整個 Claude Code 都可以 擁有整台電腦的權限去做所有事情這樣的話其實也是非常不好的一件事情 因為他可能 莫名其妙就把你的一些很重要的一個資料都刪掉了 像是譬如說你一些比較珍貴的照片 或者說如果你今天有用加密貨幣的錢包那這些私鑰如果被刪掉的話其實 基本上也是 變得非常麻煩的事情 所以基本上我會比較推薦就是說你可以選擇第二種的方式像我自己比較常去 用的可能就是第二種跟第三種那大多時間可能也還是用第三種 因為我有時候 你開發到一半是真的會比較懶惰一點那用這樣的方式他有背有一個背景分類 器幫去判斷說這個指令是能做還是不能做也是一件比較好的事情 那這個部分我們就先把它終止掉那我們來介紹其他的指令 那再來就是說我們來看一下這一個 rewind 這個指令跟這個 resume 的一個指令 基本上這個 rewind 指令就是 你今天執行到一半之後你發現到目前為止 你所輸入的一些指令啊或者說最後所造成的結果或是你想要的 那你可以怎麼樣你可以做一個回退的動作就是說回退到 前一個指令的版本或說某一個指令的版本像我今天如果打上這個指令 在這個地方 你就可以看到我按下 end 的時候 它會讓我選擇我要回到什麼時候就是我第一次調用這個 effort 的時候 還是說第二個我去剛開始要用 plan 的時候那我現在可能反悔了 我不想要做這個計算機的功能所以我就讓它回到這個時候然後它會給你幾個選項 基本上第一個就是它會把這個程式碼跟整個對話也都退回來 然後當我們按下 end 的時候你就會發現有沒有它幫你退回到這個時候 然後去回退之前所有的一些改動 但是我自己還是個人會比較推薦就是說你去使用這樣的一個回退的機制的時候 是可以用 git 的指令來做處理這樣的話你對整個版本控制上面 也會變得比較有效一點 然後你的專案也不會因為就是說今天可能回退太多東西 然後你沒有做任何的記錄 那這就再來就是說我們有這個 resume 的一個指令這個 resume 的指令 就是說當你今天如果不小心把這一個整個對話框給關掉了那 你今天可能會覺得很懊悔就是說我不小心把這個關掉了那怎麼辦它這時候 是也會提醒就是說你可以回到剛剛那個指令那這個部分我們就先回到 這個 Claude Code 裡面然後我們來看一下這個 resume 它說給我們的效果是什麼按下 end 之後你可以看到有沒有它這個地方去告訴你 就是說你可以回到這個 session 裡面它你這個電腦裡面 它的好幾個 session 然後你可以選擇一個 session 回去 然後重新打開那個對話 然後繼續處理你想處理的事情那這個就是我們17秒之前 去關掉這個 session 對吧所以我們就回到了這個地方就可以看到 有沒有這個地方 就把所有的內容給放進來了但是這個地方我還是想要回推到 更早之前的版本 所以這個地方就我們就打上這個 rewind 這個指令 然後回推到最原先這個地方然後把所有的程式碼跟對話都清除掉 所以這兩個指令其實就是可以幫你很好地去 回推到你想要回推的版本還有就是說如果你今天不小心把整個 Claude Code 的一個 session 給關掉之後你可以再馬上再回來 原本的對話內容 那這邊也大概去介紹一下這個 session 跟我們這個 context 的一個基本的認知那這個地方我們等一下會講 更多 context 有關的但是我這邊先簡單講一下這個 session 是什麼意思 首先我們今天在跟這個 agent 聊天的時候基本上你一個聊天的內容 就是一個 session 就像你已經開了一個聊天室的這樣的一個概念 那這個聊天室 它裡面有很多的文字對吧那這個文字的部分 所組成的這個字數的一些限制的話 就是 context 的部分這 context 的部分 就是說你今天如果送了 這所有的文字給大模型的時候它所接受的這個上下文長度有多少它會寫在這個地方 那像我們最近一些比較新的模型都是接受這個大概一個 million 以上的一個 大概這個 million 左右的一個 context 就會在這部分去展現出來 所以這個就是我們基本去認識這個 session 跟 context 的一個 區別是什麼那我們接下來看一下剩下的兩個指令在這個地方 那這個剩下這兩個指令就是這個關於 code review 還有這個 security review 的一個區別是什麼首先我們 我們先來看一下這個 code review 的一個部分 這 code review 的部分 基本上就是你可以在這個 Claude Code 裡面去直接打這個 code review 那它這個 code review 做的事情基本上就是一般你今天在跟其他工程師 在做 code review 基本上是一模一樣的事情 但是這個 code review 它有一個比較重要的點要去考慮到就是說 如果你今天這個 Low 或者說比較 medium 它可能能抓住的問題 會比較少一點 但是如果你今天是開到比較高一點它可能會花更多的時間 跟更多的 token 去幫你看你的這個程式碼有沒有什麼問題 但是今天除了這個 code review 的一個功能之外還有另外一個 這個 security review 這個 security review 跟這個 code review 最大的區別是什麼就是說我今天如果去調用這個命令 是 security review 的話 它是特別針對安全的部分 去做 review 就是說如果我今天我的程式碼裡面可能有一些跟 比如說這個 SQL injection 或者說 XSS 相關的一些問題的話 它是專門去抓安全漏洞的一個指令 那它它們這兩個最主要的區別上面這個是比較通用 就是它是抓 bug 或者說邏輯錯誤或者說有什麼可以清理的檔案都是用這樣的方式 來做處理然後甚至它會幫你去關心就是說它跟你這個專案的慣例 有沒有一些不符合的寫法 那這個部分它是關心的就是說這段程式碼它對還是不對 乾不乾淨 但是如果我今天是 security review 的話它是專門去抓安全漏洞 像是比如說它今天看你的這個程式碼裡面有沒有什麼跟 SQL injection 有關的一些安全問題或者說 XSS 或者說一些授權的缺陷或者說你今天寫的程式碼 它可能會有一個嚴重的一個資安的漏洞 那這部分就是它會去關心你的程式碼說 是不是會被攻擊 那以上就是說我們去使用這兩個指令的時候其實可以很好幫助我們在做 程式的開發裡面去更好去讓我們的程式碼變得更完善一點因為其實有的時候 你今天 可能團隊比較小大家可能各自忙的事情比較多那這時候能夠幫你去 整個 code review 的能力可能就不足然後花的時間會比較少一點但是 AI 就可以幫我們去做到這樣的事情 然後幫助我們所產出的程式碼是變得比較 有更高的品質 那接下來我們要去學習的是這一個跟 context 有關的 一些基本的實戰 那這個基本的實戰就是說我今天去學習這個 context 的一個 基本概念是什麼還有就是說我今天怎麼樣去管理我的 context 會是一個比較好的一個方式包含就是說你今天要用 context 的方式去做管理 還是說你直接用來說第三種方式是你今天用那個 dump to 那個 file 的方式來做處理那這個這三種部分它分別都有各自的好處 可以讓你去管理這個 context 的一個使用然後幫助你在 不管是節省 token 上面還是說去提升這個 agent 的效率 都會有很大的一個提升 那首先我們先來看一下 context 這個部分 context 這個部分 我們一樣也可以在 Claude Code 這個地方去輸入對應的指令 就是 context 這個地方那當我們輸入 context 之後我們會看到 它會幫我們把目前上下文所消耗的一些內容都給展示出來 像是說你今天可以看到我今天使用的模型是什麼然後我今天去使用的 tok en 數 已經達到了整個 token 它所接受的這個上下文的窗口的比例是多少 那裡面包含什麼樣的東西像是今天這個 Claude Code 它本身的一些 系統的一些 promptt 或者說它的一些系統的工具這個基本上就是它每次發請求 給這個模型的時候都會帶上了一些提示詞然後再來就是說包含 你今天安裝的一些 MCP 的一些工具或者說它可以調用的一些內部工具有什麼那或者說 如果你今天有去自訂一些 agent 那這部分也會展示在這個地方 還有像是記憶檔案 skills 跟這個一些其他地方都會展示出來 然後最後它有去跟你講說 你還剩下多少空間可以去做使用那左邊這個部分 就是很直覺的去理解到就是說我目前 所使用到的這個 context 的內容包含了一些東西然後還有剩下多少空間 去做使用 那當我們今天如果發現我們的這個 context 越用越多它已經到了 可能到這個部分或者說已經快滿了 那這時候你要去注意幾個重點左邊第一個就是說 我今天如果讓我的 context 變得越來越滿它對我們這個模型 會有兩個缺點首先第一個就是你每次傳的 token 很多那代表說就是 你消耗的 tok en 很多那這時候就代表你的賬單會變得更貴或者說你今天去使用 這個訂閱的額度也會很快的就被消耗光了這是第一個缺點第二個部分就是 你今天如果去用了比較多的 context 的內容去送給這個模型的話 那這個模型本身它所能認知到的一些重點就會變得比較模糊 就一樣是我們今天人類如果你今天看到一本書它給你很多的內容 那它叫你去讀其中一個重點是什麼你是要去翻很久去把這本書都可能 看過一遍才會知道說重點是什麼那有可能會有其他一些內容去影響到你的判斷 然後也會讓你去模糊整個事情的一個重點讓你沒辦法去專注在這個重點上面 去解決問題那對於模型來講也是一樣你今天如果餵給它的 context 越多 那基本上它所能去理解跟解決問題的那個效率 可能就會跟著一起變差 所以我們今天去管理我們的上下文不只是去要去節省 Token 這麼簡單也是說要讓我們的這個工作的效率就是說讓這個模型 去執行我們這個輸出的結果的時候是變得更精準而且更準確的 這樣的一個處理方式 那我們來看一下有幾種處理的方式說基本上我們會有 三種處理這個 context 的一個方式是我們在工作上會比較常見的 首先第一個就是說你可以用很簡單的一個 compact 指令然後把目前的聊天內容 做成摘要去壓縮這個內容 所以基本上你可以在這個地方 去輸入 compact 這 compact 做的事情 基本上就是它自動幫你 把你目前為止對話的所有內容 然後做一個壓縮還有就是說做一個摘要 它不是把這個內容 給刪掉而是說它今天可能把這些內容它認為比較需要 該壓縮的部分壓縮起來然後做成一個摘要這樣一個好處就是你在 維持同一個任務的時候 譬如說你今天可能是任務做到一半那這個任務做到一半 你不可能關掉整個 session 嘛對不對你可能希望它繼續做下去 但是 context 不夠用 那這時候你用 compact 的方式就是你可以保留 這個任務的一個延續性然後再進行下一個任務的時候有更多的 context 空間 可以去運用那基本上你也可以在這個地方去打一些你想要他去特別 不要丟掉的東西不要特別壓縮的東西像是譬如說你可以在這個地方去寫說你想要去保留 就是你這個任務裡面包含一些錯誤處理的方式或是說一些資料庫的 schema 你都可以讓這個 agent 讓他知道說他在做壓縮跟做摘要的時候 什麼樣的內容 是不需要過度的壓縮可能這邊包含比較多的資訊像是可能有一些比較 你已經定義好的一些模式錯誤處理的方式是你在剛剛 在跟這個 agent 聊天過程所得到的結論那你可能希望他保留下來 可以用這樣的方式來讓這個 agent 把這些內容不要壓縮的太太嚴重 然後第二個方式就是你可以直接把所有的內容清掉那這個也是我一個非常推薦的方式 就是說當你今天在使用這個 agent 的時候 我會比較建議就是說不要盲目的去 讓他一次做完所有事情而是說你自己要先把這個任務給分成 A 跟 B 還有 C 三種任務 那這三種任務它可能是不相干的 所以就是說我今天可能我舉個例子我這個前端的頁面裡面可能有三個頁面的功能 第一個頁面的功能它就是單純就是一個個人介紹的頁面那第二個功能 可能它是一個首頁這個首頁其實跟個人介紹的頁面也沒有任何關係 那這時候 第三個部分可能它就是一個個人後台的一個頁面這樣的一個方式 那我今天在做這個 agent 的處理的時候可能就是這樣規劃 就是說我一個 session 我就讓他去專注處理一個任務就好了 那當這個任務處理完之後我就把整個 session 丟掉那我是下一個 再去執行的時候我的下一個 session 再做執行的時候基本上它說 用的 context 就會比較少首先第一個我的 token 消耗就會變少 第二個就是我今天在因為 token 消耗變少了 那這 context 的內容會變少了我的 agent 可以更有效率的去 更專注的完成我想要他完成的任務所以這個地方 就是 我們今天去使用這個 clear 的時候可以去考慮的一個方式然後在這個地方可以去 理解就是說我今天如果去使用這個 clear 的一個方式的話 是我把這個 session 給關掉但是如果你今天想要做一個備份 就是說我今天可能希望在關掉之前 我給他下一個 id 就可能下一個名字 譬如說這是一個跟 hello page 有關的東西 那我下一次如果我希望把這個內容 給救回來的話 就是我可能今天刪掉了發現前面有些東西我需要把它給救回來 那這地方我可以打 resume 然後有沒有這個地方就有一個 hello page 讓我去選然後我把它選回來就像這個樣子把剛剛的內容給救回來 那你也可以就是直接把它打在後面它會把剛剛的內容給救回來 所以這個時候就是說如果你今天想要去使用這個 clear 的指令來做 不同 session 的一個切換的話它是有一個保底就是可以讓你回退到 上一個 session 如果你發現有些東西你是需要的 那你可以回到這個上一個 session 然後把裡面的東西給拿出來 然後第三種方式就是這個 dump to file 的方式這個方式跟我們上面 用這個 resume 的方式其實有一點像就是說我今天是希望他 清除掉所有的內容 但是有一些部分我覺得我跟 agent 討論起來是非常有價值的 那我希望他把它備份起來就是說放到我的這個程式碼的工作目錄底下 所以這個時候它不是一個指令你可能就直接告訴這個 agent 就是說 我希望你幫我整理 XXX 東西放到哪裡放到你可以自己自定義 任何一個資料夾跟目錄底下 但是我這邊已經有自定義一個這個 Docs 這個資料夾 那這個就是我提供的一個範例就是說我可能會希望他把這個假設我做了一個 AI Refactor 的一個部分那我可能會希望就是說 把他放到這個 Docs 裡面 裡面 然後命名成這個 .md 檔案 那這個就是一個範例就是說我今天可能他討論到我覺得他有一些 跟這個 auth 有關的一些實作是很不錯就是他的目標是什麼 然後我改了哪些檔案然後可能有一些 todo 在這個地方那這個是我認為 在上一個對話是有價值的東西我可以用這樣的方式來做處理這樣的話有一個好處就是說 他既不會去壓縮到你認為重要的東西也會幫你去 你也可以去任意的清掉就是說沒有必要去殘留在這個 Session 裡面的 context 的內容那這個時候你可以就是下一次 啟動一個新的一個 Session 的時候你可以直接跟他講去直接讀 直接讀取 XXX 檔案就是可能我們剛才命名的這個檔案然後去把 上一個所定義的內容給載入到這個 Session 裡面那這個也是我平常在工作裡面 蠻常用到的一個技巧因為我今天可能去使用這 compact 的一個指令的時候 他所帶給我的一個效果可能不是我想要的反而會把一些我認為重要的東西可以壓縮掉 即便我今天可能後面打了這個指令 但是我們要今天要去理解一件事情就是說 當我們今天告訴 agent 去做一件事情的時候他並不一定 100%會照著 你的指令去做他可能就是說你叫他保留一些錯誤處理的模式但是他會保留 多少錯誤處理的模式我不知道可能有五個模式是我想要保留的但是他最後 決定說他只想保留四個留一個是不重要的那我是就可能錯失掉那一個 可能我也想要保留的一個模式在這個部分那如果我今天是希望確實所有東西 我要審核一下然後我想要把這所有的內容給備份起來的話 那我就可以用這個 dump to file 的方式把這個內容給備份到這個專案底下 那這時候 就可以變成說就是我下一次在啟動這個新的 session 的時候 我只要載入這個 .md 檔案我一樣可以獲得上一次 session 所討論的最後我認為 非常好的一個結果然後繼續延續我的工作繼續做下去 那以上就是說我們這個三個這個不同管理 session 的 一個指令 他所去使用的一個方式那這三個指令大概就是到這邊 接下來是我們這個關於記憶跟這個 CLAUDE.md 的 一個教學那這個部分的話也是一樣我們會根據這兩個指令 然後去做教學就是說我們今天去使用這個 init 的指令就是說幫我們的這個專案 去自動創建一個 CLAUDE.md 的一個檔案那他基本上就是一個 跟記憶有關的一個檔案那第二個就是這個 memory 的部分 就是說我今天要怎麼樣去管理我的記憶他就是說我這個記憶跟規則他的一個區別是什麼 就是說我們這個在 Claude Code 裏面有分成一個叫規則的一個東西 那這個我們等一下會做詳細的介紹那首先我們先來看這個 init 指令 他所做的事情是什麼首先我們先回到這個專案底下我們來看一下這個專案的部分 你可以看到就是說這裏面有一些我已經定義好的東西是我等一下會做教學的 但是你可以看到我們這裏有一個 CLAUDE.md 的檔案對吧 那這個 CLAUDE.md 檔案我先把它刪掉那我們回來這個終端機這個地方 這邊我去輸入 init 這一個指令那這 init 的指令 當我執行下去之後 你會發現他會自動幫我們在這個 目錄底下去生成對應的 CLAUDE.md 的一個檔案 我們等他一下那我們這個 CLAUDE.md 的檔案目前已經生成完成了在這個地方 我們可以看到他其實花了一點時間去做處理為什麼呢 因為我們當我們今天 去輸入這個 init 的一個指令的時候 他所做的事情會是什麼他會先去看你這個 專案底下有什麼樣的檔案跟什麼樣的重點他需要記錄下來然後他會把這些內容 記錄到這個 CLAUDE.md 檔案裡面那在 CLAUDE.md 檔案 你可以把他理解成什麼東西你可以把他理解成就是說你今天這個 agent 在去 你在工作目錄底下去做工作的時候他會去 應該說去遵循的一個靈魂這個靈魂就是說他會去記憶就是說 我今天可能在這個專案裡面做一些事情的時候 得用什麼樣的方式去做他可以有點算 算是一個記憶的一種 但是更多的狀況他會是有點偏向是一個行為的方式 就是說他今天在讀檔案的時候 他可以用什麼樣的方式去讀可能會變得比較有效率一點 或是說他今天如果有一些指令他可能不用去從頭去看這個 package.json 裡面的一些內容你光從這個 CLAUDE.md 裡面就可以知道說有哪些指令 可以去做執行所以這個地方你可以把他理解成就是說他是一個它像是一個專案底下 這個 agent 去執行他去工作的時候它所載入的一個靈魂那這個部分 你可以去 理解一件事情就是這 CLAUDE.md 的檔案他是每一次都會被帶入 這個 session 裡面做執行的就是說我今天這個 context 裡面永遠都會有 CLAUDE.md 這一份檔案的內容但這有一個好處 又有一個壞處就是說當你今天這個 CLAUDE.md 裡面內容越多的話他可能會去 跟其他的一些規則有衝突就是說你這個裡面如果寫了一些對應的規則 跟其他地方 像比如說你定一些 rules 在這個檔案底下或是說定一些 skills 他如果有衝突的話他會有有時候可能去處理一些工作上面 他的效率就會變差那第二點就是說他其實每一次 都會載入到這個 session 裡面那載入到這個 session 裡面 你可以把他理解成就是他是一個記憶 但是說他這個記憶並不是每一次 都會去準確執行就是說你今天可能會告訴這個 agent 在這個 CLAUDE.md 裡面去寫就是說你希望他可能去執行比如說每一次 寫完程式碼的時候 都要去再重新 review 一下前陣子的改動 然後去抓出有沒有一些資安的 bug 你可能寫了這一套規則或說記憶在這裡面 但是 這個 agent 不一定每次都會執行為什麼因為這是大模型本身的一個行為 就是說我今天這個大模型他並不是一個很簡單的你去輸入1 或者說輸入2 他就會等於3 這樣的一個結果他是一個充滿隨機性的一個結果 所以當我們今天去 使用這個 CLAUDE.md 的時候 他基本上就是一個你可以把他理解成他是一個約 不是那麼強制的一個約束 但是你的 agent 會去讀一下這裡面的東西盡可能去 按照你所提供的一些內容然後去做做他的工作 那我們今天除了去做這個 CLAUDE.md 的一個部分 我們還可以有另外一個指令 來做這個記憶化的一個處理 就是這個 memory 的一個部分這個 memory 的部分 其實基本上就是你 輸入之後他會彈出這幾個東西那這幾個東西我們來 講解一下 首先第一個是跟這個 project 有關的就是說我今天可能 跟這個項目有關的一些記憶都是存在這個 CLAUDE .md 裡面但是 我今天可能可以額外寫另外一個什麼一個規則就是有時候規則跟記憶 我們要把它區分開來就是說記憶可能是他今天可能在 在這個狀態裡面去做工作的時候他可能是比較遵循就是說 我今天可能你可能會希望他去用 pnpm 而不是 npm 這類的一些指令 或者說我今天可能有一些 auth 的問題的時候 記得要先去看一些 a 組件的檔案 或者說 b 組件的檔案這個是屬於比較偏向模糊的東西是需要比較偏向行為的東西 我們都用記憶來做管理但是 rules 這個規則他是做什麼樣的事情呢就是說 我今天是一個死的東西就是說他很明確就是有一個指令是你不能去做或者說你必須要做 的一個東西我們就很適合把它寫成規則像說你希望這個 agent 在做 所有的工作的時候永遠不要去打印某一個 API key 裡面的內容 或者說你希望他在做狀態管理的時候永遠都用什麼就用 Jotai 去做這個狀態管理 不要用什麼 Redux 或者說其他的一些 library 去做狀態管理的部分 這時候你把它寫在規則裡面他是會去讀的然後是會記著這件事情 但是你說他會不會 100% 照這件事情去做其實不一定 但是你可以理解就是你有訂出這些規則 總比沒有訂還要好那你訂的這個規則他可能90% 或是 95% 的機率 會按照你的規則去做執行但是有時候他可能 Context 變得很混亂 或者說像我們剛才提到的就是你 Context 越來越大他的專注度下降了 他可能就會忘記這個規則裡面的內容或者說他記憶裡面的內容然後提出了一個 你不希望他做的事情所以 memory 還有這個 rules 跟我們剛才提到的那個 Context 的管理是都必須要包含在一起在我們工作上面去 合作在一起去做調整 所以這邊可以看到就是說我們今天去定義這個 rules 的方法其實很簡單 就是說我們今天在這個專案底下我們可以放上這三個規則 這三個資料夾 基本上 agent 跟 skills 是我們在等一下才會去教學到的 那這個 rules 我們可以先來看一下他就是一個 .md 的檔案 但是你可以讓 不管要自己的打也好還是說你可以讓 ai 直接去生成也 ok 就是說你可以在這裡面 去定義一些比較硬的規則就是說你希望 ai 每一次去做決策 或者說去做工作的時候都是要遵循你這個定義好的規則不可以有任何一點 查錯的話你可以把這些東西給寫在這個地方但是他實際怎麼做你也不知道 但是基本上我覺得只要你的 context 不是太混亂大概90%的行為 都是會按照你定好的規則去做處理 所以我今天寫這條規則之後我的這個 agent 他在做處理的時候 譬如說 我今天想要他去做一些狀態管理的處理他就不會調用 Redux 之類的一些 解決方案來做處理那我們再回到這個 memory 的部分 基本上這個 memory 的部分他除了包含這個 項目的一個層級之外還有包含這個用戶的層級 這個用戶的層級的意思就是說你先點擊點擊之後他會在你的 以你用戶的角度比如說 你今天這個電腦上面有很多的專案那就是說 根據你好幾個專案他都套用這樣的一個記憶去做處理 所以這個是 跨專案的一個維度去做處理的這樣的一個記憶方式 那接下來是我們這個第四個記憶的方式這個第四個記憶的方式 基本上就是你先可以讓 然後自動去記憶你的一些工作內容 像是譬如說你們在工作對話的內容 他會自動幫你去做一些記憶這個是第一個部分 那這個是他完全自動的這個我們不用特別 干涉他怎麼樣去做處理那第二個部分就是說你今天可能希望他主動去記憶某一些事情 那這時候你可以讓他寫成一個 自己在自動去記憶的一個內容然後他會放到固定的資料夾裡面 所以我們這個地方來演示一下會要怎麼樣去做這件事情 基本上你就可以在這個 指令這個地方去輸入請幫我請幫我 記住我的開發編號 是使用 React 框架 那我們就等他跑一下看他是怎麼樣處理這件事情 那這時候他已經執行完了所以我們可以來可以來看一下他是怎麼樣去自動記住這件事情 首先我們來回來這個地方我們來輸入這個 memory 的一個指令 然後我們打開第四個這個部分去打開這個 auto memory 的一個資料夾 那打開之後你可以看到有沒有在這個地方他出現了一個 React development preference 的一個 .md 那這裡面就包含了什麼包含了我們今天可能希望他去做的事情就放在這個裡面 所以其實基本上我們這個第四個方式他所做的事情就是你可以讓他主動去記得一些東西 或者說讓他自動去記得你的一些工作的內容 那以上就是我們這個在這個 init 還有這個 memory 指令裡面 去做的一個教學那這個部分的話其實基本上就是說我們在用這兩個 跟記憶有關的一個指令 去代入到了什麼叫做規則還有就是說什麼叫做 memory 然後這個部分 我們要怎麼樣去區分這兩個東西在我們的專案裡面要怎麼樣去做定義 像是譬如說如果今天是一些比較模糊或者說一些比較行為有關的一些內容 我們可以把它歸類成記憶的部分但是如果是一些死的規則是一些可以定義的規則 那就是說我們就會把它寫在 rules 裡面那這個 rules 裡面是 基本上是可以放在這個.claude 的一個資料夾底下我們就放在 我們的專案目錄底下就可以了 然後這邊還包含這個 agents 跟 skills 是我們這個後面會講到的一個部分 那接下來是我們這個跟 skill 有關的一個教學 那這個教學我們最主要會去跟大家講解什麼是我們這個 Claude Code 裡面的 skills 還有就是說他跟我們前面所 之前所教到的一個這個 CLAUDE.md 的一個區別是什麼 然後再來就是說 我們在開始去講解這個 skills 之前要先跟大家講解這個 MCP 的指令 他所做的事情是什麼還有就是說其他另外的一個東西這個 plugin 是什麼樣的一個東西那我們首先先來看一下這個 MCP 的部分 MCP 的部分 就是一樣我們在這個地方去輸入這個 MCP 然後按 Enter 然後這個時候我們會看到什麼 我們會看到我們這個 Claude Code 他有去管理著 哪些 MCP 的 servers 那這個 MCP 的這個 servers 我們會看到就是說他裡面有包含一些 是純 MCP 的部分他就是說是一些內建的一個已經安裝好了這個跟 plugin 有關的一些工具 那這個 MCP 跟這個 plugin 他分別代表什麼樣的東西 跟我們的那個 skill 有什麼樣的關係我們這時候來做一個講解 那這邊我們來看一下這一個部分首先基本上我們可以把他分成三個東西 來討論第一個我們先來討論 MCP 基本上可以把 MCP 理解成就是他是 這個 agent 就是我們這個 Claude Code 他的一個外掛的一個方式 就是說我今天可能對於大模型來講他可以做的事情是有限的就是說他可能就是 你今天輸入一些文字 然後吐出一些文字但是如果我今天幫他搭配一些工具 讓他去做選擇就是譬如說 我今天告訴這個模型就是說你有可以看 Figma 的工具 你有可以調用瀏覽器的工具那這個時候我要讓他去做這些處理的時候 我會告訴他就是 你可以選擇要不要去調用 Figma 或說你選擇要不要去調用瀏覽器來完成這個工作 那如果你要我可以幫你去執行這個工具那這個工具執行的方式就是你在自己的本地 有一個 MCP 的一個 server 那這 MCP 的 server 就作為一個工具的橋樑去幫助大模型去完成他想要完成的任務 所以就以我們剛才那個舉例來講如果今天可能希望去做一些前端的一些切版 切版的一些工作那這切版的工作我可能希望大模型可以看懂什麼 看懂 Figma 的一個設計稿那這個設計稿的部分 可能就是 模型本身是沒辦法自己去讀的他需要依賴外部的工具去幫他做這件事情 但是我們這個工具要怎麼樣做呢就是我們要在本地這個地方 去 搭建一個小型的 server 那這個 server 就可以讓 這個模型有這個能力去透過這樣的一個 server 然後看到一個 Figma 設計稿裡面的一些內容 所以基本上 MCP 我們可以就把它理解成就是我們幫我們的這個模型 去裝備這樣的一個工具讓他有能力可以做到更多的事情 那 skill 是什麼東西 skill 他其實就有點偏向是一個滑鼠巨集的概念 就是說我今天可能大家在玩遊戲或者說在使用一些 鍵盤上面的功能的時候 你可能會希望把所有的功能很多的功能去聚集到 某一個按鍵上面那 skill 可能就會在做這件事情 就是說 skill 在做這件事情的原理就是你今天可能會在這個 檔案裡面這個 skill 裡面去寫好我這是什麼樣的一個 skill 譬如說這是一個切版的 skill 那這切版 skill 包含什麼包含要去調用 這個 MCP 的一個工具還要去調用這個瀏覽器偵錯的功能 為什麼 因為我今天寫完這個前端頁面我需要我的 agent 去幫我看一下 這個瀏覽器的畫面有沒有什麼錯誤跟他預期要寫出來這樣的一個 Figma 上面的設計稿是不是相對保持一致的那這個時候我們可以把所有的一些內容 都包裝成一個 skill 然後變成一個專屬的技能給這個 agent 去做處理 所以基本上 skill 在 MCP 它是相輔相成的東西 然後最後這個 plugin 是什麼意思就是說我今天可能 有好幾個不同的 skill 的技能跟好幾個不同的 MCP 我希望把它包裝在一起然後方便分享給我團隊的成員 去做安裝或說下載跟去做處理就是譬如說我今天把這一整套 這個看 Figma 然後讓模型可以去調用瀏覽器偵錯的這個工作流程 包裝成一個 plugin 之後我可以把它分享給什麼分享給我的同事 它去安裝這個 plugin 一下就把這個 skill 跟 MCP 全部都裝好 那這時候它也可以讓它的 agent 去有這個能力可以去跟我做到一樣的事情 所以基本上這個 plugin 做的事情就是所以你可以看到我們今天在這個 這個管理這個 MCP server 的地方你會看到就是說 它的這個工具是來自於哪一個 plugin 裡面 所以我可以看到 我今天這個 Figma 的工具 就是來自於這個 Figma 的這個 plugin 裡面 然後這個 Playwright 的一個工具就是來自於這個 plugin 裡面 那我們講解完這個部分之後我們來講解這個 skill 要怎麼去做處理 基本上我們這個自定義的一些 skill 我們可以把它放在 .claude 這個資料夾底下就跟我們這個前面提到的這個 rules 是一樣的 我們可以把它放在同一個層級的資料夾裡面然後定義一個 它對應的一個技能這個技能是什麼就是說我今天可能可以用手打也好 你也可以去遵循一些別人寫好的一些比較好的範例去寫那 更多的是你也可以讓 AI 去自動幫你去生成一個技能放到這個目錄底下 像是我這個讓它生成的技能就是我希望它幫我做一個專案的講解的一個技能 為什麼因為我今天可能今天這個專案可能會有新人進來然後我希望它每一次就是說 如果有新人進來的時候可以調用這個技能 然後去跟新人解釋說我們今天這個目錄裡面 有哪一些內容有哪些組件或者說有哪些檔案是需要去先去閱讀的 或者說有哪些跟這個資料庫有關的一些 schema 是希望這個新人可以先去 讀看看這時候我可以把它包裝成一個技能去做處理 那這裡面它可能就會包含一些 工具的調用寫在這個裡面 所以這個就是我們基本上在使用這樣的一個技能 去做處理的時候的一種方式這只是其中一種比較簡單的方式那 另外就是說我今天如果要去讓它執行這個技能的時候你可以直接跟它講 然後它執行什麼就是這個地方打執行這個技能 這樣就可以了 那這個時候我們的這個 agent 他就會去看一下我們這個專案目錄 底下有哪樣的技能有沒有這個地方他去執行這個技能然後最後 去輸出這個結果 那再來就是另外一個問題就是我們這個 skill 本身他跟我們之前 介紹的 那個 CLAUDE.md 就是我們這個專案底下這個 CLAUDE.md 的區別是什麼 因為他們看起來很像就是我都在這個檔案裡面寫我希望他做的事情 那一個是跟記憶有關一個是跟技能有關那他這兩個實際上的一個區別 在什麼地方我把它列出來給大家看一下 首先我們可以看到就是說 對於 CLAUDE.md 來講他的核心用途是你這個專案平常他是什麼樣的一個專案 他必須要去遵守什麼樣的一些記憶或者說規則或者說行為這個我會把它寫在 這個 CLAUDE.md 裡面為什麼因為他是每一次 都會被 session 給載入進去的但是對於 skills 來講基本上只要你沒有 希望他去調用他就不會幾乎是不會去用到這個 context 就是說他可能會讓這個 agent 知道說有什麼樣的 skill 但是他不會直接去 讀取裡面的內容然後去做裡面的事情這是第一個部分 然後再來就是說 只有你去手動去操作或者說你今天可能希望 他去特別做某件事情的時候 他會自動去觸發這個 skill 像是比如說 我今天 可能跟他講說有新人來了他可能就自動去調用這個 skill 然後幫我告訴說 這個新人他想要去理解什麼樣的範圍 那如果你用直接指定的方式就是我用直接用這種指定的方式 他也會直接去調用這個 skill 那對於 CLAUDE.md 來講是 你這個專案只要一執行他就載入進來 所以你也不需要特別告訴他是 你要去調用什麼樣的東西 然後再來就是說他這個東西啊他是比較偏向背景資料的東西 你可以把一些資源的檔案給加入進來就是譬如說你希望這個 CLAUDE.md 去讀一些可能外部一些資訊那這個外部的資訊你可能放在哪裡 放在這個 docs 資料夾底下或說你有其他一些資料夾是放一些外部資訊 但是對 skill 來講他也是可以做這些事情 但是他做更多的事情是什麼就是說 他是放可能一些腳本或說放一些輸出的內容的一個結果 因為他是比較偏向技能嘛那譬如說我有一個技能是我希望他做一些 自動去寫程式碼的功能像 譬如說我今天可能有一個系統我希望他建立一個 skill 是自動幫我的用戶去處理錢包裡面的額度譬如說自動充值 或說自動扣除點數這部分他是屬於一個 agent 的技能 那他可能會額外再寫一個什麼寫一些程式碼放在也是一樣放在某個資料夾底下 那這時候我的如果把這個路徑告訴這個 skill 就是說把它寫進這個檔案裡面 那這個檔案他知道說我有這些腳本可以用他會在這個過程 再去調用這個腳本 所以基本上就是你可以透過這樣的方式去豐富你的 agent 可以做的事情那不管是把 MCP 的工具加進來還是你另外再寫一些腳本 讓他去處理一些更複雜的任務都會用這樣的方式來做處理像 譬如說你想要讓他去爬蟲 那你可以去把爬蟲的腳本寫好然後把這個爬蟲的腳本的路徑 放到這個 skills 裡面然後當你去執行這個 skill 的時候 他就自動去調用那個腳本如果他認為要調用的話他就自動去調用 然後幫你去把這個 你想要爬蟲的那些資料給抓下來這個是他們跟 CLAUDE.md 的一個最主要的區別 那 CLAUDE.md 它就是因為他不是技能嘛他是比較偏背景資料的東西 所以我們就是把一些可能跟行為有關的東西放在這裡面就好了然後再來就是說 他是能不能被控制基本上 skills 是可以被控制的因為如果你今天這個 他判斷這個模型 判斷就是說你希望他去執行的任務是不需要用到這個技能 他就不會去觸發在裡面這些腳本啊或說你寫好一些內容 跟你指定的這些 MCP 的工具但是對於 CLAUDE.md 來講沒辦法 因為他每次就是會被載入進來所以這裡面我們要放的東西就是比較偏向 每次都要調用的東西 然後再來就是他是適合去做團隊共享基本上兩個東西都很適合去做團隊的共享 基本上左邊這個他就是如果今天在同一個專案裡面工作我要遵循的行為是什麼 我要遵循的規則是什麼都寫在這裡面了但是對 skills 來講就是 你等於幫這個 agent 豐富了他的一個工作的技能那一樣這個部分 如果你去分享給其他同事他也是可以做得更好像比如說你們今天可能多寫了一個 性能優化的一個 skill 那你今天可以用這個性能優化的 skill 來做 這個專案的一個性能上面的一個衡量那你也可以同樣把這個 skill 包裝給你的另外一個同事同樣去做用那樣的一個 skill 去衡量另外一個專案 或是說同一個專案都 OK 所以這個就是我們今天在去使用這個 CLAUDE.md 跟這個 skill 的時候他的一個最主要的區別就在這個地方 那這個部分就是 我們這個 MCP 工具的一個介紹 那這個部分就到這個地方 然後再來就是我們這個 關於 subagent 的一個教學的部分 那基本上我們在處理這個 subagent 的時候 我們也可以理解就是說 他是被放在這個 .claude 的一個資料夾底下他跟這個 skill 還有 rules 一樣都是被放在這裡面的那我們可以來看一下這裡面的定義是什麼 基本上你可以在這裡面去定義一個 agents 的一個資料夾 然後一樣你也是用 .md 的方式去把這個內容 給寫出來那基本上你可以 不管是你用自己的方式去寫或者說你去網路上面下載一些 agents 的這個樣板 放到這裡面也 OK 或者說你也可以讓 AI 自動去幫你寫一些你希望他 去寫好一些 agents 那這個 agent 他的一個重點是什麼 就是說我今天在調用這個 agent 的時候他是一個子 agent 這個子 agent 跟我們的主要的這個 agent 就是 Claude Code 這個主 agent 他是兩個不一樣的 context 就是說我們之前有提到就是說這個 context 本身他是如果你越混亂 他可能他的專注度這個 agent 的專注度就會變得比較低一點 但是這個 subagent 去解決另外一個問題就是我今天希望有一些特定的任務 他是可以平行的去執行但是又不要跟我這個 context 共享在一起 這可以避免什麼問題就是我剛才提到的那個專注度的問題 那今天對於這個 subagent 來講他可能更專注於就是做某些特定任務 這樣才是我們繼續使用這個 subagent 更主要的一個 前置條件 那這邊的話你就可以看到我這個範例是去建立這個 code review 的一個 subagent 那這個部分的話基本上 就是說可能會讓 AI 去寫說他希望他完成的這個任務是什麼然後再來就是說 他裡面有一些可能跟我這個我這個 repo 有關的一些 規則都寫在這個裡面 然後還有就是說這個 workflow 也會寫在這裡面 那基本上就是一個讓主 agent 就是我們這個 agent 去 讓這個 subagent 去做處理的時候 他要怎麼去做這個工作 都把它定義在這裡面那我們要怎麼樣去使用這個內容呢很簡單 我們可以把這個路徑給複製下來然後這邊去寫說執行 subagent 然後把他帶進來那我們可以看到這個地方 他開始在讀取我們這個下的這個指令 然後稍微等他一下 那這個時候你就可以看到他去執行了什麼 執行了我們這個 code reviewer 的一個這個 agent 這個 subagent 那你可以看到這什麼地方在下面這個地方 我們可以看到在下面又有一個內容這個內容是什麼 就是它真的去執行這個 code reviewer 的一個內容 基本上你可以在用這個 上下鍵來做選擇 如果你今天看到你的左下角這個 Claude Code 幫你開了 另外一個這個這一行東西在這下面代表說他去幫你 調用了一個 subagent 然後來做一些特定的任務那這個特定的任務裡面 他的一個上下文這個 context 就跟我們這個主要的 context 是沒有混合在一起 那基本上這個就是我們在去使用這個 Claude Code 來去處理 我們這個 subagent 的一個方式 那以上這14個常用的一個 Claude Code 指令就是我們在這次教學裡面 去教給各位去學習的一個跟 Claude Code 有關的一個快速入門的一個部分 那基本上這14個指令也是我自己平常在開發裡面蠻常去用到的一些指令 然後不管是對於剛剛開始接觸這個 Claude Code 工具的一個新手 還是說對於已經在使用這個工具 一段時間的老手都是一個非常值得花時間去學習 跟理解它裡面底層原理的一些指令 那再來就是說我們也介紹了跟這個 context 有關還有這個記憶有關規則有關 跟這個 skills 有關的一些內容那基本上這個就是我們在教學這個 整個快速入門的一個內容的部分 然後就謝謝大家我們就下一個章節見我們下次見再見