在 Bob Shell 中建立和使用技能

建立一個可重複使用的技能,向 Bob Shell 教授可重複的 changelog-entry 工作流程,然後明確叫用它並讓 Bob 自動啟用它。

IBM Bob Shell 技能 (skills) 是可重複使用的指令集,儲存在 SKILL.md 檔案中,用於教授 Bob 一個可重複的工作流程。在本教學中,你將建構一個 changelog-entry 技能,將符合 Keep a Changelog 格式的條目新增至 CHANGELOG.md,使用 $changelog-entry 明確執行它,然後觀察 Bob 如何在提示詞與技能描述相符時自動啟用它。

技能可以讓你免於在每個提示詞中重複輸入相同的格式化規則或檢查清單。你只需定義一次工作流程,只要該技能適用,Bob 就會遵循它。

前提條件

建立 changelog-entry 技能

Bob Shell 會從包含 SKILL.md 檔案的資料夾中載入技能。專案技能存放在專案根目錄的 .bob/skills/ 中,因此 Git 會將它們與程式碼庫一起追蹤,你的團隊也可以使用它們。全域技能存放在 ~/.bob/skills/ 中,適用於你所有的專案。

建立技能資料夾

切換到 Galaxium Travels 根目錄並為技能建立資料夾:

cd galaxium-travels
mkdir -p .bob/skills/changelog-entry

撰寫 SKILL.md 檔案

使用以下內容建立 .bob/skills/changelog-entry/SKILL.md。你可以使用任何文字編輯器,或執行如下所示的命令:

cat > .bob/skills/changelog-entry/SKILL.md <<'EOF'
---
name: changelog-entry
description: Adds an entry to CHANGELOG.md using the Keep a Changelog format, creating the file if it does not exist, so change history stays consistent and release-ready.
---

Add an entry to CHANGELOG.md using the Keep a Changelog format (https://keepachangelog.com/).

- If CHANGELOG.md does not exist, create it at the project root with this structure before adding an entry:

  # Changelog

  All notable changes to this project are documented in this file.
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

  ## [Unreleased]

- Add new entries under the `## [Unreleased]` section, under one of these subheadings: `### Added`, `### Changed`, `### Fixed`, `### Removed`. Create the subheading if it is not already present under `## [Unreleased]`.
- Write each entry as a single bullet point in the imperative mood ("Add", not "Added"), starting with a capital letter, with no trailing period.
- Base the entry on the actual diff, not on the wording of the request. Run `git diff` to review what changed before writing the entry.
- Only edit CHANGELOG.md. Do not stage or commit the change.
EOF

Front matter 定義了兩個必填欄位:

  • name:技能名稱。請將其與資料夾名稱保持一致,因為 Bob Shell 使用資料夾名稱來參照該技能,例如 $changelog-entry。
  • description:當你沒有按名稱參照技能時,Bob 會讀取它來決定該技能是否適用於請求。如果你省略它,Bob 將改用指令的第一行,因此請務必撰寫清晰的描述。

關閉 --- 以下的所有內容都是技能啟用時 Bob 遵循的指令集。

啟動 Bob Shell

從 Galaxium Travels 根目錄啟動 Agent 模式 的互動式工作階段:

bob chat --mode agent

Agent 模式為 Bob 提供了啟用技能和編輯檔案所需的工具存取權限。如果 Bob Shell 詢問你是否信任該資料夾,請選擇 信任該資料夾,以便 Bob 可以載入專案的技能。

明確叫用技能

按名稱參照技能,這樣你就可以看到 Bob 遵循的指令。

編輯 README.md

請 Bob 進行一次微小、低風險的編輯,以便你有內容可記錄:

Add a one-line note to the end of the README.md that says "Powered by IBM Bob."

Bob 會以 diff 形式顯示建議的變更。選擇 Approve 以套用編輯。

使用技能記錄變更

輸入 $ 以開啟技能選擇器,然後選擇 changelog-entry。Bob Shell 會將技能參照插入你的提示詞中:

$changelog-entry Add a changelog entry for this change.

Bob 會請求使用技能和編輯檔案的權限。批准每個請求。Bob 會載入 changelog-entry 技能並建立 CHANGELOG.md(因為該專案中原本沒有)。接著,Bob 會新增一個類似以下的條目:

## [Unreleased]

### Added

- Add "Powered by IBM Bob." note to the end of README.md

驗證第一個變更歷史條目

請 Bob 顯示變更歷史:

Show me @CHANGELOG.md

該條目與 Bob 在 使用技能記錄變更 中產生的變更歷史條目相符。

讓 Bob 自動啟用技能

進行第二次變更,並在不提及技能名稱的情況下請 Bob 記錄它。Bob 可以從技能描述中辨識其是否適用並自行啟用。

清除對話歷程記錄

輸入 /clear 斜線命令 以重設對話歷程記錄,這樣 Bob 就不會記得先前的技能參照:

/clear

進行第二次 README.md 編輯

請 Bob 進行第二次編輯:

Add a one-line comment above the main heading in README.md that says "Galaxium Travels".

出現提示時批准編輯。

在不指定技能名稱的情況下記錄變更

請 Bob 記錄變更,但不指定技能名稱:

Add an entry to CHANGELOG.md in Keep a Changelog format.

Bob 識別出請求與 changelog-entry 技能的描述相符,並在不使用 $changelog-entry 參照的情況下啟用它。出現提示時,批准技能和檔案編輯請求。Bob 會以相同格式新增另一個條目。

驗證這兩個變更歷史條目

請 Bob 顯示變更歷史:

Show me @CHANGELOG.md

該變更歷史現在包含 ## [Unreleased] 下的兩個條目,類似於以下內容:

## [Unreleased]

### Added

- Add "Powered by IBM Bob." note to the end of README.md
- Add "Galaxium Travels" comment above the main heading in README.md

管理你的技能

每個技能都是磁碟上的一個資料夾,因此你可使用平時常用的檔案工具來管理技能:

  • 列出技能:在 .bob/skills/ 中尋找專案技能,在 ~/.bob/skills/ 中尋找全域技能。如果兩個位置都包含同名的技能,專案技能具有優先權。
  • 編輯技能:編輯其 SKILL.md 檔案。你也可以向技能資料夾中新增支援檔案,例如範本或檢查清單。
  • 參照技能:在 Bob Shell 中輸入 $ 或 /skills,以在提示詞中插入技能參照。

疑難排解

技能未出現在 $ 選擇器中

確認檔案路徑為 .bob/skills/changelog-entry/SKILL.md,且 front matter 包含 name 和 description,並且該資料夾是受信任的。如需詳細資訊,請參閱 受信任的資料夾。技能資料夾名稱必須為小寫的 kebab-case(例如 changelog-entry)。Bob 會跳過名稱無效的資料夾,且不會顯示錯誤。新增技能後請重新啟動 Bob Shell。

Bob 未自動啟用技能

Bob 會將請求與技能的 description 進行比對。請重新調整提示詞,使用描述中的字詞,或使用 $changelog-entry 直接參照該技能。

後續步驟

在本教學中,你學習了技能如何讓你只需定義一次工作流程,並讓 Bob 一致地套用它。你可以使用 $<skill-name> 明確參照技能,或讓 Bob 根據其描述自動啟用它。

若要向技能新增範本和支援檔案,請參閱 技能。

若要建構具有自己角色、指令和工具存取權限的專用人格(persona),請參閱 自訂模式。

這個主題如何?