Skip to content

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

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 定义。
  • 所有调用侧改为该共享定义;移除重复声明。
  • 在现有行为下补齐至少一个路由/广播测试。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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