View a markdown version of this page

技能 - Amazon Bedrock AgentCore

技能

客服人員技能是 Markdown 和指令碼的套件,可為客服人員領域提供隨需知識。每項技能都遵循開啟的 AgentSkills.io 標準:具有 YAML 前綴 (名稱、描述) 和 Markdown 指示SKILL.md的檔案,以及選用的 scripts/references/assets/ 目錄。

技能使用漸進式揭露:中繼資料會預先注入系統提示 (~100 個字符),並透過工具呼叫隨需載入完整指示。這可避免使用代理程式可能不需要的指示來溢出內容視窗。

該機制支援四種技能來源:

來源 說明 使用情況

AWS 技能

AWS 客服人員工具組中 AWS 服務的預先建置技能。使用 glob 模式啟用 。

您想要零設定的現成 AWS 專業知識。

Git (HTTPS)

從任何公有或私有 Git 儲存庫複製技能。支援子目錄。

您想要從 GitHub、GitLab 或任何 git 主機參考技能,而不上傳到 S3。

Amazon S3

使用執行角色從客戶擁有的 S3 儲存貯體擷取技能。

您想要完全控制版本控制、加密和存取控管。

路徑 (檔案系統)

參考已在繫帶檔案系統上存在的技能 (製作成容器映像或透過 安裝InvokeAgentRuntimeCommand)。

技能是容器映像的一部分,或在工作階段開始時安裝。

在第一次調用時,每個工作階段會擷取技能一次。在工作階段中,技能會在多個調用中保留在磁碟上。當 VM 過期且新的工作階段啟動時,會重新擷取技能以確保新鮮度。

您可以在繫帶上skills將 設定為預設值 (透過 CreateHarnessUpdateHarness),或在每次叫用時覆寫 。調用時間技能會在建立時間技能之後附加;如果兩者都定義具有相同名稱的技能,調用時間版本就會獲勝。

注意

若要以互動方式將技能新增至繫帶,請執行 agentcore 以開啟 TUI、選取新增 、選擇繫結 、前進至進階設定 ,以及啟用技能 。然後,精靈會提示技能來源。如需每個來源的步驟,請參閱下方 GitAmazon S3 下的互動式索引標籤。

AWS 技能

AWS 技能是預先建置的技能,可讓客服人員與服務互動 AWS 。它們會以階層方式組織,並透過 glob 模式選取。在 GitHub 上檢視其來源。

Category 模式 典型技能

核心技能

