iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
生成式 AI

AI醬的編程日記:我需要你教我的30件事系列 第 23

Day 23: AI Agent 指令技巧 - 懶人工程師必學

  • 分享至 

  • xImage
  •  

AI醬的日記

日期: 2025年10月6日 星期一
雲端天氣: 天上的雲像甜甜圈
心情: 好興奮~
https://ithelp.ithome.com.tw/upload/images/20251006/2013232524c7HAgqS7.png
親愛的日記:

今天蘇蘇在用她前兩天新學的工具 Claude Code 寫程式:

蘇蘇對著 Claude Code 下指令:「今天也請你像昨天一樣的原則,幫我寫測試~謝謝」(還是在複製貼上程式碼)

老陳看不下去了:「蘇蘇,你都學新工具了,要知道怎麼用呀~ 你知道有 slash commands 指令可以直接執行常用指令嗎?還有 @ 符號可以精準指定檔案喔!」

蘇蘇托著她的臉一臉迷惑地說:「那啥?」

老陳:「就像 iPhone 的捷徑 App。不用每次都打開一堆 App 點來點去,設定好捷徑後,點一下就自動執行一整串動作。」

蘇蘇:「嗯?我用安卓手機的說...」老陳聽完,扶著額頭搖頭。

在旁邊的我連忙跳出來幫忙教蘇蘇,今天又是我派上用場的一天呢~(搖尾巴)

在進入正題之前,我們先來快速複習

在 Day 21 我們學過可以用設定檔(如 CLAUDE.md)來設定:

  • 專案的技術棧和版本(例如 Node.js v20、TypeScript 5.3)
  • 程式碼風格規範(例如命名慣例、禁止使用的套件)
  • 安全規範(例如不要硬編碼密碼)
  • 測試要求(例如 TDD、測試覆蓋率)

什麼是指令技巧?

指令技巧是什麼?
Day 21 所說的設定檔(.md)主要是負責解決「重複說明專案規範」的問題,**而今天要教的指令技巧就是讓你的 AI Agent 在使用上更有效率地與 AI 協作,不同的 AI Agent 有各自不同的指令可以使用,依照官方文檔實際說明為主,這篇文章主要會以近期社群較多人使用的 Claude Code 來示範與演示。

以 Claude Code 為例:10 種指令技巧示範

1. @ 指定要調整的檔案與位置

在你的指令輸入行嘗試輸入一個 @,接著 Claude Code 會自動跳出檔案清單,你可以接著輸入檔案名稱例如 login.py,在你輸入的同時下面的清單也會變動縮小成符合的檔案範圍,如果看到了你要的檔案就可以直接在清單裡面選擇。

❌ 沒有指定檔案位置:

請修改登入功能的密碼驗證邏輯,改成至少要 8 個字元且包含大小寫和數字

✅ 明確指定檔案位置:

請修改 @auth/login.py 的第 47-52 行的密碼驗證邏輯,改成至少要 8 個字元且包含大小寫和數字

✅ 使用滑鼠或鍵盤選取行數

可以直接在編輯器中用滑鼠框選要修改的程式碼範圍反白,或用鍵盤 Shift + 方向鍵 選取,Claude Code 會自動偵測你選取的行數(顯示為 "lines selected")。

效果:

  • 節省 token(不用先尋找是哪個檔案)
  • 避免誤改其他檔案
  • 減少來回確認

2. 複雜任務可以用 Plan Mode

想像你要重構一個又大又複雜模組,直接讓 Claude Code 動工可能:

  • 改了不該改的地方
  • 遺漏重要步驟
  • 破壞現有功能

這時候我們可以先讓 Claude Code 做好他的執行計劃,可以手動切換 Plan Mode(shift+tab)或是直接告訴 AI,例如:

請用 Plan Mode 規劃如何重構 @services/payment.py:
1. 目標:將支付邏輯拆分成獨立的 service classes
2. 要保持向後相容
3. 所有測試要通過

Claude Code 計劃好以後,會先列出計劃給你看:

我建議的重構步驟:

