文件 v0.28.1

Skill 系統

Skill 是可載入的 markdown 指令包,能將 agent 切換至特定執行模式(例如 commit message 生成、code review、README 生成)。

Skill 格式

Skill 是一個帶有 YAML frontmatter 作為 metadata 的 markdown 檔案:

***
name: code-reviewer
description: Deep code review covering quality, security, and architecture
version: 1.0.0
***

You are now a strict code reviewer...

Frontmatter 的 name 是觸發關鍵字。內文會在 skill 啟用時 render 進 system prompt。

觸發路徑

/skill-name slash command

在任何輸入前加上 /<skill-name>

/code-reviewer review the diff in this PR

MatchSkillCall 命中時,agenvoy 會直接合成一組 run_skill tool_call 與對應的 tool_result(內含 skill 內文)進 ToolHistories — 與自然語言啟用路徑逐位元相同,保留 prefix cache。

若使用者帶入 args(/code-reviewer review src/parser.go),user message 會剝除 /<skill-name> prefix,只留下 args。若無 args,user message 保留字面的 /<skill-name>,讓 LLM 仍能看到啟用 context。

自然語言啟用

若 agent 在執行中判定某任務需要 skill,它會直接呼叫 run_skill。這是 LLM 發起的路徑,並使用相同的 render pipeline。

Skill 啟用被設計為工具呼叫(lazy load),而非啟動時的預先挑選 — 這避免了為不需要 skill 的任務付出 skill 內文的 token。

單一對話中的多 skill

一個對話可依序啟用多個 skill。每次 run_skill 呼叫都會 append 至現有的指令堆疊;後續 skill 透過 system-prompt 區塊排序來增補或覆寫先前的 skill。

User message 是 binding context

skill_execution.md Mandatory Principle #5:觸發 skill 的 user message 是 binding context,而非雜訊。LLM 將其視為使用者提供的參數/提示,並編織進輸出。

具體而言:

範例:/readme-generate private MIT — SKILL.md 定義 README 結構;user message 指定 private mode + MIT license,兩者皆覆寫預設值。

Skill 位置

Skill 位於 extensions/skills/<name>/ 下:

extensions/skills/code-reviewer/
├── SKILL.md            # The skill definition (frontmatter + body)
└── ...                 # Optional supporting scripts / templates

Agenvoy 於啟動時掃描此目錄。System prompt 的 ## Skills 區塊由 skillTool.ListBlock 填入,讓 LLM 得知有哪些 skill 可用。

Skill 執行 prompt

執行迴圈由 configs/prompts/skill_execution.md 驅動,它承載每個 skill 都須遵守的規則(輸出紀律、工具名稱對映、mandatory principle)。

工具名稱對映範例:為 Anthropic SDK 撰寫的外部 skill 可能引用 AskUserQuestion;agenvoy 透過 skill_execution.md 中的 Tool Name Mapping 表自動將其對映至 ask_user。無需在 Go 端註冊 alias。

EN