"""Rich 控制台主题: 统一 dark 终端友好的配色。 设计目标: 在黑底终端上,所有文字 readable,且语义有层次。 - 弱化用 grey50/grey70 而不是 dim —— 一些终端把 dim 渲染得过暗。 - 强调色一律走 bright_* —— 8 色版的 blue/cyan 在 Windows 深底太黯。 - 用语义样式名(user / assistant / tool / ok / warn / err / info / muted), 避免在调用处硬编码颜色,以后改主题只动这一处。 """ from __future__ import annotations from rich.console import Console from rich.theme import Theme ZCBOT_THEME = Theme( { # 通用层次 "info": "grey70", # 普通信息(系统反馈、路径、命令提示) "muted": "grey50", # 真要弱化的次要内容(预览、spinner 文本) "accent": "bright_cyan", # 强调(模型名等) # 角色 "user": "bold bright_magenta", "assistant": "bold bright_cyan", "tool": "bold bright_yellow", # 状态 "ok": "bright_green", "warn": "bright_yellow", "err": "bold bright_red", # task 状态列 "status.active": "bright_cyan", "status.completed": "bright_green", "status.abandoned": "grey50", } ) def make_console() -> Console: """创建带 zcbot 主题的 Console。所有 TUI 入口都应通过这个工厂拿 console。""" return Console(theme=ZCBOT_THEME)