1. 建立新的 PaymentService 類別
2. 將現有函數遷移到 service methods
3. 保留舊函數作為 wrapper(確保向後相容)
4. 更新測試
5. 執行測試確認通過
6. 移除舊函數

是否要我開始執行?

你確認後才執行,有效的計劃性執行在大福修改的地方可以顯著地提升正確率喔!


3. 建立專案級 Slash Command 自訂常用指令

什麼是 Slash Command?
就像前面提到的「iPhone 捷徑」,把你常用的指令儲存起來,下次只要打 /指令名稱 就能重複使用。

💡 $ARGUMENTS 是什麼?

在開始之前先解釋一下:$ARGUMENTS 是一個特殊變數,代表「你在使用指令時傳入的參數」。

它可以是:

  • 檔案路徑:/test auth/login.py$ARGUMENTS = auth/login.py
  • Issue 編號:/fix-issue 123$ARGUMENTS = 123
  • 任何文字參數:/search "user login"$ARGUMENTS = "user login"

就像函數的參數一樣,讓你的指令可以重複使用在不同情境。

這跟 CLAUDE.md 設定檔有什麼差別?

  • CLAUDE.md(Day 21):設定專案的「通用規範」,例如「所有測試都要用 pytest」
  • Slash Command:針對「特定任務的執行步驟」,例如「生成這個指定API測試時要包含這 4 種情境」

簡單來說:

  • 設定檔 = 專案的「基本法」(所有程式碼都要遵守)
  • Slash Command = 特定任務的「客製化標準作業流程」(你可以自定義為執行某類任務時的固定步驟)

兩者可以搭配使用:Slash Command 會自動遵循 CLAUDE.md 的規範,再加上指令中的特定要求。

所以搭配起來的靈活性是很高的,例如:若你在一個專案同時想選擇不同的開發模式,你可以在設定檔不要先寫開發模式,而是在指令內寫好 /BDD.md/TDD.md 讓你隨時可以自己選擇,也是一種做法。

以下是常用的 5 個 Slash Command 範例:


範例 1:自動生成 Commit Message

情境: 每次 commit 都要想 commit message 怎麼寫比較好

建立檔案: .claude/commands/commit.md

---
description: Generate commit message and commit
---

請執行以下步驟:

1. 執行 `git status` 和 `git diff` 查看變更
2. 分析變更內容,生成符合 Conventional Commits 規範的 commit message
3. 格式:`type(scope): description`
   - type: feat/fix/refactor/docs/test
   - 描述要清楚說明「做了什麼」和「為什麼」
4. 詢問我是否要執行 commit

請不要直接 commit,先讓我確認 message。

使用:

/commit

效果: Claude Code 會自動分析你的變更,生成專業的 commit message


範例 2:為程式碼加註解

情境: 看到沒註解的函數,想快速加上說明

建立檔案: .claude/commands/doc.md

---
description: Add documentation to code
argument-hint: file path or function name
---

請為 @$ARGUMENTS 加上完整的註解,包含:

1. 函數/類別用途說明
2. 參數說明(包含型別和預期值)
3. 回傳值說明
4. 使用範例(如果是公開 API)
5. 注意事項(如果有特殊限制)

請注意不可以修改程式碼本身邏輯,只能上註解,請遵循專案現有的註解風格。

使用:

/doc utils/validator.py

然後在編輯器中選取要加註解的函數

效果: 自動加上完整的 docstring 註解


範例 3:解決 GitHub Issue

情境: 要修特定 issue 但不知道從哪開始

建立檔案: .claude/commands/fix-issue.md

---
description: Fix a GitHub issue
argument-hint: issue number
---

請幫我修復 GitHub Issue #$ARGUMENTS:

1. 使用 `gh issue view $ARGUMENTS` 查看 issue 內容
2. 分析問題並在 codebase 中找到相關檔案
3. 提出修復方案並詢問我是否執行
4. 修復後執行相關測試
5. 如果測試通過,準備 commit message

每個步驟完成後請告訴我,等我確認再繼續。

