SIA 自我改进 AI 日志系统解析:--log-level 三级控制与每代日志落盘位置指南
【免费下载链接】siaSIA is a Self Improving AI framework to autonomously improve the performance of any AI system (Model / Agent) on a benchmark task.项目地址: https://gitcode.com/GitHub_Trending/sia4/sia
SIA(Self-Improving AI)是一个让 AI 系统(模型 / Agent)在基准任务上自主迭代进化的开源框架,其日志系统是排查每一代 Agent 运行问题的关键入口。本文带你快速看懂 SIA 日志系统的三大核心:集中式日志配置 sia/logging_setup.py、日志级别控制方式(CLI 参数、环境变量、默认值),以及每一代(generation)运行日志的落盘位置,新手也能轻松上手。
日志系统全景:一个模块搞定全局配置
SIA 把所有日志配置收敛在 sia/logging_setup.py 一个文件里,取代了过去散落在 sia/orchestrator.py 和 sia/util.py 中重复的logging.basicConfig(...)代码块。核心只有两个函数:
configure_logging(level)(sia/logging_setup.py#L37-L52):配置根日志器。采用幂等设计——首次调用安装 handler 和格式,之后再次调用时只有显式传入新级别才会更新,否则直接跳过,不会重复打配置日志。get_logger(name)(sia/logging_setup.py#L55-L58):各模块统一入口,返回模块级 logger 前先确保日志已配置好。
统一格式为时间 [级别] 消息,例如2026-09-16 03:26:09 [INFO] Generation 1 completed,时间精确到秒,读起来一目了然。
日志级别三步走:CLI 参数、环境变量、默认值
想知道 SIA 日志怎么调详细程度?只需记住优先级从高到低三步:
- CLI 参数
--log-level:支持DEBUG/INFO/WARNING/ERROR/CRITICAL五个级别,定义在 sia/cli.py#L98-L105,优先级最高; - 环境变量
SIA_LOG_LEVEL:不传 CLI 参数时读取该变量,同样接受级别名或数字(如10),在 sia/logging_setup.py#L19-L34 的_resolve_level中解析; - 默认 INFO:两者都没设置时回退到 INFO,保证日常运行输出干净不啰嗦。
⚠️ 一个小细节:main()启动时会先无参调用一次configure_logging(),等参数解析完成后再用configure_logging(args.log_level)覆盖级别(sia/orchestrator.py#L765-L780),这就是"CLI 参数永远生效"的实现机制。排查 Agent 对话细节时建议加--log-level DEBUG,可以看到每一轮工具调用和模型响应(见 sia/agent_impls/claude.py#L42-L90 的分轮次 debug 日志)。
每代日志落盘位置:runs 目录结构速查
SIA 采用多代循环进化架构:Meta-Agent 生成初版 Target Agent,Target Agent 执行任务并记录日志,Feedback Agent 分析日志后重写下一代。所有产物按runs/run_{id}/gen_{n}/组织(详见 docs/architecture.md)。
每代目录下的关键日志文件(文件名常量集中在 sia/layout.py#L23-L34):
| 文件 | 内容 | 产生者 |
|---|---|---|
target_agent_stdout.log | Target Agent 的 stdout+stderr 合并输出 | 进程流式落盘 |
train_stdout.log | weights 模式下 train.py 的输出 | 进程流式落盘 |
evaluation.log | 评估器 stdout/stderr | 评估阶段 |
agent_execution.json | 结构化执行轨迹(步骤、结果) | Target Agent |
improvement.md | Feedback Agent 的改进笔记(第 2 代起) | Feedback Agent |
💡 其中 stdout 日志由_stream_to_log负责写入(sia/orchestrator.py#L291-L309):子进程的 stdout 与 stderr 合并为一条流,边执行边同时打印到控制台和写入文件,所以运行中就能看到实时日志,结束后文件内容也是完整的。
日志不只是给人看的:反馈闭环与在线看板
SIA 日志系统最巧妙的设计是日志既是给人看的,也是给 AI 看的:
- 反馈闭环:Feedback Agent 构建提示词时会读取本代 stdout 日志,执行失败时提示"完整日志见
{path}/target_agent_stdout.log"(sia/orchestrator.py#L534-L545),让模型基于真实输出生成改进建议; - 指标自动提取:sia/context_manager.py#L372-L386 用正则从
target_agent_stdout.log/train_stdout.log中解析评估指标,汇总进 run 级context.md; - 在线可视化:运行中自动启动的 Web 看板(sia/web/)可直接查看每代的
evaluation.log、stdout 日志与执行轨迹,文件映射见 sia/web/runs.py。
总结:三步用好 SIA 日志系统
- 想看得更细:启动命令加
--log-level DEBUG,或设置环境变量SIA_LOG_LEVEL=DEBUG; - 想看某代输出:直接打开
runs/run_{id}/gen_{n}/target_agent_stdout.log(weights 模式为train_stdout.log); - 想复盘整个 run:结合 run 级
context.md、每代improvement.md和 Web 看板,即可完整追溯每一代的进化轨迹。
集中配置在 sia/logging_setup.py、路径规则在 sia/layout.py、调度落盘在 sia/orchestrator.py——这三处就是 SIA 日志系统的完整地图,掌握它们,排查问题不再靠猜。
【免费下载链接】siaSIA is a Self Improving AI framework to autonomously improve the performance of any AI system (Model / Agent) on a benchmark task.项目地址: https://gitcode.com/GitHub_Trending/sia4/sia
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考