好 歡迎大家來到我們這個Cloud Code的一個快速入門的教學 那基本上這個教學它是一個 不管你是今天已經在使用Cloud Code 還是說你今天是一個準備要把Cloud Code匯入到你日常開發的供文池 這個教學都很適合你們來看過一遍 然後學習這裡面的一個知識 大概像這個樣子 好 那首先我們先來看一下今天要教的內容有哪些部分 那首先第一個是我會先去介紹這個Cloud Code裡面 比較常用的14個指令 那基本上這個整個教學裡面 我們都會去根據這14個指令去做展開 然後這裡面你會去了解很多 跟Codecode有關的一些基礎知識 還有這個底層的一些原理 然後再來就是說第二個部分是 這個規則跟這個記憶的區別是什麼 我們要怎麼樣讓我們的Codecode 去記得一些事情 然後我們要怎麼樣去做分類 然後去做一些自定義的一些規則 然後第三個部分就是說 我們要怎麼樣去理解 什麼是NCP 什麼是Skills 什麼是plugging 還有就是說我們去比較 就是說skills跟這個記憶之間的一個 區別會是什麼 然後第四個部分就是說 我們要怎麼樣去定義一個subagents 這個subagents的意思就是說 我們今天cloud call 它本身是一個agent 那它可以去指派 或者說呼叫底下的更多agent 去做各自專精的事情 大概像這個樣子 那第五個部分就是這個contest的一個基本概念 基本上我們今天在使用cloud call 這樣的一個工具的時候 這個context的一個基本概念是非常重要的 就是說我們今天要去學習 怎麼樣去管理我們這樣的一個上下文 然後讓我們的開發變得更有效率一點 那這裡面也會去教學 怎麼樣去使用這個compact的指令 還有這個clear 跟這個down to file的一個策略 然後也會對他們這些策略做一個比較 跟大家去講解怎麼樣去使用 會是比較好去維護我們這個context的一個部分 大概像這個樣子 好然後在開始我們今天的教學之前 我先快速的攻上下 我另外的其他課程的部分 這兩個課程是我跟 好浩在合作的一個課程 基本上左邊這個 它也是Cloud Code的一個教學 只是說它是比較偏向實戰 跟NCP 還有就是說更多一些 skill工具的一個教學 那基本上它是比較偏向 像進階一點的一個 Cloud Code的一個教學課程 那右邊的話 它是一個前段面試的一個課程 所以基本上它就是一個 如果你有在準備前段面試 可以考慮的一個課程 大概像這個樣子 那這個部分的連結我都會放在警戒欄裡面 大家可以去如果有興趣的話可以去看一下 然後我會附上優惠券的部分在這個警戒欄這邊 好那我們回到這一個 終端機這邊 好那我們回到這個Cloud Code的一個教學的部分 那基本上我們先來到終端機這個地方 你可以去輸入這個Cloud的一個指令 那這個Cloud的指令基本上你按下Enter之後 他會先教你怎麼樣去選擇這個樣式的部分 那這個地方你就選擇一個 自己喜歡的一個樣式就OK了 那基本上只要你選擇樣式之後 你會進到第二個部分 這個部分就是你可以選擇 看你要用訂閱的方式去做登入 還是說去使用官方的API Key 然後來做使用Cloud後的一個額度 這個樣子 然後第三個部分是 如果你有去買這個Amazon 或者說這個Microsoft平臺的一些方案 它會提供額度給你 那你可以用第三種方式來做 使用這個Cloud後的工具 那我自己的話基本上 因為我自己有去搭建一個 這個跟API Key有關的一個平臺 那這一個平臺基本上 它的好處就是可以幫我自己去節省 蠻多的一個Token的使用量 還有就是說它的一個 因為我今天如果用訂閱賬戶 它可能會有五小時或者說七天的限制 那我用這種方式來做處理的話 就不會有收到這樣的一個限制 那我就會用我這個自己的方式來開啟這個Cloud 那如果大家對這個方式有興趣的話 可以去底下的這個警戒欄看一下 我也會把這個相關資訊放在底下 但這邊我們就不對這個地方做過多的介紹 好大概像這樣子 好那這邊我進到Cloud裡面 一樣我先選擇一個我喜歡的主題 然後這邊就繼續 好在這個地方 那這樣我們就進來這個Cloud的一個部分了 那首先第一個我們先來看一下 我們要學習哪些指令 基本上我們今天會交到 這裡面所有的 這個14個常用的一個指令 首先我們先來看一下 左邊這邊這四個 第一個我們先來看 permissions這個部分 基本上如果你今天去使用 這個permissions的一個用途 它的一個用意就是說 我們今天在使用 Cloud Code這個工具的時候 它基本上它是對你整個電腦 它有非常高的一個存取許可權 那你可以選擇就是說 你想要允許這個工具 去做什麼樣的事情 那可以去執行什麼樣的指令 然後做 比如說編輯檔案 或者說寫錄檔案 或者說去執行一些 跟命令列友 換了一些指令的時候 是可以直接執行 還說要通過你的允許 才去做執行 都會在這裡面做設定 那我自己平常 因為我會稍微比較懶惰一點 所以我可能就是 會用下面這種方式 就是我直接寫一個bash 或者說read 跟這個write 就是我基本上是同意 他可以去使用這些工具 然後去幫我的這個 在工作上面如果去修改程式碼 或者說堵程式碼 或者說要去執行一些 便利行的指令的時候 他都會透過這樣的方式 直接去執行 這個就是我給他的一個 許可權的控制 那如果你今天想要特別去指定說 他只能去使用 特定的哪一些指令的話 那你可能要去特別寫說 就是說像這個bash指令 你可能就會寫說括號 它只能用哪一個指令 比如說NPM的指令 那如果今天是read的話 你想要指定說 它只能去讀哪些檔案 那你可能也是用括號的方式 去做讀取這些特定的檔案 大概像這個樣子 但如果是比較偏向 比較方便的方式的話 可以像我一樣 就是說把每一個 它可以使用到的工具 都直接寫在這個地方 然後讓我們這個agent在 使用的時候 它基本上還是問我們說 要不要去 可不可以去執行這個指令跟這個工具 然後比如說讀檔案或者寫檔案 那用這樣的方式可能就會在你的開發上面會比較方便一點 就是說不用每次他去執行對應的工具跟指令的時候都要問你一次 然後你還要手動去點過一次這個樣子 那這個是permissions的部分 然後再來就是說我們來看一下model這個地方 model這個地方其實就顧名之一是讓你選擇模型的 那基本上就是你可以在這個地方去選擇 就是說你想要用什麼樣的模型 像我這邊去使用就是這個OPUS的一個模型 那最近就是說你也可以選擇像這個 這個Sonic 5的一個模型去做的選擇 大概像這個樣子 好然後再來就是說這一個F的指令我們來看一下 前面這兩個指令都比較簡單一點 就是說一個是直接給許可權 然後第二個是你直接去使用對應的模型 這樣就OK了 那第三個指令我們會稍微來講解一下 它的一個裡面的內容會是什麼 首先這個Ever 它的一個意思 顧名思義就是說 它希望 就是說你希望這個模型 去付出怎樣的一個 努力的程度 然後來執行你的任務 那它的一個區別 就是說從左邊 排到最右邊去 基本上左邊這個地方 它是最快的 但是也是最不聰明的 可是相對來說 也是最省成本的 因為你今天如果去 不讓你的這個AI 去思考這麼多東西的話 那他所消耗的token也會變得比較少一點 但是相對於你的來說 就是他的一個工作的一個能力 可能就會變得比較有落差一點 然後再來就是說你如果去使用median跟high的話 它是我們在日常工作上面 可能會比較常去用到的這兩個模式 我們可以分別來看一下它的區別是什麼 在這個地方 首先如果你今天是去使用 我們剛才提到的最左邊這個load的部分 這個load的部分 它是基本上都不去做任何思考 就是說很快速的幫你去完成一些 比較簡單的一些任務 那再來就是說 如果你去使用像median 這個部分的話 它其實就是你一般的一個日常工作 你可以做正常的開發 比如說開發一些比較簡單一些需求 然後這些需求是有比較明確的規則的 那這部分你就可以用這個medium的一個方式去做開發 那這也會相對來說 比下面這幾種方式都還要去更深投很 那第三種方式是我自己個人也比較常去使用的一個方式 就是說你用hide的模式去做處理 那什麼樣的情況我需要去使用到hide呢 這個hide的部分就是說 如果你今天需要去計劃一些 比較複雜的功能 比如說我今天可能 設計好幾個元件 然後同一個頁面上面 要去做不同的一個狀態管理 那這部分我可能就會用 hide的方式來做處理 他就說你今天發現你的 專案上面有一些bug 那這個bug的部分 可能你今天用median來做處理的話 他可能比較 不會抓得那麼準確 可能最後也會抓到bug 但是可能你要跟他溝通好幾輪之後 他最後才去找到這個bug是什麼 但是如果你用high的話 它會多想一點 那多想一點 多去看多一點檔案的話 它會比較快的去 修一些普通的bug 那定位到這個問題之後 它所消耗的一個token跟時間 會變得比較少一點 但整體來說 這個high去消耗的token 還是會比這個median 還要來得多一點 大概像這個樣子 那基本上 它在遇到一些問題的時候 它會去問你說 要怎麼樣去做處理 像比如說我今天 如果是在計劃 一些比較複雜的功能的時候 它可能會問你說 我今天覺得A方案 可以選擇三個選項 那你覺得第一個選項比較好 還是第二個選項比較好 還是第三個選項比較好 同時還會告訴你 就是說他今天推薦你 選擇哪一個選項會比較好 大概像這個樣子 好那下面這個X-Hide的部分 我這邊多打一個T 我把它刪掉 這個X-Hide的部分就是說 如果你今天是 你的工作室去 需要涉及到 比較大量的一個工具的呼叫 或者說需要去做比較深層的一個 搜尋跟探索一些解決方案的話 就是說這個可能你的 你在開發之前 可能對這個解決方案也不是那麼的 熟悉 或者說去理解這個樣子 那這部分你可以用X-high的方式 去做處理 那基本上它所消耗的Token 也會比前面這幾種來的高很多 但是它是很接近Max的一個性能 只是說它跟Max的一個區別就是 會比它還要便宜一點 那這部分就是說 你可以去斟酌 就是你想要去使用這個X-high來做處理 還是你要用high來處理 你這個日常工作就OK了 那基本上如果你遇到一些需要去探索 解決方案的一個功能的話 那這部分你可以去考慮 使用X-high的方式來做處理 可能會比較省時間一點 那再來就是你去使用max的部分 這個max的部分 其實基本上它就是一個 非常非常貴的一個 使用的一個方式 基本上就是說 如果你有一些功能 它是 這個如果有錯的話 是不可以接受的 那比如說一些比較敏感 像經流部分的一些功能 或者說 跟使用者 比如說我今天有個系統 是要除止點數 那它被扣點了 或者說扣掉一些耳朵 莫名其妙被扣掉一些耳朵 這是它沒辦法接受的 這部分的話 你就可以使用 MAX的這樣的一個部分 去做處理 那它會想了比較久一點 然後去幫你review一些計劃 幫你提出一些 比較好的一些解決方案 去處理你這個 想要去實作的功能 大概像這個樣子 然後最後的這個 就是這個Ultra Code 它是一個新的一個模式 那這個模式你可以看到 它這個紫色的一個特效 就代表說它非常的尊爵不凡 它非常的貴 那它貴它的道理是什麼 就是說 它除了有這個X-HIGH 跟MAX的功能之外 它還會自動幫你去拆Workflow 這個Workflow的意思就是說 它可能會幫你去開好幾個 平行的subagent幫你做事情 比如說你今天有一個 非常大型的重構 需要去做處理的話 他可能會幫你把這個任務 明確的拆成好幾個 不同的子任務 然後這個子任務在 同時在開好幾個subagent 幫你去各自完成 他們獨立要完成的任務 然後最後再做幫你做測試 或者說做一些跨任務的一些處理 像比如說你今天除了要寫 前端的程式碼 你可能還需要去規劃 後端的一些API 這個部分的話 你可以用這個模式來做處理 但是它就是有一個缺點 就是說非常的貴 因為它非常的消耗Token 還有就是說 它會自動拆這個workflow 然後開好幾個sub-asian 幫你去做事情 所以這個地方 大家可以去考慮一下 就是說如果你今天有一個 大型重構的一個串案 那同時它裡面有一些涉及 比如說金流 或者說一些比較敏感的一些 使用者資訊的一些重構的時候 這個部分你可以就考慮 用比較高階的模式來做處理 但是缺點就是它會特別的貴 因為我們今天在使用 這個AI開發的時候 其實最重要的事情 就是我們的Token的消耗 那基本上如果你在日常開發裡面 你可以選擇你對應的一些任務 比如說比較簡單的 我們就用Million的方式 來做處理就好了 那如果今天真的比較複雜 我們再花比較多的Token 去用這個Max 或者說Ultra Code的方式來做處理 大概像這個樣子 好那以上這個部分就是我們這個 Efford的一個重點 就是說你當你選擇了這樣的一個Efford之後 你的模型就會根據你所選的Efford 去做對應的努力 然後消耗對應的投肯 大概像這個樣子 好然後接下來我們來看一下下一個指令 就是這個我認為是整個 Cloud Code開發裡面相當重要的一個指令 這個Plan的一個指令 這個Plan的指令它是大概像這個樣子 就是說你今天可以 在這個地方去下一個命令 這個命令就是說 如果我今天如果沒有下這個 plan的一個命令的時候 它的一個區別是什麼 就是說如果你今天想要去讓你的 agent去計劃一個功能 比如說我現在已經開了一個前段專案 然後我希望他去實作一個計算機的功能 可是我希望他在實作之前 告訴我就是說 他這個計算機的功能會長什麼樣子 那不是說就是說 他理解之後就馬上去執行 然後幫我修回檔案 這樣有時候就會遇到一個問題就是 其實我根本不想要 他去修改這麼多的檔案 但他已經幫我修了 那我反而還要花時間 來看他修了哪些檔案 然後還要去一個一個 把他還原 那這時候可能就會變得 比起你今天 如果去使用agent來講的話 你可能花費的心力 跟時間都會變得更多一點 那今天用這個plan mode 的一個好處就是說 你可以先讓你的agent 提計劃給你 那你先去review 去稽核這個計劃 他可不可行 是符合你的需求之後 你再讓你的agent去做執行 所以我們這邊可以去很簡單的去打這個plan的指令 那這個plan指令你後面就可以打出什麼 比如說我要你設計一個計算機的功能 好那這邊我就讓它執行一下 那我們就稍微等它一下 好那它剛才跑了一下子 然後我們現在看到 他所問的第一個問題 就是說 我們想要去設計 什麼樣的一個計算機功能 基本上這個地方 你可以去告訴他 就是說你是要 基本的試著運算 還是境界的計算 或者說你想要剋制一些 自己想要的一些功能 你可以打在第四點 這個地方 你可以打自己的這個 打自己的一些註解 在這個地方 告訴這個A選 說你想要怎麼樣做 那基本上我們這個地方 先選擇第一個 這個功能就OK了 好那再來就是說 第二個他要問你就是說 我希望是目前的頁面 去 還是說要去把整個前端的一個結構 先掃過一遍再去做處理 那基本上這兩個時候你就可以去想一下 如果只是目前頁面的話 那是不是他所看的檔案比較少 對吧那這個地方的話 它所消耗的投稿就會比較少一點 然後第二個部分就是說 如果是整個前端 它去少更多的檔案 讀更多的東西 那這裡面消耗了一個投稿 就會是更多的 大概像這個樣子 好那我們一樣也選擇第一個就好 然後我們把這個選擇的結果給送出去 然後再等它一下子 好然後我們可以來看到 這一個Cloud Code 已經給我這個對應的一個實作計劃了 就是它跑了大概幾分鐘之後 出現了這個計劃 那基本上這個計劃 我們可以去review一下稽核一下 然後來看一下 它是滿足我們的需求 好然後再來就是說 它這裡會提供三個選項 首先第一個是 你可以選擇用自動模式去做處理 那第二個就是說 你希望它 如果想要執行一些 跟邊際有關的一個指定的時候 去一個一個問你 然後你可以用手動的方式 來去做同意跟不同意這件事情 然後第三個就是說 如果你今天覺得這個計劃 有些地方不符合你的需求 你想要做修改的話 那你可以在這個第三個部分 然後告訴他說你想要怎麼樣做 然後讓他去重新把這個計劃給 重新的再寫過一遍 然後有時候如果是一些比較嚴謹的計劃 我自己個人我會在這個地方 可能就告訴他就是說 去review一下 一下 然後確保不要有bug 然後我覺得另外一個比較重要的 就是說你可以跟他說去多想一些 這個邊緣條件就是這個HCase 就是說如果我今天在設計一個功能的時候 肯定是希望我們這個Agent 他去多想一些比較邊緣的一些Case 那這些Case去多想一點的話 基本上可以 也不是說保證完全不會有bug 但是至少這個出bug的一個機率 會變得更低一點 大概像這個樣子 好那這邊的話 基本上我也來介紹一下 就是說這兩個模式 它的一個區別是什麼 首先我們來看一下就是 基本上如果你去讓它執行之後 你會有三種方式來讓它去做決定要不要執行 首先第一個就是說你可以選擇用手動的方式 就是說它如果今天有任何問題 就是先問你可不可以改 或者說可不可以去做一些執行一些指令 這個地方就是我們用手動的方式來做處理 那第二個部分就是說 如果你今天是用這個自動去接受這個editors 這個意思就是在這個地方 假設我今天先選了第一個 那你可以看到 我這裡有一個什麼 Auto Mode On 但是你可以用 這個Shift加Tab的按鍵 去做切換 那這個手動模式 就是我剛才提到這個地方 任何問題都是先去問過你一遍 然後去做直信 那這個好處就是說 你可以一步一步的去做稽核 基本上不會有太大的一個錯誤 因為基本上你就是守門員 然後可以去決定說 什麼樣的任務可以放行 什麼樣的一個任務不能去做 那像這樣子 但這裡面有一個缺點就是 會很麻煩 因為他可能 沒過幾步就去問你一遍 說這個東西可不可以做 還是說這個東西 我該做還是不該做 大概像這樣子 那我們今天來看下一個模式 下一個模式就是 我們提到的這個第二個模式 這個地方它是自動 但是你只開放它 去自動的寫檔案 但是說如果今天 有些bash指令 這個bash指令可能就包含 就是說去啟動 這個NPM的服務 或者說我今天去 需要去執行一些 可能清楚資料夾裡面的內容 的檔案 的一些指令的時候 他會問你說 可不可以去做執行 那這部分也是一樣 就是說你可能 比起上一個層級 你不用去手動的一個一個 去告訴他說 你可以做還是不能做 那第二個部分就是 跟這些Bash有關的一個 命令列的一些指令的話 你可以決定說 要不要讓他去執行 那這是第二個部分 那第三個部分的話 就是說在 你看這個地方 他就問我說 可不可以去執行這個任務了 那基本上這個地方我會告訴他 就是說你可以直接去執行 然後不用再問過第二次 那我就選第二個 然後去執行 好那我們來看第三個部分 第三個部分就是說 我今天讓他去用這個auto mode 這個auto mode的意思就是說 他會去自動去做所有的事情 比如說我今天讓他去讀檔案 讓他去寫檔案 然後去自動的把這些東西給做出來 但是它還是會有一個分類器 在背景去判斷說 這些內容是有問題的 還是說它是有可能會有一些風險的 那這時候如果它判斷是有風險的 它會直接把它擋掉 就告訴說這個agent就是說 你不能用這樣的方式來做處理 但是你可以去選擇其他方式 然後來做處理這個樣子 所以基本上這個auto 它是自動幫你去做 很多這個大概90%以上的一些判斷 跟這個工作上面的一些 比如寫程式碼 或者說執行命令列 跟去讀程式碼的一些這些工作 都是自動幫你做掉的 但是如果有一些 真的涉及比較高許可權的一個 Bash指令的話 它還是會告訴你就是說 問你說可以同意還是不能同意 大概像這個樣子 但是這三個模式比起來的話 其實基本上就是最下面這個模式 是最方便的 但是它所帶給你的一個風險 可能又會高一點 像之前就是說 有發生過一個產案 這個產案就是 有一間公司 然後他們想要去 讓這個Codecode的一個agent 去做開發的時候 是可以 基本上就是說 不要問過他們 就是說他想做什麼 就讓他去做什麼 那他們就輸入了 這樣的一個指令 但是這個指令 他的一個缺點就是 他不會問你任何事情 他覺得想做就做 那那時候他們就 這個agent就覺得 就是說他必須要寫一個指令 是去清除掉 所有系統裡面的一些檔案 那這時候 A軍就做這樣的事情了 然後也就把那臺電腦裡面 很多很重要的資料都刪除掉了 所以基本上 我們今天也不是說 可以讓整個Code後 都可以擁有整臺電腦的許可權 去做所有事情 這樣的話 其實也是非常不好的一件事情 因為他可能 莫名其妙就把你的一些 很重要的一個資料都刪掉了 像是比如說 你一些比較珍貴的照片 或者說如果你今天 有用加密貨幣的錢包 那這些資料如果被刪掉的話 其實基本上也是 一件非常麻煩的事情 大概像這個樣子 所以基本上我會比較推薦 就是說你可以選擇 第二種的方式 像我自己比較常去用的 可能就是第二種跟第三種 那大多時間可能也還是用第三種 因為我有時候你開發到一半 是真的會比較懶惰一點 那用這樣的方式 它有一個背景分類期望去判斷說 這個指令是能做還是不能做 也是一件比較好的事情 大概像這個樣子 好那這個部分 我們就先把它終止掉 然後我們來介紹其他的指令 那再來就是說我們來看一下 這個rewind 這個指令跟這個resume的一個指令 基本上這個rewind的指令就是 你今天執行到一半之後 你發現到目前為止 你所輸入的一些指令啊 或者說最後所造成的結果 或是你想要的 那你可以怎麼樣 你可以做一個回退的動作 就是說回退到前一個 指令的版本 或者說某一個指令的版本 像我今天如果打上這個指令 在這個地方 在這個地方 好你就可以看到 按下Enter之後 它會讓我選擇 我要回到什麼時候 就是我第一次 要用這個Efford的時候 還是說第二個 我去剛開始要用Plan的時候 好那我現在可能反悔了 我不想要做這個計算機的功能 所以我就讓它回到這個時候 然後它會給你好幾個選項 基本上第一個就是說 它會把這個程式碼跟整個對話 也都退回來 大概像這個樣子 然後當我們按下Enter之後 你就會發現 有沒有它幫你退回到這個時候 然後去回退之前所有的一些改動 大概像這個樣子 但是我自己還是個人會比較推薦 就是說你去使用 這樣的一個回退的機制的時候 是可以用Git的指令來做處理 這樣的話你對整個版本控制上面 也會變得比較有效一點 然後你的狀態也不會因為 就是說今天可能回退太多東西 然後你沒有做任何的記錄 大概像這個樣子 好那再來就是說 我們有這個resume的一個指定 這個resume的指定就是說 當你今天如果不小心 把這一個整個對話方塊給關掉了 那你今天可能會覺得很懊悔 就是說 我不小心把這種東西關掉了 那怎麼辦 他之後是也會提醒你 就是說你可以回到剛剛那個指定 那這個部分我們就先回到這個cloud code裡面 然後我們來看一下這個resume 它所給我們的效果是什麼 按下enter之後你可以看到 有沒有它這個地方去告訴你 就是說你可以回到這一個session裡面 它你這個電腦裡面它的好幾個session 然後你可以選擇一個session回去 然後重新開啟那個對話 然後繼續處理影響處理的事情 那這個就是我們17秒之前去關掉的這個session 對吧 所以我們就回到這個地方 就可以看到 有沒有這個地方 就把所有的內容給放進來了 但是這個地方 我還是想要回退到 更早之前的版本 所以這個地方 我們就打上這個rewind 這個指令 然後回退到 最原先這個地方 然後把所有的程式碼 跟對話都清除掉 大概像這個樣子 所以這兩個指令 其實就是可以幫你 很好的去 回退到你想要回退的版本 還有就是說 如果你今天不小心 把整個Code後的一個 Session給關掉之後 你可以馬上再回來 原本的對話內容 大概像這個樣子 那我這邊也大概去介紹一下 這個session跟我們這個 contest的一個基本的認知 那這個地方我們等一下會講 更多contest有關的 但是我這邊先簡單講一下 這個session是什麼意思 首先我們今天在跟這個agent聊天的時候 基本上你一個聊天的內容 就是一個session 就是說你今天開了一個聊天室 的這樣的一個概念 那這個聊天室 它裡面有很多的文字對吧 那這個文字的部分 所組成的這個字數的一些限制的話 就是contest的部分 這contest的部分就是說 你今天如果送了這所有的文字 給大模型的時候 這個大模型它所接受的 這個上下文的長度有多少 它會寫在這個地方 那像我們最近一些比較新的模型 都是接受這個大概一個million以上的一個 大概這個1million左右的一個contest 就是在這個部分去展現出來 大概像這個樣子 所以這個就是我們基本去認識 這個Session跟Contest的一個區別是什麼 好那我們接下來看一下 剩下的兩個指令 在這個地方 那這個 剩下這兩個指令 就是這個關於CodeReview 還有這個Security的Review的一個區別是什麼 首先我們先來看一下 這個CodeReview的一個部分 這個CodeReview的部分 其實基本上就是 你可以在這個CodeHall裡面去直接打 這個CodeReview 那它這個CodeReview做的事情 其實基本上就是 一般你今天在跟其他Ons在做CodeReview 基本上是一模一樣的事情 但是這個Corefuel它有一個 比較重要的點要去考慮到 就是說如果你今天開啟的Efford 是比較 這個Low的 或者說比較Median的 它可能能抓出的問題會比較少一點 但是如果你今天是開到比較高一點 它可能會花更多的時間跟更多的Token 去幫你看你的這個 程式碼有沒有什麼問題 大概像這個樣子 但是今天除了這個Corefuel的一個功能之外 還有另外一個這個Security的一個Refuel 這個security的一個review 跟這個co-review 最大的區別是什麼 就是說我今天如果去呼叫這個命令 是security的一個review的話 它是特別針對安全的部分 去做review 就是說如果我今天 我的程式碼裡面 可能有一些跟 比如說這個SQL Injection 或者說XSS相關的一些問題的話 它是專門去抓 安全漏洞的一個指令 那它們這兩個最主要的區別 就是上面這個是比較同用 就是它是抓bug 或者說邏輯錯誤 或者有什麼可以清理的檔案 都是用這樣的方式來做處理 然後甚至他會幫你去關心 就是說他跟你這個專案的慣例 有沒有一些不符合的寫法 那這個部分他是關心的 就是說這段程式碼 他對還是不對 乾不乾淨 大概像這個樣子 但是如果今天是security的一個review的話 他是專門去抓安全漏洞 像是比如說他今天看你的這個程式碼裡面 有沒有什麼跟SQL injection有關的一些安全問題 或者說XSS 或者說一些授權的缺陷 或者說你今天寫的程式碼 它可能會有一個嚴重的資安的漏洞 那這部分就是 它會去關心你的程式碼說 是不是會被攻擊 大概像這個樣子 好那以上就是說 我們去使用這兩個指令的時候 其實可以很好的幫助我們 在做程式的開發裡面 去更好地去 讓我們的程式碼變得更完善一點 因為其實有時候你今天 可能團隊比較小 大家可能各自忙的事情比較多 那這時候 能夠幫你去稽核程式碼的這個 能力很久不足 然後花的時間會比較少一點 但是AI就可以幫我們去做到這樣的事情 然後幫助我們所產出的程式碼 是變得比較有更高的品質 大概像這個樣子 好那接下來我們要去學習的是 這一個跟contest有關的一些基本的實戰 那這個基本的實戰就是說 我今天去學習這個contest的一個基本概念是什麼 還有就是說我今天怎麼樣去管理我的contest 會是一個比較好的一個方式 包含就是說 你這樣用compact的方式去做管理 還是說你直接用clear的方式來做處理 還是說第三種方式是 你今天用那個dump to 那個file的方式來做處理 那這個這三種部分 它分別都有各自的好處 可以讓你去管理這個context的一個使用 然後幫助你在 不管是節省token上面 還是說去提升這個agent的效率 都會有很大的一個提升 大概像這個樣子 好那首先我們先來看一下context這個部分 context這個部分我們一樣也可以在 callhold這個地方去輸入對應的指令 就是context這個地方 那當我們輸入context之後我們會看到 它會幫我們把目前上下文所消耗的一些內容 都可以展示出來大概像這個樣子 像是說你今天可以看到 我今天使用的模型是什麼 然後我今天去使用的token數 已經達到了整個token 它所接受的這個上下文的視窗的比例是多少 那裡麵包含什麼樣的東西 像是今天這個Cloud 它本身的一些系統的一些prompt 或者說它的一些系統的工具 這個基本上就是 它每次發請求給這個模型的時候 都會帶上了一些提示詞 然後再來就是說 包含你今天安裝的一些 NCP的一些工具啊 或者說它可以 呼叫的一些內部工具有什麼 那或者說如果你今天有去 制定一些agent 那這部分也會展示在這個地方 還有像是記憶檔案 Skills 跟這個一些其他地方都會產生出來 然後最後他有去跟你講說 你還剩下多少空間可以去做使用 那左邊這個部分就是很直覺的去理解到 就是說我目前所使用到的這個context的內容 包含了一些東西 然後還有剩下多少空間去做使用 大概像這個樣子 好那當我們今天如果發現我們的這個context越用越多 它已經到了可能到這個部分了 或者說已經快滿了 那這時候你要去注意幾個重點 首先第一個就是說我今天如果讓我的contest 變得越來越滿 它對我們這個模型 會有兩個缺點 首先第一個就是 你每次傳的token很多 那代表說就是 你消耗的token很多 那這時候就代表 你的賬單會變得更貴 或者說你今天去使用 這個訂閱的額度 也會很快就被消耗黃了 這是第一個缺點 第二個部分就是 你今天如果去用了 比較多的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 就可能下一個名字 比如說這是一個 跟HoloPage有關的東西 那我下一次 如果希望把這個內容給救回來的話 就是我可能今天刪掉了 我發現前面有一些東西 我需要把它給救回來 那這個地方我可以打resume 然後有沒有 這個地方就會有一個hollow page讓我去選 然後把它選回來 就像這個樣子 把剛剛的內容給救回來 大概像這個樣子 那你也可以就是直接把它打在後面 它會把剛剛的內容給 救回來 所以這個時候就是說如果你今天想要去使用 這個clear的指令來做 不同session的一個切換的話 它是有一個保底就是說可以讓你回退到 上一個session如果你發現裡面有些東西 你是需要的 那你可以回到這個上一個session 然後把裡面的東西給 拿出來 大概像這個樣子 好 然後第三種方式 就是這個DontoFile的方式 這個方式跟我們上面用 這個Resume的方式 其實有一點像 就是說 我今天是希望他 清除掉所有的內容 但是有一些部分 我覺得我跟Agent討論起來 是非常有價值的 那我希望他把它備份起來 就是說放到我的這個 程式碼的工作目錄底下 所以這個時候 他不是一個指令 你可能就直接告訴這個Agent 就是說 我希望 幫我整理 XXX東西 放到哪裡 放到你可以自己自定義任何一個資料夾 在這個末路底下 像是我這邊已經有自定義一個 這個Docs的一個資料夾 那這個就是我提供的一個範例 就是說 我可能會希望它把這個 假設我做了一個AI Refactor的一個部分 那我可能會希望就是說 把它放到這個Docs裡面 裡面 然後命名成 這個這個MD檔案 大概像這個樣子 那這個就是一個翻例 就是說我今天可能跟他討論到 我覺得他有一些 跟這個off有關的一些實作 是很不錯 就是他的目標是什麼 然後我改了哪些檔案 然後可能有一些土度在這個地方 那這個是我認為在上一個 對話是有價值的東西 我可以用這樣的方式來做處理 這樣的話有一個好處就是說 它既不會去壓縮到你認為重要的東西 也會幫你去 你也可以去任意的清掉 就是說沒有必要去殘留在這個session裡面的contest的內容 那這個時候你可以就是下一次 啟動一個新的一個session的時候 你可以直接跟它講去直接讀 直接讀取 XXX檔案 就是可能我們剛才命名的這個檔案 然後去把上一個所定義的內容給載入到這個station裡面 那這個也是我平常在工作裡面蠻常用到的一個技巧 因為我今天可能去使用這compact的一個指令的時候 它所帶給我的一個效果可能不是我想要的 它可能會把一些我認為重要的東西可以壓縮掉 即便我今天可能後面打了這個指令 但是我們今天要去理解一件事情就是說 當我們今天告訴agent去做一件事情的時候 他並不一定百分之百會照著你的指令去做 他可能就是說 你叫他保留一些錯誤處理的模式 但是他會保留多少錯誤處理的模式 我不知道 可能有五個模式是我想要保留的 但他最後決定說他只想保留四個 有一個是不重要的 那我事實就可能錯失掉 那一個可能我也想要保留的一個模式 在這個部分 那如果我今天是希望 確實所有東西我要稽核一下 然後我想要把這所有的內容給備份起來的話 那我就可以用這個down to file的方式 把這個內容給備份到這個專案底下 那這時候就可以變成說就是 我下一次在啟動這個新的Session的時候 我只要載入這個MD的檔案 我一樣可以獲得上一次Session所討論的 最後我認為非常好的一個結果 然後繼續延續我的工作繼續做下去 大概像這個樣子 好那以上就是說我們這一個三個 這個不同管理Section的一個指令 它所去使用的一個方式 那這三個指令大概就是到這一邊 接下來是我們這個關於 記憶跟這個Cloud MD的一個教學 那這個部分的話 也是要我們會根據這兩個指令 然後去做教學 就是說我們今天去使用這個 Init的指令 就是說幫我們的這個專案 去自動建立一個Cloud MD的一個檔案 那它基本上就是一個 跟記憶有關的一個檔案 那第二個就是這個 這個Memory的部分 就是說我今天要怎麼去管理我的記憶 還有就是說我這個記憶 跟規則 它的一個區別是什麼 就是說我們這個 在cloud hall裡面 也有分成一個叫 規則的一個東西 那這個我們等一下 會做詳細的介紹 那首先我們現在看 這個init指令 它所做的事情是什麼 首先我們今天 先回到這個專案底下 我們來看一下 這個專案的部分 你可以看到就是說 這裡面有一些 我已經定義好的東西 是我等一下會做教學的 但是你可以看到 我們這裡有一個 cloud md的檔案 對吧 那這個cloud md檔案 我先把它刪掉 好那我們回來 這個中單機這個地方 這邊我去輸入INIT 這一個指令 那這個INIT的指令 當我執行下去之後 你會發現 它會自動幫我們在這個 目錄底下去生成 對應的Cloud MD的一個檔案 大概像這個樣子 我們等它一下 那我們這個Cloud MD的檔案 目前已經生成完成了 在這個地方我們可以看到 它其實花了一點時間去做處理 為什麼呢 因為當我們今天去輸入 這個init的一個指定的時候 他所做的事情會是什麼 他會先去看你這個專案底下 有什麼樣的檔案 跟什麼樣的重點 他需要記錄下來 然後他會把這些內容給 記錄到這個cloud md檔案裡面 那這cloud md檔案 你可以把它理解成什麼東西 你可以把它理解成就是說 你今天這個agent在去 你這個工作目錄底下去 做工作的時候 他會去 應該說是遵循的一個靈魂 這個靈魂就是說 他會去記憶就是說 我今天可能在這個專案裡面 做一些事情的時候 得用什麼樣的方式去做 它可以有點算是一個 記憶的一種 但是更多的狀況 它會是有點 偏向是一個行為的方式 就是說它現在讀檔案的時候 它可以用什麼樣的方式去讀 可能會變得比較有效率一點 或者說它今天如果有一些指令 它可能不用去從頭去看這個 package JSON裡面的一些內容 你它光從這個Cloud MD裡面 就可以知道說有哪些指令 可以去做執行 所以這個地方 你可以把它理解成就是說 它是一個 你現在這個專案底下 這個agent去執行 他去工作的時候 他所宰入的一個靈魂 那這個部分你可以去 理解一件事情就是 這個Cloud MD的檔案 它是每一次都會被帶入 這個section裡面去做執行的 就是說我今天這個context裡面 永遠都會有Cloud MD這一份 檔案的內容 但這有一個好處 又有一個壞處就是說 當你今天這個Cloud MD的 裡面內容越多的話 他可能會去跟其他的一些規則有衝突 就是說你這個裡面 如果寫了一些對應的規則 跟其他地方 像比如說你定一些 如果在這個檔案底下 或者說定一些skills 他如果有衝突的話 他會有時候可能去處理一些工作上面 他的效率就會變差 那第二點就是說 他其實每一次都會載入到這個session裡面 那載入到這個session裡面 你可以把它理解成就是它是一個記憶 但是說他這個記憶並不是每一次都會去準確執行 就是說你今天可能會告訴這個Agent 在這個Cloud MD裡面去寫說 就是說你希望他可能去執行 比如說每一次寫完程式碼的時候 都要去再重新review一下前陣子的改動 然後去抓出有沒有一些資安的bug 你可能寫這一套規則或說記憶在這裡面 但是這個Agent不一定每次都會執行 為什麼 因為這是大模型本身的一個行為 就是說我今天這個大模型 它並不是一個很簡單的 你去輸入1 或者說輸入2 它就會等於3 這樣的一個結果 它是一個充滿隨機性的一個結果 所以當我們今天去 使用這個Cloud MD的時候 它基本上就是一個 你可以把它理解成 它是一個不是那麼強制的一個約束 但是你的Ageron會去讀一下 這裡面的東西 儘可能去按照你所提供的一些內容 然後去做做他的工作 大概像這個樣子 好那我們今天如果除了去 做這個 這個Cloud MD的一個部分 我們還可以有另外一個指令 來做這個記憶化的一個處理 就是這個memory的一個部分 這個memory的部分 其實基本上就是你輸入之後 他會 彈出這幾個東西 那這幾個東西我們來講解一下 首先第一個是 跟這個project有關的 就是說我今天可能 跟這個專案有關的一些 記憶都是存在 這個Cloud MD裡面 但是我今天可能可以 額外寫另外一個什麼 一個規則 就是有時候規則跟記憶 我們要把它區分開來 就是記憶可能是 他今天可能在 在這個專案裡面 去做工作的時候 他可能是比較遵循 就是說 我今天可能 你可能會希望他去用 PNPN而不是NPN 這類的一些指令 或者說我今天可能 有一些off的問題的時候 記得要先去看一些 A元件的檔案 或者說B元件的檔案 這個是屬於 比較偏向模糊的東西 是比較偏向行為的東西 我們都用記憶來做管理 但是如果這個規則 它是做什麼樣的事情呢 就是說 我今天是一個死的東西 就是它很明確 就是有一個指令 是你不能去做 或者說你必須要做 的一個東西 我們就很適合 把它寫成規則 像說你希望 這個agent在做 所有的工作的時候 永遠不要去列印 某一個API key裡面的內容 或者說你希望 它在做狀態管理的時候 永遠都用什麼 都用糾臺去做這個狀態管理 不要用什麼Redux 或者說其他的一些 Library去做狀態管理的部分 這時候你把它寫在規則裡面 它是會去讀的 然後是會記得這件事情 但是你說它會百分之百 照這件事情去做 其實不一定 但是你可以理解就是 你有定出這些規則 從比沒有定還好 那你定的這個規則 他可能90%或者95%的機率 會按照你的規則去做執行 但是有時候他可能 context變得很混亂 或者說像我們剛才提到的 就是你context越來越大 他的專注度下降了 他可能就會忘記 這個規則裡面的內容 或者說他記憶裡面的內容 然後提出了一個 你不希望他做的事情 所以memory還有這個rules 跟我們剛才提到的那個 context的管理 是都必須要包含在一起 在我們工作上面去 合作在一起去做調整 大概像這個樣子 所以這邊可以看到 就是說我們今天去定義 這個Rules的方法 其實很簡單 就是說我們今天在這個專案底下 我們可以放上這三個規則 這三個資料夾 基本上Asian跟Skills 是我們在等一下才會去教學到的 那這個Rules我們可以先來看一下 它就是一個MD的檔案 但是你可以讓 你不管要自己的打也好 還是說你可以讓AI直接去生成也OK 就是說你可以在這裡面去定義一些 比較硬的規則 就是說你希望AI 每一次去做決策 或者說去做工作的時候 都是要遵循 你這個定義好的規則 不可以有任何一點差錯的話 你可以把這些東西 給寫在這個地方 但是他實際怎麼做 你也不知道 但是基本上我覺得 只要你的context不是太混亂 大概90%的行為 都是會按照你 定好的規則去做處理的 大概像這個樣子 所以我今天寫了這條規則之後 我的這個 他在做處理的時候 比如說我今天想要 他去做一些狀態管理的處理 他就不會挑可能reduced 之類的一些解決方案來做處理 那麼再回到這個memory的部分 基本上這個memory的部分 它除了包含這個專案的一個層級之外 還有包含這個使用者的層級 這個使用者的層級的意思就是說 你先點選之後 它會在你的 以你使用者的角度 比如說你今天這個電腦上面 有很多的專案 那可能就是說 根據你好幾個專案 它都套用這樣的一個記憶去做處理 所以這個是跨專案的一個維度 去做處理的這樣的一個記憶方式 好那接下來是我們這個第四個記憶的方式 這個第四個記憶的方式 基本上就是你先可以讓Cloud Code 自動去記憶你的一些工作內容 像是比如說你們在工作對話的內容 他會自動幫你去做一些記憶 這個是第一個部分 那這個是他完全自動的 這個我們不用去特別干涉他怎麼樣去做處理 那第二個部分就是說 你今天可能希望他主動去記憶某些事情 那這時候你可以讓他寫成一個 自己在自動去記的一個內容 然後它會放到固定的資料夾裡面 所以我們這個地方來演示一下 會要怎麼去做這件事情 基本上你就可以在這個 指令這個地方去輸入 請幫我 請幫我 記住 我的開發 編號 是使用 REAT框架 好 那我們就等它跑下 看他是怎麼樣處理這件事情 好那這時候他已經執行完了 所以我們可以來看一下 他是怎麼樣去自動寄出這件事情 首先我們來回來這個地方 我們來輸入這個 Memory的一個指令 然後我們開啟第四個這個部分 去開啟這個Auto Memory的一個資料夾 那開啟之後你可以看到有沒有 在這一個地方 他出現了一個 Realt Development Preference的一個MT 那這裡面就包含了什麼 包含了我們今天可能希望他記住的事情就放在這個裡面 所以其實基本上我們這個第四個方式 他所做的事情就是你可以讓他主動去記得一些東西 或者說讓他自動去記得你的一些工作的內容 好那以上就是我們這一個在這個init還有這個memory指定裡面去做的一個教學 那這個部分的話其實基本上就是說 我們在用這兩個跟記憶有關的一個指定去帶入到了 什麼叫做規則 還有就是說什麼叫做memory 然後這個部分我們要怎麼樣去區分 這兩個東西在我們的專案裡面 要怎麼去做定義 像是比如說如果今天是一些比較 模糊或者說一些比較行為有關的一些內容 我們可以把它歸列成記憶的部分 但是如果是一些死的規則 是一些可以定義的規則 那這時候我們就會把它寫在ROS裡面 那這個ROS裡面是基本上是可以放在 這個點Cloud的一個資料夾底下 我們就放在我們的專案目錄底下就可以了 然後這裡面還包含這個agents跟skills 是我們這個後面會講到的一個部分 大概像這個樣子 好那接下來是我們這個跟skills有關的一個教學 那這個教學裡面我們最主要會去跟大家講解 什麼是我們這個cloud code裡面的skills 還有就是說他跟我們前面所提 呃之前所教到的一個這個cloud MD 它的一個區別是什麼 然後再來就是說我們在開始去講解這個skills之前 要先跟大家講解這個NCP的指令 它所做的事情是什麼 還有就是說 其他另外的一個東西 這個Plugin 是什麼樣的一個東西 好那我們首先 先來看一下這個NCP的部分 NCP的部分就是一樣 我們在這個地方去輸入 這個NCP 然後按Enter 好然後這個時候 我們可以看到什麼 我們可以看到我們這個Cloud Code 它有去管理著 哪些NCP的Service 那這個NCP的Service 我們可以看到 就是說它裡面有包含一些 是純NCP的部分 它就是說是一些內建的 一個已經安裝好了 這個跟Plugin有關的一些工具 那這個NCP跟這個Plugin 它分別又代表什麼樣的東西 跟我們的那個Skill 又有什麼樣的關係 我們這時候來做一個講解 好那這邊我們來看一下 這一個部分 首先基本上我們可以把它分成 三個東西來討論 第一個我們現在討論NCP 基本上你可以把NCP理解成就是 它是這一個Agent 就是我們這個Crowthor 它的一個外掛的一個方式 就是說我今天可能 對於大模型來講 它可以做的事情是有限的 就是它可能就是 你先輸入一些文字 然後吐出一些文字 但是如果我今天 幫它搭配一些工具 讓它去做選擇 就是比如說 我今天告訴這個模型 就是說你有 可以看Figma的工具 你有可以呼叫瀏覽器的工具 那這個時候 我要讓它去做這些處理的時候 我會告訴它就是 你可以選擇要不要去呼叫Figma 或說你選擇不要去呼叫瀏覽器 來完成這個工作 那如果你要 我可以幫你去執行這個工具 那這個工具執行的方式 就是你在自己的本地 有一個NCP的一個server 那這NCP的server 就是作為一個工具的橋樑 去幫助大模型 去完成他想要完成的任務 所以就以我們剛才那個舉例來講 如果今天可能希望去做一些 前端的一些切板 切板的一些工作 那這切板的工作 我可能希望大模型可以看懂什麼 看懂Figma的一個設計稿 那這個設計稿的部分 可能就是模型本身是沒辦法自己去讀的 它需要依賴外部的工具去幫他做這件事情 但是我們這個工具要怎麼樣做呢 就是我們要在本地這個地方去 搭建一個小型的server 那這個server就可以讓 這個模型有這個能力去 透過這樣的一個server 然後看到Figma原件設計稿裡面的一些內容 大概像這個樣子 所以基本上NCP我們可以就把它理解成就是 我們幫我們的這個模型 去裝備這樣的一個工具 讓它有能力可以做到更多的事情 那Skill是什麼東西 Skill它其實就有點偏向是一個 滑鼠聚集的概念 就是說我今天可能 大家如果在玩遊戲 或者說在使用一些 鍵盤上面的功能的時候 你可能會希望把所有的功能 很多的功能去聚集到 某一個按鍵上面 那Skill可能就是在做這件事情 就是說 skill在做這件事情的原理就是 你今天可能會在這個檔案裡面 這個skill裡面去寫好 我這是什麼樣的一個skill 比如說這是一個切板的skill 那這切板skill包含什麼 包含要去呼叫 Figma NCP的一個工具 還要去呼叫 這個瀏覽器偵措的功能 為什麼 因為我今天寫完這個前端頁面 我需要我的agent去幫我看一下 這個瀏覽器的畫面 有沒有什麼錯誤 跟他預期要寫出來 這樣的一個 Figma上面的設計稿 是不是相對保持一致的 那這個時候我們可以把這所有的一些內容 都包裝成一個skill 然後變成一個專屬的技能 給這個agent去做處理 所以其實基本上skill跟NCP 它是相輔相成的東西 然後最後這個plugging是什麼意思 就是說我今天可能 有好幾個不同的skill的技能 跟好幾個不同的NCP 我希望把它包裝在一起 然後方便分享給我團隊的成員 去做安裝 或者說下載 跟去做處理 就是比如說我今天把這一整套 這個看Figma 然後讓模型可以去掉用瀏覽器 承受這個工作流程 包裝成一個plugin之後 我可以把它分享給什麼 分享給我的同事 他去安裝這個plugin 一下就把這個skill跟NCP 全部都裝好了 那這時候 他也可以讓他的agent 去有這個能力 可以去跟我做到一樣的事情 所以基本上這個plugin 做的事情就大概像這個樣子 所以你可以看到 我們今天在這個 這個管理這個NCP server的地方 你會看到就是說 它的這個工具是來自於哪一個 plugin裡面 所以我可以看到 我今天這個Figma的工具 就是來自於這個Figma的這個plugin裡面 然後這個playride的一個工具 就是來自於這個plugin裡面 大概像這個樣子 好那我們講解完這個部分之後 我們來講解這個skill 那我們要去做處理 基本上我們這個自定義的一些skill 我們可以把它放在 點cloud的這個資料夾底下 就跟我們這個 前面提到的這個 RAWS是一樣的 我們可以把它放在同一個層級的資料夾裡面 然後定義一個它對應的一個技能 那這個技能是什麼 就是說我今天可能可以用手打也好 你也可以去遵循一些別人寫好的一些 比較好的範例去寫 那更多的是你也可以讓AI去自動幫你去生成 一個技能放到這個目錄底下 像是我這個讓它生成的技能 就是我希望它幫我做一個 專案的講解的一個技能 為什麼因為我今天可能今天這個專案 可能會有新人進來 然後我希望他每一次 就是說 如果有新人進來的時候 可以呼叫這個skill 然後去跟新人解釋說 我們今天這個目錄裡面 有哪些內容 有哪些元件啊 或者說有哪些檔案 是需要去先去閱讀的 或者說有哪些 跟這個資料庫結構 有關的一些schema 是希望這個新人 可以先去讀看看了 這時候我可以把它 包裝成一個skill 去做處理 那這裡面它可能 就會包含一些工具的呼叫 寫在這個裡面 所以這個就是我們基本上 在使用這樣的一個skill 去做處理的時候的一種方式 這只是其中一種比較簡單的方式 那另外就是說 我今天如果要去讓他執行這個skill的時候 你可以直接跟他講 然後他執行什麼 就是這個地方 打執行這個skill 這樣就可以了 那這個時候我們的這個agent 他就會去看一下 我們這個專案目錄底下 有哪樣的一個skill 有沒有 這個地方他去執行這個skill 然後最後去輸出這個結果 那像這個樣子 好那再來就是另外一個問題 就是我們這個Skill本身 它跟我們之前介紹的那個Cloud MD 就是我們這個專案底下的這個Cloud MD 的區別是什麼 因為它們看起來很像 就是我都在這個檔案裡面寫 我希望它做的事情 那一個是跟記憶有關 一個是跟技能有關 那它這兩個實際上的一個區別 在什麼地方 我把它列出來給大家看一下 首先我們可以看到就是說 對於Cloud MD來講 它的核心用途是 你這個專案平常 它是什麼樣的一個專案 它必須要去遵守 什麼樣的一些記憶 或者說規則 或者說行為 這個我會把它寫在 這個Cloud MD裡面 為什麼 因為它是每一次 都會被section給載入進去的 但是對於Skills來講 鍵上只要你沒有 希望它去呼叫 它就不會 幾乎是不會去用到 這個context 就是說它可能會讓 這個agent知道說 有什麼樣的skill 但是他不會直接去 讀取裡面的內容 然後去做裡面的事情 這是第一個部分 然後再來就是說 只有你去手動去操作 或者說你今天可能希望 他去特別做某件事情的時候 他會自動去觸發這個skill 像是比如說 我今天可能跟他講說 有新人來了 他可能就自動去呼叫這個skill 然後幫我告訴說 這個新人他想要去 理解什麼樣的範圍 大概像這個樣子 那如果你用直接指定的方式 就是我用直接用這種 指定的方式 他也會直接去呼叫這個skill 那對於Cloud MD來講是 你這個專案只要一字型 他就載入進來 所以你也不需要 特別告訴他的是 你要去呼叫什麼樣的東西 大概像這個樣子 然後再來就是說 他這個東西啊 他是比較偏向 背景資料的東西 你可以把一些資源的檔案 給加入進來 就是比如說你希望 這個Cloud MD去讀一些 可能外部一些資訊 那這個外部的資訊 你可能放在哪裡 放在這個Dogs資料家底下 或說你有其他一些資料夾 是放一些外部資訊 但是對Skill來講 它也是可以做這些事情 但是它做更多的事情是什麼 就是說它是放可能一些指令碼 或者說放一些輸出的內容的一個結果 因為它是比較平常技能 那比如說我有一個技能 是我希望它做一些 自動去寫程式碼的功能 像比如說我今天可能有一個系統 我希望它建立一個Skill 自動幫我的使用者去處理 錢包裡面的額度 比如說自動充值 或者說自動扣除點數 這部分它是屬於一個 agent的技能 那它可能會額外再寫一個什麼 寫一些程式碼 放在 也是一樣 放在我資料夾底下 那這時候我的 如果把這個路徑 告訴這個skill 就是我把它寫進這個檔案裡面 那這個檔案它知道說 我有這些指令碼可以用 它會在這個過程 再去呼叫這個指令碼 所以基本上就是 你可以透過這樣的方式 去豐富 你的agent可以做的事情 那不管是把NCP的工序加進來 還是你另外再寫一些指令碼 讓它去處理一些 更復雜的任務 都會用這樣的方式來做處理 像比如說你想要讓它去爬蟲 那你可以去把爬蟲的指令碼寫好 然後把這個爬蟲的指令碼的路徑 放到這個Skills裡面 然後當你去執行這個Skills的時候 它就自動去呼叫那個指令碼 如果它認為要呼叫的話 它就自動去呼叫 然後幫你去把這個 你想要爬蟲的那種給抓下來 這個是它們跟Cloud的一個 最重要的區別 那Cloud它就是 因為它不是技能嘛 它是比較偏背底資料的東西 所以我們就是把一些 可能跟行為有關的東西 放在這裡面就好了 然後再來就是說 它是能不能被控制 基本上skill是可以被控制的 因為如果你今天這個 他判斷這個模型判斷 就是說你希望他去執行的任務 是不需要用到這個技能 他就不會去觸發這裡面 這些指令碼啊 或說你寫好一些內容 跟你指定的這些NCP的工具 但是對於Cloud MD來講 沒辦法 因為他每時就是會被載入進來 對吧 所以這裡面我們要放的東西 就是比較偏向 不是那麼必要 就是說每次都要呼叫的東西 大概像這個樣子 然後再來就是 它是適合去做團隊共享 基本上兩個東西 都很適合去做團隊的共享 基本上左邊這個 它就是 如果今天在同一個專案裡面工作 我要遵循的行為是什麼 我要遵循的規則是什麼 都寫在這裡面 但是對於Skills來講 就是你等於幫這個Agent 豐富了他的一個工作的技能 那一樣這個部分 如果你去分享給其他同事 他也是可以做得更好 像比如說你們今天可能多寫了一個 效能最佳化的一個skill 那你今天可以用這個效能最佳化的skill 來做這個專案的一個 效能上面的一個衡量 那你也可以同樣的把這個skill 包裝給你的另外一個同事 同樣去做用那樣的一個skill 去衡量另外一個專案 或是說同一個專案都OK 所以這個就是我們今天在 去使用這個Cloud MD 跟這個skills的時候 它的一個最主要的區別 就在這個地方 大概像這個樣子 好那這個部分就是我們這個NCP工具的一個介紹 那這個部分就到這個地方 好然後再來就是我們這個關於subagent的一個教學的部分 那基本上我們在處理這個subagent的時候 我們也可以理解就是說 它是被放在這個.cloud的一個資料夾底下 它跟這個skills還有ruals一樣都是被放在這裡面的 然後我們可以來看一下 這裡面的定義是什麼 基本上你可以在這裡面去定義一個 agents的一個資料夾 然後一樣你也是用MD的方式 去把這個內容給寫出來 那基本上你可以 不管是你用自己的方式去寫 或者說你去網路上面下載一些 agents的這個樣板 放到這裡面也OK 或者說你也可以讓AI自動去幫你寫一些 你希望他去寫好的一些agents 那這個agents它的一個重點是什麼 就是說我今天在呼叫這個agents的時候 它是一個子agent 這個子agent跟我們的 主要的這個agent 就是Cloud Code這個主agent 它是兩個不一樣的context 就是說我們之前有提到 就是說這個context本身 它是如果你越混亂 它可能它的專注度 這個agent的專注度 就會變得 就會變得比較低一點 但是這個subagent去解決 另外一個問題就是 我今天希望有一些特定的任務 它是可以平行的去執行 但是又不要跟我這個contest 共享在一起 這可以避免什麼問題 就是我剛才提到的 那個專注度的問題 那今天對於這個subagent來講 他可能更專注於 就是做某些特定的任務 這樣才是我們去使用這個subagent 更主要的一個前置條件 大概像這個樣子 那這邊的話 你就可以看到我這個範例 是去建立這個co-review的一個subagent 那這個部分的話 基本上就是說 可能會讓AI去寫說 他希望他完成的這個任務是什麼 然後再來就是說 他裡面有一些可能跟我這個 我這個report有關的一些規則都寫在這個裡面 然後還有就是說這個workflow也會寫在這裡面 那基本上就是一個讓主agent 就是我們這個agent去 讓這個subagent去做處理的時候 他要怎麼樣去做這個工作 都把它定義在這裡面 那我們要怎麼樣去使用這個內容呢 很簡單 我們可以把這個路徑給複製下來 然後我這邊去寫說執行subagent 然後把它帶進來 好那我們可以看到這個地方 他開始在讀取我們這個下的這個指令 然後稍微等他一下 好那這個時候 你就會看到他去執行了什麼 執行了我們這個CodeReviewer的一個 這個Agent 這個SubAgent 那你可以看到在什麼地方 在下面這個地方我們可以看到 在man底下又有一個內容 這個內容是什麼 就是他去真的去執行 這個CodeReview的一個內容 基本上你可以再用這個上下來做選擇 如果你今天看到你的左下角 這個Code幫你開了另外一個 這個 這一行東西在這下面 代表說它去幫你呼叫了一個 Sub Agent然後來做一些特定的任務 那這個特定的任務裡面 它的一個上下文 這個Contest 所以跟我們這個主要的Contest 是沒有混合在一起的 大概像這個樣子 好那基本上這個就是我們在去 使用這個Code 來去處理我們這個Sub Agent的 一個方式 大概像這個樣子 好那以上這14個常用的一個 Codecode指令就是我們在這一次教學裡面去 教給各位去學習的一個 跟Codecode有關的一個快速入門的一個部分 那基本上這14個指令也是我自己平常在開發裡面 蠻常去用到的一些指令 然後不管是我認為對於 剛開始接觸這個Codecode工具的一個新手 還是說對於已經在使用這工具一段時間的老手 都是一個非常值得花時間去學習 跟理解它裡面底層原理的一些指令 大概像這個樣子 然後再來就是說 我們也介紹了跟這個context有關 還有這個記憶有關 規則有關 跟這個skills有關的一些內容 那基本上這個就是我們在教學 這個整個快速入門的一個內容的部分 大概像這個樣子 好然後就謝謝大家 我們就下一個章節見