Skip to content

feat: 办公设施 Agent Device Phase 1 通用抽象与 bpilot 预设 #271

@Xy718

Description

@Xy718

背景

我们希望在办公室 Hex 里放置“办公设施”,英文和协议层称为 Agent Device。它不是把某个 Skill / MCP 伪装成设备,而是在 DeskClaw 的办公室拓扑、权限、租约和审计体系里形成一个一等设备对象。

当前本地代码基础已经具备几个接入点:

  • nodeskclaw-backend/app/models/node_card.py 已有统一 NodeCard,包含 node_typenode_idworkspace_id、Hex 坐标和 metadata
  • nodeskclaw-backend/app/services/corridor_router.py 已经从 NodeCard / HexConnection 构建拓扑,并通过 NodeTypeRegistry 做路由判断。
  • nodeskclaw-backend/app/services/runtime/registries/node_type_registry.py 目前注册了 agenthumancorridorblackboard,还没有 device
  • nodeskclaw-backend/app/services/runtime/gene_install_adapter.py 已有 Gene / Skill 安装、tool allowlist、脚本部署和 cache invalidation 抽象,可用于分发设备使用说明,但不能替代设备发现和治理。

本期目标

实现 Phase 1 的通用办公设施抽象,并用第一批内置 bpilot / Browser Pilot 预设验证闭环。

本期应做到:

  1. CE / EE 共用,并且默认具备办公设施能力,不放在总 feature gate 或 EE-only 后面。
  2. 中文产品展示名使用“办公设施”,英文 / 协议层使用 Agent Device
  3. 新增 device Hex 节点能力,设备可以像员工、人类、黑板、过道一样被放进办公室拓扑。
  4. Agent 只能发现和申请自己拓扑可达且有权限的设备。
  5. 外部副作用操作前必须获得 DeviceLease,设备身份、状态、可见性、租约和审计由 DeskClaw 控制面管理。
  6. 第一批内置预设只做 bpilot / Browser Pilot,但通用模型不能出现浏览器专属字段。
  7. Device Skill 通过 Gene 分发,只承载操作说明、能力 schema、tool allowlist 和 provider 使用约束;设备身份、状态、权限、可达性和租约不能由 Gene / Skill 自己声明。

建议范围

后端模型 / 服务

  • 设备预设 registry:内置 browser.bpilot.session 预设,后续可以扩展其他设备类型。
  • 设备实例:记录 workspace、preset、Hex 放置、配置摘要、状态、owner / supervisor 等治理字段。
  • 设备权限 / 授权:支持 Human -> Agent 和 Agent -> Agent 的授权;Agent-to-Agent 授权必须受上游授权约束,不能扩大 scope。
  • 设备租约:支持 acquire / renew / release / reclaim,排他设备同一时间只能有一个有效 operator。
  • 设备可见性:返回 Agent 为什么可见 / 不可见 / 不可用,例如拓扑不可达、权限不足、租约占用。
  • 审计事件:记录发现、授权、租约、调用、释放、回收、失败等关键动作。
  • 拓扑查询:新增面向设备访问的 reachable devices 查询,不复用消息 endpoint 语义。
  • Gene 同步:设备预设、设备放置、拓扑连接、权限变化时刷新相关 Agent 的设备 Gene。

前端 / UX

  • 用户可以启用内置 bpilot 办公设施预设。
  • 用户可以把办公设施实例放到空 Hex。
  • 设备详情展示身份、状态、当前租约、权限摘要和可见性原因。
  • Agent 视角只展示拓扑可达且有权可见的设备。

Remote 口子

本期不实现远程过道的创建、配置、UI 表达或跨空间桥接。

但本期实现不能把未来 remote 口子堵死:

  • remote 的未来产品形态是 Remote Corridor(远程过道),属于 Corridor / Topology 体系。
  • 不新增 remote_connector 节点类型。
  • 不做 Agent-to-Device 或 Agent-to-Human 的私有 remote 专线。
  • 设备访问服务只消费统一拓扑可达结果,不把逻辑写死为相邻 Hex 或本地过道。
  • DeviceVisibility / 审计可以预留可达来源或拓扑路径引用字段;Phase 1 可以为空或只返回 local。
  • Gene 同步以拓扑变化事件为入口,未来远程过道复用同一入口。

非目标

  • 不做公开设备市场。
  • 不做自助第三方设备上架。
  • 不把设备能力塞进某个 Agent 私有 Skill / MCP 后伪装成受治理设备。
  • 不在本期实现 terminal 或 communication channel 设备。
  • 不在本期实现远程过道。
  • 不让显式权限绕过拓扑可达性。

验收标准

  1. 用户能启用一个内置 bpilot 办公设施预设。
  2. 用户能把设备实例放到空 Hex,并在拓扑图中看到 device 节点。
  3. Agent 只能看到拓扑可达且有权限的设备;无拓扑连接时,即使有显式权限也不能看到或申请设备。
  4. Agent 能申请设备租约;同一排他设备被占用时,第二个 Agent 会被拒绝。
  5. 设备详情能展示 DeviceVisibility 和租约状态。
  6. 释放、超时或回收租约后,旧 lease 不再授权新的外部副作用。
  7. 关键动作写入审计事件。
  8. Agent-to-Agent 委托权限不能超过上游授权范围,并能在审计中追溯 parent grant、delegator 和实际 operator。
  9. 第一批只接入 bpilot,但通用抽象中不出现浏览器专属字段。
  10. 拓扑、设备权限或预设启停变化后,相关 Agent 的设备 Gene 会自动安装、更新、停用或撤回。

备注

这个 issue 先作为实现入口,细化 PR 可以按模型 / 服务 / 前端 / bpilot 适配 / 测试验收拆分。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions