mcpField
C
claims

claims

github.com/ruvnet安全80.0k1.1k 次安装今天更新
代码仓库

关于 claims

claims 技能用于管理 Agent 的授权权限,并协调跨主机任务所有权。它支持按资源范围授予权限,以及通过联邦事件同步、确认和转移工作认领。

主要功能

  1. 01检查、授予和撤销授权声明
  2. 02按资源模式限定访问范围
  3. 03管理任务认领与交接
  4. 04跨主机同步认领事件
  5. 05按频道隔离认领消息

适用场景

  1. 01限制 Agent 对文件和命令的访问
  2. 02在多 Agent 协作前确定任务所有者
  3. 03将认领事件同步到联邦节点
  4. 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命令执行
spawnAgent 生成
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/*.tomlconfig 中的 TOML 文件
memory:patternspatterns 命名空间

安全级别

级别声明
minimal仅 read
standardread、write、execute
elevated+ spawn、memory
admin所有声明

最佳实践

  1. 遵循最小权限原则
  2. 将声明限定到特定资源
  3. 定期审计声明的使用情况
  4. 不再需要时撤销声明

跨主机工作声明(联邦,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 技能。

评论

支持 Markdown