AACWorkflow Docs

技能签名和审查

通过版本控制、校验和和审批工作流实施技能治理,确保只有审查通过的代码才会被执行。

技能签名和审查是一项安全功能,对自定义技能施加了审批门限。在任何代理可以使用技能之前,必须由工作空间管理员或审查者进行审查和批准。每项技能都经过加密签名,并配有校验和以检测篡改。

为什么技能需要审查

自定义技能功能强大 — 它们为代理提供了新的功能,并通常可以访问外部系统。不经过审查:

  • 恶意代码 — 不正当的技能可能会盗取数据或造成损害
  • 意外行为 — 开发者可能无意中引入错误或反模式
  • 合规缺口 — 受监管的团队需要审计在生产环境中运行的代码
  • 供应链风险 — 如果技能从注册表导入,您需要验证其内容

技能审查如何工作

  1. 作者创建或编辑技能 — 以 draft 状态开始
  2. 作者提交审查 — 状态变更为 pending_review
  3. 审查者检查 — 查看代码、文件附件和差异(如果是更新)
  4. 审查者决定批准(代理可以使用)或 拒绝(并反馈)
  5. 如果批准 — 技能现已激活;代理可将其加载到任务中
  6. 如果稍后编辑 — 批准被清除,需要重新审查

技能生命周期

draft

新技能或未批准的编辑。代理 不能 使用它。只有作者和工作空间管理员可以完整查看它。

pending_review

技能等待审查者决定。它出现在 技能 → 待审查 队列中。代理仍然不能使用它。

approved

审查者已同意。技能是 活跃的,代理可将其加载到任务中。批准通过校验和在加密上与精确内容绑定。

rejected

审查者拒绝了该技能并附带反馈。作者可以编辑并重新提交,或放弃。代理不能使用它。

revoked

技能的内容在批准后被篡改(校验和不匹配)。技能立即被禁用,代理无法加载它。这是一个需要调查的安全信号。

版本控制和校验和

每次创建或编辑技能时,AACWorkflow:

  1. 计算技能内容和任何附加文件的 校验和(SHA256)
  2. 与批准一起存储校验和,以便批准绑定到 精确内容
  3. 保留 版本历史,以便审查者可以看到差异

当代理在任务时间尝试使用技能时:

  • AACWorkflow 验证存储的校验和是否与当前内容匹配
  • 如果校验和不匹配(内容被编辑或篡改),技能被标记为 revoked
  • 代理无法加载它,并收到安全问题的通知

检测到篡改但已防止。 如果技能的校验和不匹配,代理会自动跳过它。如果发生这种情况,请查看审计日志 — 这可能表示数据库不一致或篡改尝试。

创建和提交技能进行审查

创建技能

  1. 转到 技能 → 创建技能
  2. 填写名称、描述和内容
  3. 根据需要附加文件(Python 脚本、数据文件等)
  4. 点击 创建

技能以 draft 状态开始。只有您和工作空间管理员可以看到它。

提交审查

  1. 打开技能
  2. 再次审查内容
  3. 点击 提交审查
  4. 可选地向审查者添加消息

技能移到 pending_review 并出现在审查者队列中。

审查前编辑

如果您处于 draftrejected 状态,可以自由编辑。点击 编辑,进行更改,然后保存。

如果技能已 批准 并且您需要进行更改:

  1. 点击 编辑
  2. 进行更改并保存
  3. 技能自动移回 pending_review
  4. 创建新版本,审查者可以看到更改的差异

审查技能

查看待审查的技能

  1. 转到 技能 → 待审查
  2. 查看等待批准的技能列表

审查技能

  1. 打开待审查的技能
  2. 阅读描述并检查代码
  3. 如果这是更新(版本 > 1),点击 查看差异 以查看更改内容
  4. 决定:
    • 批准 — 代码安全且符合您的标准;代理可以使用它
    • 拒绝 — 代码有问题;向作者提供反馈

差异视图

审查更新时,差异视图显示:

  • 删除的行(红色)— 作者删除的代码
  • 添加的行(绿色)— 新代码
  • 上下文 — 每个更改前后几行

使用它来识别:

  • 对关键部分的意外更改
  • 新的外部调用或依赖项
  • 范围蔓延或功能偏离

批准技能

  1. pending_review 中打开技能
  2. 点击 批准
  3. 可选地添加审查者备注(这些对作者可见,并出现在审计日志中)
  4. 点击 确认

技能移到 approved 状态,代理可以立即开始使用它。

拒绝技能

  1. pending_review 中打开技能
  2. 点击 拒绝
  3. 添加必需的反馈 — 解释需要改进的内容
  4. 点击 确认

技能移到 rejected 状态。作者看到您的反馈,可以编辑并重新提交。

工具限制

审查时,审查者可以选择设置 allowed_tools — 技能被允许使用的外部工具列表。例如:

  • 技能 github-pr-reviewer 可能仅限于 github_api
  • 技能 aws-cost-checker 可能仅限于 aws_api

如果技能尝试使用此白名单之外的工具:

  • 限制在任务运行时被强制执行
  • 代理收到错误且无法继续
  • 该尝试被记录在审计跟踪中

这使审查者能够限制爆炸半径,即使技能后来被发现有问题。

审计和合规

每个技能操作都被记录:

  • 技能创建、编辑和删除
  • 提交审查
  • 批准、拒绝和撤销
  • 代理何时加载和使用技能
  • 校验和不匹配和篡改尝试

设置 → 审计日志 中访问审计日志,并按"技能"筛选以:

  • 追踪谁批准了哪些代码
  • 查看何时编辑了技能
  • 调查安全事件(撤销的技能、校验和失败)

最佳实践

  • 彻底审查 — 技能代表代理运行;像对待代码审查一样对待它们
  • 预期问题 — 要求作者解释关键部分
  • 使用工具限制 — 将每项技能限制为其所需的最少工具
  • 轮流审查 — 不要让一个人批准所有内容
  • 检查更新 — 编辑技能时仔细审查差异
  • 如果可疑则撤销 — 如果技能行为异常,撤销它并调查

批量操作

企业管理员可以:

  • 撤销技能 — 立即在工作空间范围内禁用它(如果怀疑篡改)
  • 需要重新批准 — 强制所有批准的技能进入 pending_review(例如在政策变更后)
  • 审计所有版本 — 查看完整的版本历史和差异

使用 设置 → 技能 → 治理 执行这些批量操作。

后续步骤