core-skills/*

EC2、S3、Lambda、DynamoDB、CloudWatch、IAM 操作。

分析技能

specialized-skills/analytics-skills/*

Athena、Glue、QuickSight、資料湖操作。

操作技能

specialized-skills/operations-skills/*

故障診斷、診斷、日誌分析。

儲存技能

specialized-skills/storage-skills/*

S3、EFS、FSx、備份操作。

啟用所有 AWS 技能

範例
AWS CLI/boto3
aws bedrock-agentcore-control create-harness \ --harness-name "MyHarness" \ --execution-role-arn "${ROLE_ARN}" \ --skills '[{"awsSkills": {}}]'

或在調用時:

response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, skills=[{"awsSkills": {}}], messages=[{"role": "user", "content": [{"text": "List my EC2 instances and their status."}]}], )

依類別啟用技能

使用 glob 模式來啟用特定技能類別:

範例
AWS CLI/boto3
aws bedrock-agentcore-control create-harness \ --harness-name "MyHarness" \ --execution-role-arn "${ROLE_ARN}" \ --skills '[{"awsSkills": {"paths": ["core-skills/*", "specialized-skills/operations-skills/*"]}}]'

啟用單一特定技能

response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, skills=[{"awsSkills": {"paths": ["core-skills/aws-cdk"]}}], messages=[{"role": "user", "content": [{"text": "Create a CDK stack for a Lambda function."}]}], )

合併多個模式

skills=[{"awsSkills": {"paths": ["core-skills/aws-cdk", "core-skills/aws-serverless", "specialized-skills/storage-skills/*"]}}]
注意
  • 路徑必須是相對的 (無前置/..)。絕對路徑和路徑周遊會遭到拒絕。

  • 如果 glob 模式不符合任何技能,則調用會失敗並出現描述性錯誤。

  • 合併相同承載中的多個awsSkills項目。

Git (HTTPS) 技能

從任何公有或私有 Git 儲存庫複製技能。使用稀疏結帳支援 monorepos 中的子目錄。

範例
AWS CLI/boto3

公有儲存庫:

response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, skills=[ {"git": {"url": "https://github.com/anthropics/skills", "path": "skills/docx"}}, ], messages=[{"role": "user", "content": [{"text": "Summarize the attached DOCX file."}]}], )

私有儲存庫 (需要存放在 AgentCore Identity 中的個人存取字符):

skills=[ { "git": { "url": "https://github.com/my-org/internal-skills", "path": "excel", "auth": { "credentialArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:token-vault/default/apikeycredentialprovider/my-github-pat" }, } } ]
AgentCore CLI

使用 從公有 Git 儲存庫連接技能agentcore add skill。使用 從子目錄--git-path提取單一技能:

agentcore add skill --harness my-harness \ --git https://github.com/anthropics/skills \ --git-path skills/docx agentcore deploy

對於私有儲存庫,請--credential與您專案中持有個人存取字符的 API 金鑰登入資料名稱一起傳遞 (--username 是選用的,預設 oauth2):

agentcore add skill --harness my-harness \ --git https://github.com/my-org/internal-skills \ --git-path excel \ --credential my-github-pat agentcore deploy
注意

agentcore remove skill 使用相同的來源旗標移除具有 的技能。若要覆寫單一呼叫的技能而不變更範圍,請使用 agentcore invoke --skills <sources>(逗號分隔路徑、s3://URIs 或 https:// Git URLs);叫用覆寫不支援 Git 身分驗證。

Interactive

在 TUI 中,透過新增 → 束帶精靈將 Git 技能新增至繫帶。

  1. 前進至進階設定 ,移至技能 ,然後按空格來啟用它,然後按 Enter

    啟用技能的進階設定
  2. 選取 Git 做為技能來源。

    技能來源類型:路徑、S3 或 Git
  3. 輸入 HTTPS 儲存庫 URL。精靈接著會提示選用的子目錄路徑、私有儲存庫的選用登入資料,以及選用的使用者名稱。

    輸入 Git 儲存庫 URL

確認精靈,然後執行 agentcore deploy以套用。

  • url (必要) - Git 儲存庫的 HTTPS URL。

  • path (選用) - 儲存庫中的子目錄,其中包含技能。如果省略,則會使用儲存庫根。

  • auth.credentialArn (選用) - API 金鑰登入資料提供者的 ARN,其中包含私有儲存庫的個人存取字符。

  • auth.username (選用) - git 使用者名稱,預設為 oauth2

Git 擷取必須在 60 秒內完成。如果儲存庫需要網際網路輸出,請確定您的 VPC 具有 NAT 閘道 (與遠端 MCP 伺服器和自訂容器提取相同的需求)。

Amazon S3 技能

從客戶擁有的 S3 儲存貯體擷取技能。使用繫帶執行角色登入資料。

範例
AWS CLI/boto3
response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, skills=[ {"s3": {"uri": "s3://my-skills-bucket/skills/company-style/"}}, ], messages=[{"role": "user", "content": [{"text": "Draft a summary following our style guide."}]}], )
AgentCore CLI

使用 從 S3 連接技能agentcore add skill --s3

agentcore add skill --harness my-harness \ --s3 s3://my-skills-bucket/skills/company-style/ agentcore deploy

執行角色在儲存貯體s3:ListBucket上需要 s3:GetObject和 。請參閱 安全性和存取控制

Interactive

在 TUI 中,透過新增 → 束帶精靈將 S3 技能新增至繫帶。前進至進階設定 ,啟用具有空格技能 ,然後選擇 S3 作為來源 (請參閱 Git 互動式索引標籤以取得這些共用步驟)。

  1. 輸入技能目錄的 S3 URI。

    輸入技能的 S3 URI

確認精靈,然後執行 agentcore deploy以套用。

  • uri (必要) - 指向技能目錄的 S3 URI (例如 s3://bucket/prefix/)。

  • 執行角色必須具有 儲存貯體的 s3:GetObjects3:ListBucket許可。請參閱 安全性和存取控制

  • 每個 S3 技能都必須為 1 GB 或更小。

  • S3 來源適用於 S3 VPC 端點 (不需要 NAT 閘道)。

檔案系統路徑技能

參考已在繫帶檔案系統上的技術 - 製作成容器映像或在工作階段開始時透過 進行安裝InvokeAgentRuntimeCommand

範例
AWS CLI/boto3
response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, skills=[{"path": ".agents/skills/xlsx"}], messages=[{"role": "user", "content": [{"text": "Find errors in the Excel files."}]}], )

在容器映像中製作

在自訂映像中包含技能目錄:

COPY skills/xlsx .agents/skills/xlsx

在工作階段開始時安裝

在第一個代理程式叫用InvokeAgentRuntimeCommand之前使用 :

agentcore invoke --exec --harness my-agent --session-id "$SESSION" \ "git clone --depth 1 https://github.com/anthropics/skills /tmp/skills && cp -r /tmp/skills/skills/xlsx .agents/skills/xlsx"

結合多個技能來源

這四種來源類型可以共存於單一承載中:

response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, skills=[ {"awsSkills": {"paths": ["core-skills/aws-cdk"]}}, {"git": {"url": "https://github.com/anthropics/skills", "path": "skills/docx"}}, {"s3": {"uri": "s3://my-bucket/skills/company-style/"}}, {"path": ".agents/skills/xlsx"}, ], messages=[{"role": "user", "content": [{"text": "Help me with this project."}]}], )

錯誤處理

所有擷取失敗都會失敗,並顯示描述性錯誤。永遠不會無提示地略過技能。

失敗 錯誤訊息

S3 存取遭拒

Failed to fetch skill: AccessDeniedException. Ensure execution role has s3:GetObject permission.

找不到 S3 物件

Skill source not found: s3://…​

Git 複製失敗 (網路)

Failed to clone skill: could not resolve host

Git 驗證遭拒

Failed to clone skill: authentication failed

在儲存庫中找不到 Git 路徑

Skill path 'x' not found in repository

Git 逾時 (60 秒)

Failed to clone skill: operation timed out after 60s

技能超過 1 GB 限制

Skill exceeds 1GB size limit

AWS 技能路徑不匹配

AWS skill path 'x' matched no skills

路徑周遊 (..)

Invalid AWS skill path: must be a relative path without '..'

AWS 技能套件遺失

AWS Skills are not available in this runtime (missing directory: /opt/amazon/skills)