Skip to content

DiscoveryKit

DiscoveryKit 是 AgentOS 里的附近设备发现服务。
它让第三方 App 能够发现同一局域网中运行 AgentOS 的其他设备和 App 实例。

它解决什么问题

DiscoveryKit 帮你处理:

  • 将当前 App 注册为可被发现的节点
  • 发现附近的 AgentOS 设备和已注册 App
  • 获取设备信息(设备 ID、名称、类型、在线状态)
  • 通过 SSE 实时监听设备上下线事件
  • 获取自身设备信息和注册状态

最适合什么场景

  • 你要实现跨设备配对功能
  • 你要在发送文件前先选择目标设备
  • 你要构建多设备协作能力
  • 你要让用户看到"附近可用设备"列表

核心能力

注册为可发现节点

App 通过 AuthKit 获取身份后,可将自己注册到 DiscoveryKit:

  • SDK(TypeScript):sdk.discoverykit.register(bearerToken, { receivePolicy: 'autoAccept' })
  • SDK(Python):await sdk.discoverykit.register(bearer_token, {"receivePolicy": "autoAccept"})
  • HTTP:POST /discoverykit/register

注册时可指定 receivePolicy

策略说明
autoAccept自动接收文件
requireConfirm每次接收前需要手动确认

发现附近设备

  • SDK:sdk.discoverykit.getPeers(bearerToken)
  • HTTP:GET /discoverykit/peers

返回的 PeerDevice 包含:

  • deviceId:设备唯一标识
  • name:设备显示名
  • deviceName:设备系统名称
  • deviceType:设备类型
  • host / port:设备地址
  • online:是否在线
  • apps:该设备上已注册的同 bundleId 应用列表

实时监听设备变化

通过 SSE 持续接收设备上下线事件:

  • SDK:sdk.discoverykit.streamPeers(bearerToken)
  • HTTP:GET /discoverykit/peers/stream

事件类型包括:joinedupdatedleft

获取自身信息

  • SDK:sdk.discoverykit.getSelf(bearerToken)
  • HTTP:GET /discoverykit/self

返回当前设备信息及注册状态。

注销发现注册

  • SDK:sdk.discoverykit.unregister(bearerToken)
  • HTTP:POST /discoverykit/unregister

扫描级别

DiscoveryKit 区分两种扫描级别:

  • 设备级(callerBundleId 为空):只返回设备信息,不包含 App 列表
  • 应用级(callerBundleId 非空):只返回同 bundleId 的应用,用于 App 间配对

与 AuthKit 的关系

DiscoveryKit 依赖 AuthKit 提供用户身份:

  • usernameavatarUrl 从 AuthKit 的用户资料中获取
  • userId 从 AuthKit 的 grant 中获取
  • App 下线时自动注销发现注册

什么时候不一定需要 DiscoveryKit

  • 你只做云端 API 调用,不涉及局域网设备间通信
  • 你不需要跨设备功能
  • 你的 App 运行环境没有局域网

下一步看什么