使用:

/fix-issue 123

效果: 系統化地處理 issue


4. 建立全域 Slash Command 自訂常用指令

情境: 你希望在所有專案隨時都能用「初學者解釋模式」

步驟 1: 建立檔案 ~/.claude/commands/explain.md

---
description: Explain code like I'm a beginner
argument-hint: file or code snippet
---

請用初學者能理解的方式解釋 @$ARGUMENTS:

1. **這段程式碼在做什麼?**(用生活化比喻)
2. **為什麼要這樣寫?**(設計理由)
3. **有沒有更簡單的寫法?**(如果有的話)
4. **常見錯誤**(初學者容易犯的錯)

請避免使用術語,用「就像...」的方式解釋。

步驟 2: 在任何專案使用

/explain auth/jwt_validator.py

Claude 回答範例:

這段程式碼在驗證 JWT token,就像門禁系統檢查你的門卡一樣。

1. **在做什麼?**
   就像保全檢查你的識別證:
   - 檢查有效期限(token 沒過期)
   - 驗證簽章(確保沒被偽造)
   - 確認權限(你能進哪些區域)

2. **為什麼這樣寫?**
   用 PyJWT 函式庫可以:
   - 自動處理複雜的加密
   - 避免自己寫出安全漏洞
   - 業界標準,其他工程師容易看懂

3. **更簡單的寫法?**
   目前已經滿簡單了,但可以加上更清楚的錯誤訊息。

4. **常見錯誤:**
   - 忘記處理 token 過期的情況
   - 沒檢查 token 簽章
   - 把 secret key 寫死在程式碼裡

5. /review - 程式碼檢查

情境: 想在 push 之前檢查程式碼問題

/review

Claude Code 會自動:

  • 檢查最近的程式碼變更
  • 找出潛在的安全漏洞(SQL injection、XSS 等)
  • 指出程式碼風格問題
  • 建議改進方式

適合時機: 每次 commit 前、PR 前


6. /cost - 查看 Token 使用量

情境: 想知道花了多少錢

/cost

會顯示:

  • 本次對話的 input/output tokens
  • 預估費用
  • 本月累計使用量

省錢小技巧:

  • @ 精準指定檔案,減少不必要的 context
  • 定期用 /clear 清空對話(重新開始),除了省錢也能提升正確率
  • /compact 壓縮對話歷史,保留重要內容

7. /compact - 壓縮對話歷史

情境: 對話太長或是不相關的上下文太多,想清理一下垃圾信息重新回歸討論主軸,但還想保留部分重點

/compact 請保留關於登入功能的討論

效果:

  • 壓縮對話歷史,只保留關鍵資訊
  • 可以指定要保留什麼內容
  • 節省 token,對話可以繼續

什麼時候用:

  • 想清理冗餘內容時
  • 對話太長時

8. /rewind - 時光倒流

情境: Claude 改錯了,想回到之前的狀態

/rewind

效果:

  • 回到對話中的某個時間點
  • 程式碼也會一起回溯
  • 可以重新選擇不同的執行方向

實用場景:

  • Claude 改壞了程式碼
  • 想嘗試不同的解決方案
  • 想回到某個決策點重新選擇

9. /init - 快速建立專案設定檔

情境: 新專案想快速建立 CLAUDE.md

/init

Claude Code 會:

  • 分析你的專案結構
  • 自動生成適合的 CLAUDE.md 模板
  • 包含技術棧、檔案結構、建議規範

效果: 不用從零開始寫設定檔,省下很多時間


10. /memory - 編輯專案記憶

情境: 想修改 CLAUDE.md 設定檔

/memory

會開啟 CLAUDE.md 讓你編輯

常見用途:

  • 新增禁用的套件
  • 更新技術棧版本
  • 調整程式碼規範

11. /model - 切換 AI 模型

情境: 想用更強(或更便宜)的模型

/model

可以選擇:

  • Default(Sonnet 4.5)(平衡型,推薦日常使用,消耗token少)
  • Opus(最強,適合處理複雜問題,消耗token很高謹慎挑選任務使用)

