我给 Claude Code 写了一个「AI 任务进度条」,让黑盒变仪表盘 痛点:AI 执行任务时,你在"盲等"

13 阅读4分钟

过去一个月我重度使用 Claude Code,发现一个反复出现的问题:

描述了一个复杂的多步骤任务 → AI 开始执行 → 中间上下文被压缩 → 之前的进度全丢了 → 不知道跑到哪了

更糟糕的是训练场景——挂着一晚上跑微调,第二天起来发现半夜就 OOM 挂了,整整 6 个小时白等。

AI 任务的进度,完全是个黑盒。

于是我花了两天时间,写了这个 Claude Code Skill——progress-tracker


它是什么?

一个双层架构的 AI 任务进度跟踪系统:

┌─────────────────────────────────────────┐
  Skill 层(对话驱动)                      
  AI 识别多步骤任务  自动创建清单  静默更新  
├─────────────────────────────────────────┤
  Runtime 层(代码自主上报)                  
  @track 装饰器 / RuntimeTracker / CLI      
  训练脚本无需 AI 介入,自主报告进度           
└─────────────────────────────────────────┘

核心思路很简单:

  • Skill 层负责对话中的任务管理——你描述工作流,AI 自动建清单、跟踪状态
  • Runtime 层负责脱离对话的进度上报——你的训练脚本自己报告百分比,不需要 AI 在线

两层共享同一份 progress.json,互不依赖。


怎么用?

安装(一行命令)

git clone https://github.com/wpylove666/progress-tracker.git ~/.claude/skills/progress-tracker

重启 Claude Code,搞定。不需要配置文件,不需要 API Key,不需要数据库。

Skill 层:对话中自动触发

你只需要正常对话:

👤 我要微调 Qwen2.5:准备数据 → 配置 LoRA → 训练 → 评估 → 导出

🤖 检测到 5 步工作流,建议创建进度跟踪:

   + 微调 Qwen2.5
       [ ] 准备训练数据
       [ ] 配置 LoRA 参数
       [ ] 启动训练
       [ ] 评估模型
       [ ] 导出模型

   创建?[Y/n]

执行过程中:

  • ✅ 步骤完成 → 静默更新,不打扰你
  • ❌ 步骤失败 → 立即告警("CUDA OOM at step 1500, try reducing batch size")
  • 📊 随时问"进度如何" → 显示完整进度树

Runtime 层:训练脚本自主上报

这是 v0.2.0 新增的能力。有三种使用方式:

方式一:装饰器(最省事)

from runtime import track

@track(task_id="t1.3")
def train_model(epochs=10):
    for epoch in range(epochs):
        ...

函数执行前自动标记 in_progress,成功返回标记 done,抛异常自动写入 alert一行代码搞定。

方式二:手动控制(训练循环内)

from runtime import RuntimeTracker

tracker = RuntimeTracker(task_id="t1.3")
tracker.start()

for epoch in range(10):
    train_epoch()
    tracker.report(pct=(epoch + 1) * 10, msg=f"Epoch {epoch+1}/10")

tracker.done()

方式三:CLI(Shell 脚本也能用)

python runtime.py report --id t1.3 --pct 60 --msg "Batch 600/1000"
python runtime.py watch  --id t1.3 --interval 5 --timeout 3600

watch 子命令会阻塞等待任务完成,返回不同 exit code——适合 CI/CD pipeline。


终端长什么样?

Progress Tracker - 2026-05-30T14:30:00

+ 微调 Qwen2.5                              [====      ] 40%
    [x] 准备训练数据
    [x] 配置 LoRA 参数
    [ ] 启动训练                              ← in progress
    [ ] 评估模型

Total: 2/4 done (50%)

简洁直观的 ASCII 进度条,一眼看清全局状态。


技术设计

几个我觉得值得一提的设计决策:

1. 零依赖

整个项目 100% Python stdlib。为什么?因为 Claude Code 用户的环境千差万别——有人用 venv,有人用 conda,有人直接在系统 Python 跑。一个 pip install 都没有,意味着到处都能跑

2. 静默失败

这是 Runtime 层最重要的设计原则:进度上报失败绝不崩溃你的训练任务

def _safe(fn):
    """所有更新方法都套了这个装饰器"""
    @functools.wraps(fn)
    def wrapper(*args, **kwargs):
        try:
            return fn(*args, **kwargs)
        except Exception:
            pass  # 进度上报挂了,训练继续
    return wrapper

你跑了一天的训练因为进度上报崩了——这不可接受。

3. 百分比自动计算

progress.json 里的百分比从来不是存储值,而是根据子任务状态实时计算。这避免了"手动改了状态百分比没更新"的陈旧数据问题。

4. 两层解耦

Skill 层和 Runtime 层共享 JSON Schema,但完全独立运作。AI 对话中可以手动更新进度,训练脚本也可以自主上报——互不干扰。


适用场景

  • 🏋️ 模型微调/训练(多 epoch,需要实时知道进度和 loss)
  • 📊 批量数据处理(多阶段 ETL pipeline)
  • 🤖 Claude Code Agent 工作流(多步骤自动化任务编排)
  • 🔧 任何需要"知道跑到哪了"的长时 AI 任务

项目状态

刚发布一天,0 star 起步。如果你也用 Claude Code 做复杂任务,欢迎试试看——clone 下来就能用,不需要任何配置。


后续计划

  • 自动生成 Markdown 报告(任务结束后输出总结)
  • 多项目并行追踪
  • Web Dashboard(给团队看的多任务总览页)
  • 更多的 CI/CD 集成(GitHub Actions 原生支持)

如果你有想法或需求,欢迎提 Issue 或 PR 👏

效果图 {961DB153-827D-48FC-BF48-F13CB1559001}.png