Agentao 自动记录所有与 LLM 的交互到日志文件,包括完整的请求和响应内容。
默认位置: agentao.log(在运行目录)
每次发送给 LLM 的请求都会记录:
================================================================================
[req_1] LLM REQUEST
================================================================================
Model: claude-sonnet-4-5
Temperature: 0.7
Max Tokens: (if specified)
Messages (N total):
Message 1 [system]:
Content (XXX chars):
You are Agentao, a helpful AI assistant...
(完整的系统提示)
Message 2 [user]:
Content (XXX chars):
用户的完整消息内容...
(逐行记录,不截断)
Message 3 [assistant]:
Content (XXX chars):
助手的回复...
Tool Calls: 2
Tool Call 1:
Function: read_file
ID: call_xxx
Arguments (full):
{
"file_path": "example.py"
}
Message 4 [tool]:
Tool: read_file
Tool Call ID: call_xxx
Result (XXX chars):
文件的完整内容...
(逐行记录,不截断)
Tools (N available):
- read_file
- write_file
- (其他工具...)
LLM 返回的响应也会完整记录:
================================================================================
[req_1] LLM RESPONSE
================================================================================
Model: claude-sonnet-4-5
Finish Reason: stop
Token Usage:
Prompt Tokens: 1234
Completion Tokens: 567
Total Tokens: 1801
Assistant Response (XXX chars):
助手的完整回复内容...
(逐行记录,不截断)
Tool Calls (N):
Tool: write_file
ID: call_yyy
Arguments:
{
"file_path": "output.txt",
"content": "完整的文件内容..."
}
================================================================================
记录的详细信息包括:
req_1, req_2, …)日志功能默认开启,无需配置:
# 启动 Agentao
uv run python main.py
# 所有交互会自动记录到 agentao.log
实时查看:
tail -f agentao.log
查看完整日志:
cat agentao.log
搜索特定内容:
grep "read_file" agentao.log
grep "ERROR" agentao.log
grep "req_5" agentao.log # 查看特定请求
查看最近 N 行:
tail -n 100 agentao.log
在代码中可以指定日志文件位置:
from agentao.llm import LLMClient
client = LLMClient(
api_key="your-key",
model="claude-sonnet-4-5",
log_file="custom_location.log" # 自定义日志文件
)
2026-02-09 14:30:45 - agentao.llm - INFO - [req_1] LLM REQUEST
格式说明:
2026-02-09 14:30:45 - 时间戳agentao.llm - 日志来源INFO - 日志级别[req_1] - 请求 IDLLM REQUEST - 日志内容使用 = 字符作为分隔线(80 个字符宽):
================================================================================
[req_1] LLM REQUEST
================================================================================
.gitignore 中忽略日志文件(已配置)# 清空但保留文件
> agentao.log
# 或删除文件
rm agentao.log
# 按日期归档
mv agentao.log agentao_$(date +%Y%m%d).log
# 压缩归档
gzip agentao_$(date +%Y%m%d).log
创建 logrotate 配置(Linux/macOS):
# /etc/logrotate.d/agentao 或 ~/.logrotate.d/agentao
/path/to/agentao.log {
daily
rotate 7
compress
missingok
notifempty
}
2026-02-09 14:30:45 - agentao.llm - INFO - LLMClient initialized with model: claude-sonnet-4-5
2026-02-09 14:30:50 - agentao.llm - INFO - ================================================================================
2026-02-09 14:30:50 - agentao.llm - INFO - [req_1] LLM REQUEST
2026-02-09 14:30:50 - agentao.llm - INFO - ================================================================================
2026-02-09 14:30:50 - agentao.llm - INFO - Model: claude-sonnet-4-5
2026-02-09 14:30:50 - agentao.llm - INFO - Temperature: 0.7
2026-02-09 14:30:50 - agentao.llm - INFO -
Messages (2 total):
2026-02-09 14:30:50 - agentao.llm - INFO -
Message 1 [system]:
2026-02-09 14:30:50 - agentao.llm - INFO - Content (245 chars):
2026-02-09 14:30:50 - agentao.llm - INFO - You are Agentao, a helpful AI assistant with access to various tools and skills.
2026-02-09 14:30:50 - agentao.llm - INFO -
2026-02-09 14:30:50 - agentao.llm - INFO - You can help users with:
2026-02-09 14:30:50 - agentao.llm - INFO - - Reading, writing, and editing files
2026-02-09 14:30:50 - agentao.llm - INFO - - Searching for files and text content
2026-02-09 14:30:50 - agentao.llm - INFO - ...
2026-02-09 14:30:50 - agentao.llm - INFO -
Message 2 [user]:
2026-02-09 14:30:50 - agentao.llm - INFO - Content (25 chars):
2026-02-09 14:30:50 - agentao.llm - INFO - Read the file main.py
2026-02-09 14:30:50 - agentao.llm - INFO -
Tools (13 available):
2026-02-09 14:30:50 - agentao.llm - INFO - - read_file
2026-02-09 14:30:50 - agentao.llm - INFO - - write_file
2026-02-09 14:30:50 - agentao.llm - INFO - ...
2026-02-09 14:30:52 - agentao.llm - INFO - ================================================================================
2026-02-09 14:30:52 - agentao.llm - INFO - [req_1] LLM RESPONSE
2026-02-09 14:30:52 - agentao.llm - INFO - ================================================================================
2026-02-09 14:30:52 - agentao.llm - INFO - Model: claude-sonnet-4-5
2026-02-09 14:30:52 - agentao.llm - INFO - Finish Reason: tool_calls
2026-02-09 14:30:52 - agentao.llm - INFO -
Token Usage:
2026-02-09 14:30:52 - agentao.llm - INFO - Prompt Tokens: 1234
2026-02-09 14:30:52 - agentao.llm - INFO - Completion Tokens: 45
2026-02-09 14:30:52 - agentao.llm - INFO - Total Tokens: 1279
2026-02-09 14:30:52 - agentao.llm - INFO -
Tool Calls (1):
2026-02-09 14:30:52 - agentao.llm - INFO - Tool: read_file
2026-02-09 14:30:52 - agentao.llm - INFO - ID: call_abc123
2026-02-09 14:30:52 - agentao.llm - INFO - Arguments:
2026-02-09 14:30:52 - agentao.llm - INFO - {
2026-02-09 14:30:52 - agentao.llm - INFO - "file_path": "main.py"
2026-02-09 14:30:52 - agentao.llm - INFO - }
2026-02-09 14:30:52 - agentao.llm - INFO - ================================================================================
grep -n "ERROR" agentao.log
grep -A 50 "req_5" agentao.log
grep "Total Tokens" agentao.log | awk '{sum += $NF} END {print "Total:", sum}'
grep -B 2 -A 5 "Tool Calls" agentao.log
在初始化 Agentao 时,可以传递日志配置:
from agentao.agent import Agentao
agent = Agentao(
api_key="your-key",
model="claude-sonnet-4-5",
# log_file 会传递给 LLMClient
)
检查:
可能原因:
解决方案:
exit 命令)定期清理或使用日志轮转:
# 只保留最近 1000 行
tail -n 1000 agentao.log > agentao_temp.log
mv agentao_temp.log agentao.log
更新日期: 2026-02-09 功能状态: ✅ 已实现并测试 记录方式: 完整内容,不截断