周末实战:我用 Trae Solo 写了一个日志解析 CLI 工具

上周末我想写一个小工具:把线上 log 转成更易读的格式,然后随手导成 CSV。 这篇文章主要分享一下我在这个过程中和 Trae Solo 的配合方式,看看它到底能帮开发者做到什么程度。


🖥️ 第一步:用 Trae Solo 构建目录骨架

我对 Trae Solo 的第一句话是这样的:

objectivec 复制代码
帮我创建一个 python CLI,用于解析日志文件,
输出为表格和 CSV,项目结构要清晰一些。

它给出的目录结构非常干净:

c 复制代码
cli_tool/
  main.py
  parser.py
  formatter.py
  exporter.py
  sample.log

而且会顺手解释每个文件的职责------不是那种"模板式说明",而是偏开发者风格的那种讲法,比如:

parser 负责把一行 log 拆解成 dict,避免逻辑掺到 main.py 里。

这个第一步的体验就很"对味",完全不像 AI 工具在"形式化输出"。


📄 第二步:让 Trae Solo 完成日志 Parser

我的日志格式大概是:

ini 复制代码
2025-02-14 12:10:33 INFO task finished duration=1.22
2025-02-14 12:12:01 WARN retry attempt=2

我只给了它两行,它直接写出了一个通用性不错的解析器。

python 复制代码
# parser.py
import re

LOG_PATTERN = re.compile(
    r'(?P<ts>[\d-: ]+) (?P<level>[A-Z]+) (?P<msg>.+)'
)

def parse_line(line: str):
    match = LOG_PATTERN.match(line)
    if not match:
        return None
    return match.groupdict()

重点是,它会自己检查边界情况,例如:

  • 行为空怎么办?
  • level 不在常规范围怎么办?
  • message 里如果有 key=value 应不应该拆?

Trae Solo 会主动提示你这些情况,但不会擅自加"复杂逻辑",完全尊重你的项目风格。


📊 第三步:表格输出(我本来没要求,它主动优化了体验)

原本我只要求:

复制代码
打印成"看得懂"的格式

Trae Solo 给我的输出效果大概是这样:

ini 复制代码
TIMESTAMP            LEVEL   MESSAGE
2025-02-14 12:10:33  INFO    task finished duration=1.22
2025-02-14 12:12:01  WARN    retry attempt=2

生成代码如下:

scss 复制代码
# formatter.py
def print_table(rows):
    if not rows:
        return

    headers = rows[0].keys()
    widths = {h: max(len(h), max(len(r[h]) for r in rows)) for h in headers}

    line = " ".join(h.ljust(widths[h]) for h in headers)
    print(line)

    for r in rows:
        print(" ".join(r[h].ljust(widths[h]) for h in headers))

这种输出方式很朴素,但确实够实用,终端查看效果很舒服。


📝 第四步:导出 CSV(一步到位)

我问它:

sql 复制代码
给我实现一个将 rows 导出到 CSV 的函数。

代码如下:

python 复制代码
# exporter.py
import csv

def to_csv(rows, path="output.csv"):
    if not rows:
        return

    with open(path, "w", newline="", encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=rows[0].keys())
        writer.writeheader()
        writer.writerows(rows)

它还顺手补了一句提示:

如果未来字段会变,可以把 fieldnames 抽成参数,这样更灵活。

像极了一个团队里比较稳、比较专业的同事在提醒你写代码的方式。


🚀 最后:Trae Solo 帮我自动 glue 项目逻辑

当所有模块写完后,我对它说:

arduino 复制代码
把所有 module glue 到 main.py,并写一个 CLI。

它把整个工具组合成下面这样:

css 复制代码
# main.py
import argparse
from parser import parse_line
from formatter import print_table
from exporter import to_csv

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("file")
    parser.add_argument("--csv", action="store_true")
    args = parser.parse_args()

    rows = []
    with open(args.file) as f:
        for line in f:
            item = parse_line(line.strip())
            if item:
                rows.append(item)

    print_table(rows)

    if args.csv:
        to_csv(rows)
        print("CSV exported.")

if __name__ == "__main__":
    main()

整体风格简洁干净,真的是"下班前随手做的小工具"的那种感觉。


🎯 真实总结

这次实战让我发现 Trae Solo 很适合:

  • 写脚手架
  • 写工具类项目
  • 写小型 CLI/SDK
  • 重构模块
  • 做代码解释/设计讨论
  • 编写 UT
  • 辅助 debug

它的风格就是:

你说方向,它把事情干得稳稳当当。

不会乱写、不偷懒、不作妖。

整个过程没有卡壳,也没有"上下文乱掉",更没有过度工程化的情况,对短平快的开发特别友好。

相关推荐
Lisonseekpan1 分钟前
Spring Boot Email 邮件发送完全指南
java·spring boot·后端·log4j
sheji34165 分钟前
【开题答辩全过程】以 基于Springboot的体检中心信息管理系统设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
天天向上102437 分钟前
go 配置热更新
开发语言·后端·golang
狗头大军之江苏分军1 小时前
年底科技大考:2025 中国前端工程师的 AI 辅助工具实战盘点
java·前端·后端
一 乐1 小时前
酒店客房预订|基于springboot + vue酒店客房预订系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
计算机毕设指导61 小时前
基于Spring Boot的防诈骗管理系统【源码文末联系】
java·spring boot·后端·spring·tomcat·maven·intellij-idea
开心就好20251 小时前
IOScer 开发环境证书包括哪些,证书、描述文件与 App ID 的协同管理实践
后端
码事漫谈2 小时前
终于找到我想要的远程工具了!
后端
我家领养了个白胖胖2 小时前
MCP模型上下文协议 Model Context Protocol & 百度地图MCP开发
java·后端·ai编程
Coder_Boy_2 小时前
基于DDD+Spring Boot 3.2+LangChain4j构建企业级智能客服系统
java·人工智能·spring boot·后端