关于 claims
claims 技能用于管理 Agent 的授权权限,并协调跨主机任务所有权。它支持按资源范围授予权限,以及通过联邦事件同步、确认和转移工作认领。
主要功能
- 01检查、授予和撤销授权声明
- 02按资源模式限定访问范围
- 03管理任务认领与交接
- 04跨主机同步认领事件
- 05按频道隔离认领消息
适用场景
- 01限制 Agent 对文件和命令的访问
- 02在多 Agent 协作前确定任务所有者
- 03将认领事件同步到联邦节点
- 04为团队分隔认领消息流
MCP 相关
该技能说明了 claims_claim 等运行时工具,并介绍通过 federation_bbs_publish 发布认领事件;未说明具体 MCP 接口。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ruvnet/ ruflo --skill claims安装后在 Claude Code 中输入/claims确认已加载。
详细介绍
声明授权技能
目的
基于声明的授权,用于安全的 Agent 操作和访问控制。
声明类型
| 声明 | 描述 |
|---|---|
read | 文件读取权限 |
write | 文件写入权限 |
execute | 命令执行 |
spawn | Agent 生成 |
memory | 内存访问 |
network | 网络访问 |
admin | 管理操作 |
命令
检查声明
npx claude-flow claims check --agent agent-123 --claim write
授予声明
npx claude-flow claims grant --agent agent-123 --claim write --scope "/src/**"
撤销声明
npx claude-flow claims revoke --agent agent-123 --claim write
列出声明
npx claude-flow claims list --agent agent-123
作用域模式
| 模式 | 描述 |
|---|---|
* | 所有资源 |
/src/** | src 中的所有文件 |
/config/*.toml | config 中的 TOML 文件 |
memory:patterns | patterns 命名空间 |
安全级别
| 级别 | 声明 |
|---|---|
minimal | 仅 read |
standard | read、write、execute |
elevated | + spawn、memory |
admin | 所有声明 |
最佳实践
- 遵循最小权限原则
- 将声明限定到特定资源
- 定期审计声明的使用情况
- 不再需要时撤销声明
跨主机工作声明(联邦,v3.40.0+)
与上述授权声明不同:工作声明用于协调 Agent 之间对任务或资源的所有权,现在还会通过跨主机联邦进行传播,使一个节点上的声明对整个集群可见。
运行时工具(本地账本)
| 工具 | 用途 |
|---|---|
claims_claim | 获得某个问题/资源的所有权(可选 TTL)。 |
claims_release | 放弃你持有的声明。 |
claims_handoff / claims_accept-handoff | 将声明转交给另一个 Agent。 |
claims_steal / claims_mark-stealable | 对停滞的声明进行工作窃取。 |
claims_status / claims_list | 查看当前所有权。 |
联邦(跨主机)
将声明事件发布到联邦房间(federation_bbs_publish),使所有权在各主机之间保持一致。消息类型:ClaimIssued / ClaimReleased / ClaimHandoff / ClaimAck。
规则:每个 resourceId 只能有一个所有者;首个有效的 ClaimIssued 获胜(平局时 → 选择最早的 ts,然后选择最小的 from);ClaimReleased 或 TTL 过期后会释放所有权;ClaimHandoff 只能由当前所有者发起;协调器会发布 ClaimAck,注明权威所有者。
开始共享工作前:先声明、同步,并且仅在你是已确认的所有者时继续。 如果声明必须同时跨主机可见并由运行时强制执行,请同步使用两种方式——发布联邦声明消息,并且调用 claims_claim。有关传输方式,请参阅 cross-host-federation 技能(ruflo-bbs-federation 插件)。
将声明流限定到某个频道(ADR-386)
默认情况下,每个声明事件都会进入共享集群流,任何中继成员都能读取。若要将团队的所有权账本分开,或避免中继中的其他成员读取,请改为将声明消息发布到某个频道:
npx ruflo federation channel --action create --name platform-team --visibility private
npx ruflo federation channel --action grant --channel prv:<hex> --pubkey <teammate 64-hex>
npx ruflo federation channel --action publish --channel prv:<hex> \
--type ClaimIssued --payload '{"resourceId":"repo/foo","ttlSeconds":7200}'
npx ruflo federation channel --action read --channel prv:<hex>
规则保持不变;改变的只有受众。依赖此机制前请注意两点:私有频道会隐藏内容,但不会隐藏元数据(中继仍能看到谁在何时发布了消息);而频道外无人能读取的声明,无法与频道外的声明进行仲裁。如果所有权必须在整个集群范围内生效,请将其保留在公开流中。有关频道机制,请参阅 open-federation 技能。