zcbot/core/ui.py

39 lines
1.4 KiB
Python

"""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)