Skip to content

[backplane][protocol] 抽取 _CommandPlane 与 send_command 协议/交付约束 #15

@beachspainc

Description

@beachspainc

现状与证据

send_command 协议及 _CommandPlane 重复定义被散落到多个模块,签名完全一致,且用于同一类 backplane command plane 抽象:

_CommandPlane Protocol

  • src/cobnet/backplane/control/ws/server.py:847 (send_command(self, command: ScopeCommand, *, client_id: str | None = None) -> int)
  • src/cobnet/backplane/control/ws/app.py:202(同签名)
  • src/cobnet/agent/hub.py:45(同签名)
  • apps/server/controller/backplane/context.py:40(同签名)
  • apps/server/controller/backplane/toolbox.py:37(同签名)
  • apps/server/controller/knowledge/hub.py:25(同签名)
  • apps/server/controller/workspace/hub.py:25(同签名)
  • apps/server/state/agent/welcome.py:32(同签名)

send_command 实现

  • src/cobnet/backplane/control/ws/server.py:847
  • src/cobnet/backplane/control/ws/app.py:202

这两个实现行为也高度一致:

  • 类型校验 ScopeCommand
  • 通过 scope owner 做命中路由
  • 命令投递队列与统计发送数
  • 返回发送客户端数

建议

  • 在 backplane 层提取统一协议定义与基础行为(例如 src/cobnet/backplane/control/plane.py)。
  • apps 层与 src/cobnet/agent/hub.py 统一引用该协议,避免重复定义。
  • 若需要可让 send_command 的回传语义保持向后兼容(int)。

关联

目前 open issue(#8-#13)聚焦的是基础类型/流量小 helper(_as_*,_safe_stream 等),未覆盖 _CommandPlane/command-plane protocol 抽取。

验收

  • 仅保留一处 Protocol 定义。
  • 所有调用侧改为该共享定义;移除重复声明。
  • 在现有行为下补齐至少一个路由/广播测试。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions