技能
特工技能是按需向代理SKILL.md文件,以及可选的scripts/references/、和目录。assets/
技能使用渐进式披露:元数据预先注入系统提示符(约100个令牌),并通过工具调用按需加载完整的指令。这样可以避免在上下文窗口中充斥代理可能不需要的指令。
安全带支持四种技能来源:
| 来源 | 说明 | 何时使用 |
|---|---|---|
|
AWS 技能 |
Pre-built AWS 代理工具包 |
您需要无需设置即可获得现成的 AWS 专业知识。 |
|
Git (HTTPS) |
从任何公共或私有 Git 仓库中克隆技能。支持子目录。 |
你想在不上传到 S3 的情况下引用 GitHub GitLab、或任何 git 主机的技能。 |
|
Amazon S3 |
使用执行角色从客户拥有的 S3 存储桶中获取技能。 |
您需要完全控制版本控制、加密和访问管理。 |
|
路径(文件系统) |
引用已存在于线束文件系统中的技能(嵌入到容器镜像中或通过安装在容器镜像中 |
该技能是您的容器镜像的一部分,或者是在会话开始时安装的。 |
第一次调用时,每次会话会获得一次技能。在一个会话中,技能会在多次调用后保留在磁盘上。当虚拟机过期并且新会话开始时,会重新获取技能以保证新鲜度。
您可以将安全带设置skills为默认值(通过CreateHarness或UpdateHarness),也可以根据每次调用进行覆盖。 Invoke-time 技能附加在创建时间技能之后;如果两者都定义了同名的技能,则调用时版本获胜。
注意
AWS 技能
AWS 技能是预先构建的技能,可让您的代理与 AWS 服务进行交互。它们按层次组织并通过全局模式进行选择。在上查看他们的来源 GitHub
| 类别 | 模式 | 典型技能 |
|---|---|---|
|
核心技能 |
|
EC2、S3、Lambda、DynamoDB、IAM 操作。 CloudWatch |
|
分析技能 |
|
Athena、Glue、 QuickSight、数据湖操作。 |
|
操作技巧 |
|
故障排除、诊断、日志分析。 |
|
存储技能 |
|
S3、EFS、FSx、Backup 操作。 |
全部启用 AWS 技能
例
按类别启用技能
使用全局模式启用特定的技能类别:
例
启用一项特定技能
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 中的子目录。
例
-
url(必填)-Git 存储库的 HTTPS 网址。 -
path(可选)-存储库中包含技能的子目录。如果省略,则使用存储库根目录。 -
auth.credentialArn(可选)-持有私有存储库的个人访问令牌的 API 密钥凭证提供者的 ARN。 -
auth.username(可选)-git 用户名,默认为oauth2。
Git 提取必须在 60 秒内完成。如果存储库需要互联网出口,请确保您的 VPC 具有 NAT 网关(与远程 MCP 服务器和自定义容器拉取的要求相同)。
亚马逊 S3 技能
从客户拥有的 S3 存储桶中获取技能。使用线束执行角色凭证。
例
-
uri(必填)-指向技能目录的 S3 URI(例如s3://bucket/prefix/)。 -
执行角色必须对存储桶拥有
s3:GetObject和s3:ListBucket权限。请参阅安全性和访问控制。 -
每个 S3 技能必须为 1 GB 或更小。
-
S3 源可与 S3 VPC 终端节点配合使用(不需要 NAT 网关)。
文件系统路径技能
引用已存在于线束文件系统中的技能 — 嵌入到容器镜像中或通过InvokeAgentRuntimeCommand在会话开始时安装。
例
烘烤到容器镜像中
在你的自定义镜像中加入技能目录:
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."}]}], )
错误处理
所有读取失败都会导致调用失败,并出现描述性错误。技能永远不会被默默跳过。
| Failure | 错误消息 |
|---|---|
|
S3 访问被拒 |
|
|
未找到 S3 对象 |
|
|
Git 克隆失败(网络) |
|
|
Git 身份验证被拒绝 |
|
|
在存储库中找不到 Git 路径 |
|
|
Git 超时 (60 秒) |
|
|
技能超过 1 GB 上限 |
|
|
AWS 技能路径不匹配 |
|
|
路径遍历 () |
|
|
AWS 技能包丢失 |
|