Files
social-app/docs/plans/visibility-mask-restructure.md
T
zl-q 80ad5141a6 refactor(agent): restructure visibility masks, task queues, and memory service
Visibility mask refactoring:
- Replace dead UI_REALTIME bit with CONTEXT_ASSEMBLY (bit 1)
- Remove visibility_consumer_bit from SystemAgentLLMConfig and system_agents.yaml
- Simplify _resolve_user_message_visibility_mask: chat->UI_HISTORY|CONTEXT_ASSEMBLY, automation->0
- Simplify _resolve_stage_visibility_mask: memory->UI_HISTORY, router/worker->UI_HISTORY|CONTEXT_ASSEMBLY
- Remove stage_visibility_bit_map from store.py

Task queue renaming:
- Replace default_broker/bulk_broker/critical_broker with worker_agent_broker/worker_automation_broker
- Queue names: 'default'/'bulk'/'critical' -> 'agent'/'automation'
- Rename run_command_task -> run_command_task_agent/run_command_task_automation
- AgentService derives queue from runtime_mode: chat->agent, automation->automation

Architecture cleanup:
- Move context_service.py from runtime/ to agentscope/services/
- Add MemoryService in v1/memory/ following repository/service pattern
- Move consumer_registry.py and pipeline_spec.py from schemas/agent to agentscope/schemas/
- Delete dead code: registry_builder.py, VisibilityBitRef
- Delete superseded plan docs
2026-03-22 20:35:55 +08:00

4.5 KiB
Raw Blame History

可见性掩码重构方案

日期:2026-03-22 状态:待执行

背景

现有可见性系统存在以下问题:

  • UI_REALTIME 定义但从未使用
  • visibility_consumer_bit 语义模糊,用于 context 过滤但无法正确区分 chat/automation
  • stage bits (16/17/18) 在 chat/automation 永不共享 thread 的设计下无意义
  • 无法正确实现:automation user_message 不进 /history、不进 contextautomation agent_reply 进 /history 但不进 context

设计目标

runtime_mode 消息 /history 可见 context_messages 组装
chat user_message
chat agent_reply
automation user_message
automation agent_reply

前提条件

  • chat 和 automation 永不共享 thread_id(已确认的设计约束)
  • memory == automation,无需单独处理

Bit 定义

BIT 0  → UI_HISTORY       → /history API 可见
BIT 1  → CONTEXT_ASSEMBLY → 组装进 context_messages

UI_REALTIME 废弃,删除。 visibility_consumer_bit 废弃,删除。 Stage bits (16/17/18) 废弃,删除。


消息 Mask 矩阵

消息 runtime_mode UI_HISTORY CONTEXT_ASSEMBLY Mask
user_message chat 1 1 3
user_message automation 0 0 0
agent_reply chat 1 1 3
agent_reply automation 1 0 1

查询设计

查询 Mask 匹配规则
/history UI_HISTORY = 1 (message_mask & 1) != 0
context_messages CONTEXT_ASSEMBLY = 2 (message_mask & 2) != 0

查询结果验证

消息 Mask /history & 1 /history context & 2 context
chat user_message 3 1 1
chat agent_reply 3 1 1
automation user_message 0 0 0
automation agent_reply 1 1 0

变更清单

1. schemas/agent/visibility.py

  • 删除 UI_REALTIME = 1SystemVisibilityBit
  • 删除 VisibilityBitRef
  • 保留 bit_mask() 函数
  • 保留 VisibilityMask 类(其他模块可能使用)

2. schemas/agent/system_agent.py

  • 删除 SystemAgentLLMConfig.visibility_consumer_bit 字段

3. core/config/static/database/system_agents.yaml

  • 删除 router.visibility_consumer_bit
  • 删除 worker.visibility_consumer_bit

4. v1/agent/service.py

  • 重写 _resolve_user_message_visibility_mask
    async def _resolve_user_message_visibility_mask(
        self, *, runtime_mode: RuntimeMode
    ) -> int:
        if runtime_mode == RuntimeMode.CHAT:
            return UI_HISTORY | CONTEXT_ASSEMBLY  # = 3
        return 0  # automation user_message
    

5. core/agentscope/events/store.py

  • 重写 _resolve_stage_visibility_mask
    • chat stage (router/worker) → UI_HISTORY | CONTEXT_ASSEMBLY = 3
    • automation stage (memory) → UI_HISTORY = 1
  • 删除 _load_stage_visibility_bit_map 中对 visibility_consumer_bit 的依赖
  • 删除 system_agents.yaml 配置加载逻辑

6. core/agentscope/runtime/context_service.py

  • load_context_messages 查询 mask 改为 CONTEXT_ASSEMBLY = 2
    visibility_mask = bit_mask(bit=int(SystemVisibilityBit.CONTEXT_ASSEMBLY))
    

7. core/agentscope/runtime/tasks.py

  • 删除 _build_recent_context_messages 中 memory job 的特殊处理
  • memory mode 改用 runtime_mode=automation 语义

8. core/agentscope/runtime/runner.py

  • 删除硬编码 visibility_consumer_bit=18SystemAgentLLMConfig
  • memory agent 配置改用 automation 语义

9. 清理迁移

  • 更新 schemas/agent/__init__.py 导出(删除 visibility_consumer_bit 相关)
  • 更新所有引用 visibility_consumer_bit 的文件
  • 运行测试验证 /history 和 context 组装行为

实施顺序

  1. 新增 CONTEXT_ASSEMBLY = 1 bit,更新 service.py
  2. 更新 events/store.py 可见性逻辑
  3. 更新 context_service.py 查询 mask
  4. 清理废弃配置和字段
  5. 运行测试验证

风险

  • VisibilityBitRef 可能在其他未知位置使用(需全面搜索)
  • visibility_consumer_bitrunner.py 硬编码,修改可能影响 memory pipeline
  • 测试覆盖不足可能导致 regression