现状与证据
_safe_stream 在两处实现中承担“日志/事件流名称清洗”职责,但语义不一致、实现重复:
apps/server/daemon/services/log/service.py:27
src/cobnet/agent/eventlog/inmemory.py:36
两者均负责把输入 stream name 转成可安全使用的标识,但细节参数不同:
- 一处做字符白名单清洗(
isalnum/-/_/.)+ 小写 + 截断
- 一处仅做
strip + 截断 + 默认值
问题
- 语义重复:流名归一化散落在服务层和通用
agent/eventlog。
- 日后规则演进(允许字符、默认值策略、长度策略)需要同步修改多处。
src/cobnet/backplane 下已有通用传输/日志语义抽象方向,当前逻辑缺少统一入口。
建议
在 src/cobnet/backplane 新增小工具(建议 backplane/util/stream.py):
safe_stream(value, *, lowercase: bool = True, allow: str = "-_./", fallback: str = "log") -> str
sanitize_stream_token(value, *, keep_case: bool = False, max_len: int = 120)
并让:
apps/server/daemon/services/log/service.py 使用策略:allow 包含 -_./, lowercase=True, fallback="task"
src/cobnet/agent/eventlog/inmemory.py 使用策略:lowercase=False, fallback="log"
验收
- 去除以上两处重复私有实现。
- 保持现有行为兼容(原默认与字符策略通过参数保持)。
- 增加单测:空值、非法字符、长度边界、大小写策略。
现状与证据
_safe_stream在两处实现中承担“日志/事件流名称清洗”职责,但语义不一致、实现重复:apps/server/daemon/services/log/service.py:27src/cobnet/agent/eventlog/inmemory.py:36两者均负责把输入 stream name 转成可安全使用的标识,但细节参数不同:
isalnum/-/_/.)+ 小写 + 截断strip+ 截断 + 默认值问题
agent/eventlog。src/cobnet/backplane下已有通用传输/日志语义抽象方向,当前逻辑缺少统一入口。建议
在
src/cobnet/backplane新增小工具(建议backplane/util/stream.py):safe_stream(value, *, lowercase: bool = True, allow: str = "-_./", fallback: str = "log") -> strsanitize_stream_token(value, *, keep_case: bool = False, max_len: int = 120)并让:
apps/server/daemon/services/log/service.py使用策略:allow包含-_./,lowercase=True,fallback="task"src/cobnet/agent/eventlog/inmemory.py使用策略:lowercase=False,fallback="log"验收