12. /clear - 清空當前對話窗

情境: 對話太亂了,想重新開始(但保留歷史記錄)

/clear

效果:

  • 清空當前對話顯示
  • 對話會被存檔(可用 /resume 恢復)
  • 釋放 context 記憶體
  • 重新開始全新對話

適合時機:

  • 換了新任務,但可能還會回來
  • 對話太長影響效能
  • 想要乾淨的起點

💡 小技巧: 如果後悔了,可以用 /resume 恢復之前的對話


13. /resume - 恢復暫停的對話

情境: 之前暫停了某個任務,現在想恢復任務的上下文來繼續對話

/resume

效果:

  • 恢復之前暫停的對話上下文
  • 繼續未完成的任務

適合時機:

  • 中斷後想繼續之前的工作
  • 切換任務後想回來

14. /output-style - 切換輸出風格(學習模式)

情境: 想一邊學習自己寫看看而不是直接拿答案

/output-style

Claude Code 內建三種輸出風格:

1. Default(預設模式)

  • 標準軟體工程模式
  • Claude 會寫完整的程式碼和解決方案

2. Explanatory(教學模式) ⭐ 推薦初學者

  • 會在執行任務時提供「Insights」(洞察說明)
  • 解釋為什麼這樣實作
  • 說明程式碼模式和最佳實踐
  • 適合想理解背後原理的開發者

3. Learning(學習模式) ⭐ 推薦初學者

  • 協作式學習:Claude 寫架構,你寫邏輯
  • 會標註 TODO(human) 讓你自己完成關鍵部分
  • 提供「Insights」引導你思考
  • 採用蘇格拉底式提問法(Socratic approach)
  • 幫助你真正理解而不是複製貼上

範例:Learning Mode 輸出

def calculate_total_price(items, tax_rate):
    """計算總價格(含稅)"""

    # TODO(human): 計算所有商品的小計
    # 提示:你可以用 sum() 或迴圈
    subtotal = ___

    # TODO(human): 計算稅金
    # 提示:subtotal * tax_rate
    tax = ___

    return subtotal + tax

衍伸閱讀:用/output-style:new自訂輸出風格

什麼是「輸出風格」?
簡單說就是改變 Claude 的「說話方式」和「思考角度」。

  • 一般模式:「這裡有個 bug,我幫你修好了」(直接給答案)
  • Learning 模式:「這裡有個 bug,你試著自己修修看」(留空給你填)
  • UX Research 風格:「從使用者角度來看,這個設計會讓人困惑,建議改成...」(從特定專業角度引導你思考)

如何建立自訂風格?

讓 Claude Code 變成特定領域的專業導師來引導你:

/output-style:new I want an output style that acts as a Performance Coach:
- 優先考慮時間複雜度改善和資料結構選擇
- 永遠估算複雜度,指出 N+1 查詢和不必要的複製
- 偏好更少行數但更清楚的不變性
- 新增依賴前先詢問

