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
事件类型包括:joined、updated、left
获取自身信息
- 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 提供用户身份:
username和avatarUrl从 AuthKit 的用户资料中获取userId从 AuthKit 的 grant 中获取- App 下线时自动注销发现注册
什么时候不一定需要 DiscoveryKit
- 你只做云端 API 调用,不涉及局域网设备间通信
- 你不需要跨设备功能
- 你的 App 运行环境没有局域网
下一步看什么
- 发现设备后需要传文件:看 TransferKit
- 需要先获取用户身份:看 AuthKit
- 需要注册 App:看 AppKit
