feat(agent-device): 新增办公设施实验抽象#272
Conversation
|
我先审了一轮 Agent Device 核心链路,当前建议合并前至少处理下面几项:
建议补充测试:非法 action 被拒绝、自动 gene 不误删手动安装、并发 acquire 返回业务冲突、parent grant 子授权不能超过父授权范围。 |
|
另外看到一个 PR 范围问题,建议在合并前处理: 这个 PR 标题和主体是
这些改动可能本身是合理的,但它们会让 Agent Device PR 的评审、回滚和线上问题定位变复杂。尤其 Registry 默认值和 建议:
否则后续如果 Agent Device 需要回滚,会把这些无关行为一起回滚掉,风险会比较高。 |
|
再补一个和 Agent Device 直接相关的模板链路问题: 当前办公设施节点没有进入办公室模板保存/部署流程。 相关位置:
影响:用户在办公室里放了 Browser Pilot / Agent Device 后,保存成模板再部署,会丢失设备节点、设备配置、拓扑连接和后续 gene 同步触发。对“办公设施实验抽象”来说,这会让模板复用场景不完整。 建议:
如果本 PR 暂时不打算支持模板,也建议在 PR 描述里明确列为不支持范围,否则用户会以为设备和员工/过道一样可被模板保存。 |
|
再补一个 Agent Device 生命周期问题:移除办公室员工时没有清理该员工相关的 device grant / lease。 相关位置:
影响:如果一个员工持有 Browser Pilot 设备 active lease,管理员把这个员工从办公室移除后,该 lease 仍然是 active。由于 建议:员工移除时同步做两件事:
这里最好补一个测试:给员工授权并 acquire lease 后移除员工,断言 lease 被 reclaimed、grant 被 revoked/soft_deleted,其他员工可以重新 acquire 该设备。 |
|
再补一个授权语义问题:同一设备对同一 subject 可以重复创建多条 active grant,撤销其中一条后 subject 仍然可能保留访问权。 相关位置:
影响:管理员可能多次点击授权,产生多条 active grant。之后 UI 上撤销其中一条 grant, 建议:
建议补测试:重复授权同一员工后撤销,确认不会残留另一个 active grant 导致设备仍可见。 |
|
再补一个授权过期和租约生命周期的边界问题:active lease 没有跟随 grant 过期一起失效。 相关位置:
影响:如果管理员创建了一个 5 分钟后过期的 grant,但 Agent 获取了 1 小时 lease,那么 5 分钟后该 Agent 可能因为 建议:
|
变更内容
验证
DEBUG=true DATABASE_URL=postgresql+asyncpg://nodeskclaw:nodeskclaw@localhost:5432/nodeskclaw_test uv run pytest tests/test_agent_device_service.py tests/test_ce_audit_handler.py tests/test_workspace_agent_node_card_sync.pyuv run ruff check alembic/versions/fccc870bdf4d_add_agent_device_models.py app/api/agent_devices.py app/api/corridors.py app/api/router.py app/api/workspaces.py app/core/config.py app/data/gene_scripts/deskclaw_agent_device.py app/main.py app/models/__init__.py app/models/agent_device.py app/models/workspace_member.py app/schemas/agent_device.py app/services/agent_device_gene_sync_service.py app/services/agent_device_provider.py app/services/agent_device_service.py app/services/audit_handler.py app/services/corridor_router.py app/services/runtime/registries/node_type_registry.py app/services/workspace_service.py tests/test_agent_device_service.py tests/test_ce_audit_handler.py tests/test_workspace_agent_node_card_sync.pynpm run build(nodeskclaw-portal)备注