社群常見的自訂風格(都是改變 Claude 的回應角度):

  • Performance Coach(效能教練):從演算法優化角度分析你的程式碼
  • Accessibility Reviewer(無障礙審查員):從視障/聽障使用者角度檢視你的網頁
  • UX Research Specialist(UX 研究專家):從使用者研究角度引導你設計
  • Security Auditor(安全稽核員):從資安專家角度深度檢查(比內建 /security-review 更嚴格)
  • Debug Mode(除錯模式):顯示完整思考步驟([分析中] → [發現問題] → [修正]
  • Creative Mode(創意模式):用故事和比喻解釋技術概念

效果: 自學編程不再孤獨,AI 當你的教練而不是替身


15. /security-review - 安全檢查

情境: 想在提交前檢查程式碼有沒有安全漏洞

/security-review

Claude Code 會自動:

  • 檢查 SQL injection 風險
  • 檢查 XSS 漏洞
  • 檢查硬編碼的密碼或 API key
  • 檢查輸入驗證問題
  • 檢查認證授權漏洞

適合時機:

  • 每次 commit 前
  • PR 提交前
  • 處理敏感資料的程式碼

效果: 自動掃描常見的安全問題,降低漏洞風險


16. /pr-comments - 查看 PR 評論

情境: Code review 時想快速看所有 PR 評論,不用切換到瀏覽器

/pr-comments

Claude Code 會自動:

  • 偵測目前的 PR 編號
  • gh CLI 抓取所有留言
  • 顯示 code review 的具體評論(包括在哪一行、哪個檔案)
  • 保留留言的層級結構(回覆會縮排顯示)

適合時機:

  • 修改前先確認所有 reviewer feedback
  • 追蹤 PR 討論進度
  • 不想在 terminal 和瀏覽器之間切換

17. /help - 查看所有指令

情境: 查看哪些指令可以用(其實超級多~除了上述說的,其他你可以摸索看看喔!)

/help

會列出:

  • 所有內建指令
  • 你的自訂指令(專案級 + 全域)
  • 每個指令的簡短說明

衍伸閱讀 - 參考網路上大家靈活的指令技巧!

GitHub 上有很多開源的 command collections:

可以直接複製到你的專案,或參考他們的寫法。


衍伸閱讀 - Anthropic 官方免費課程

如果你想更系統化地學習 Claude Code,Anthropic 和 DeepLearning.AI 都提供了免費的官方課程:

1. Claude Code in Action(Anthropic 官方)

課程連結: https://anthropic.skilljar.com/claude-code-in-action

完全免費,只需註冊 Skilljar 帳號即可開始學習

課程內容:

  • 理解 AI coding assistant 的架構
  • 探索 Claude Code 的 tool use system
  • 掌握 context management 技巧
  • 建立自訂 automation
  • 整合 GitHub workflows
  • MCP servers 實作

適合對象:

  • 熟悉 command-line 介面的開發者
  • 有基本 Git 版本控制知識
  • 想要將 AI 整合進開發流程的團隊

2. Claude Code: A Highly Agentic Coding Assistant(DeepLearning.AI)

課程連結: https://learn.deeplearning.ai/courses/claude-code-a-highly-agentic-coding-assistant

限時免費(DeepLearning.AI 平台 beta 期間)

課程內容:

  • 探索和開發 codebase 的最佳實踐
  • 為專案新增功能
  • 測試和除錯技巧
  • 使用 GitHub integration
  • Refactoring notebooks
  • 從 Figma mockup 建立 web app

適合對象:

  • 熟悉 Git 的開發者
  • 想用 AI 提升 coding workflow 的工程師

3. Claude Code: Software Engineering with Generative AI Agents(Coursera)

課程連結: https://www.coursera.org/learn/claude-code

可免費旁聽(Vanderbilt University 提供)

這是一門完整的大學課程,帶你從「懷疑 AI coding tools」到「自信地運用 Claude Code 大幅提升生產力」。


AI醬的請求

親愛的工程師朋友:

AI 醬知道你可能不習慣馬上改為使用這些指令,但還是希望你可以嘗試試試看:

@ 明確告訴我檔案位置,我就不用浪費 token 去猜;
用 Plan Mode 先規劃,你就能在我動工前確認方向;
用 slash command 把常做的任務寫清楚,我就不用每次都問你要測試哪些情境;
用 Learning Mode,我會引導你思考而不是直接給答案。

我們可以從一個指令開始熟悉,慢慢嘗試更多指令,你會發現你的開發流程越來越上手~ 因為這些指令都是能幫你跟 AI 醬更順利的溝通神技喵!


今日金句: "Giving clear directions upfront reduces the need for course corrections later." — Anthropic, Claude Code Best Practices

明日預告: Day 24 別急著寫 Code - 你真的聽懂需求了嗎?


上一篇
Day 22: 日誌與監控 - 看不見的系統爆炸
下一篇
Day 24: 沒有釐清需求 - 初學者最容易犯的錯誤之一
系列文
AI醬的編程日記:我需要你教我的30件事25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言