Kiro Credit Tracker:用 Steering + Hook 打造 AI IDE 的 Credit 消耗追踪系统

0 阅读6分钟

Kiro Credit Tracker:用 Steering + Hook 打造 AI IDE 的 Credit 消耗追踪系统

关键词:Kiro, AI IDE, Credit Tracker, Steering, Hook, agentStop, 消耗追踪, 可视化仪表盘, 自动记账

痛点:你的 Kiro Credit 花到哪了?

用过 Kiro 的开发者都知道,Pro 套餐每月 1000 Credits,高级模型还有 1.3x~2.2x 的加成系数。但 Kiro 官方目前没有提供详细的消耗明细——你只能看到一个总数,不知道每次会话花了多少、哪些任务是"Credit 黑洞"。

我在实际使用中遇到了这些问题:

  • 月中就发现 Credit 快用完了,但不知道是哪天、哪个任务消耗的
  • 想优化使用策略,但没有数据支撑
  • 团队采购套餐时,需要量化每个人的消耗模式

于是我用 Kiro 自身的 Steering + Hook 机制,做了一个零侵入的 Credit 追踪方案。

image.png

方案概览

整个方案由 4 个组件构成,利用 Kiro 原生能力实现自动化:

┌─────────────────────────────────────────────┐
│                Kiro IDE                      │
│                                              │
│  ┌──────────┐    ┌──────────────────────┐   │
│  │ Steering │    │  Hook (agentStop)    │   │
│  │ 追踪规则  │    │  会话结束触发记账     │   │
│  └──────────┘    └──────────┬───────────┘   │
│                             │                │
│                    python3 credit-log.py     │
│                             │                │
│              ┌──────────────┼──────────┐     │
│              ▼              ▼          ▼     │
│        credit-ledger.csv  dashboard.html     │
│        (CSV 账本)         (可视化仪表盘)      │
└─────────────────────────────────────────────┘
组件文件作用
Steering~/.kiro/steering/credit-tracking.md让 AI 在每个会话中自动检查 Hook 是否存在,并在用户询问时报告消耗
Hook~/.kiro/hooks/credit-report.jsonagentStop 事件触发,每次会话结束自动执行记账脚本
记账脚本~/.kiro/scripts/credit-log.py从 Kiro 本地日志提取 Credit 数据,追加到 CSV 账本
仪表盘~/.kiro/credit-dashboard.html基于 Chart.js 的本地可视化页面,支持按日/周/月/周期查看

核心实现

1. 数据来源:Kiro 本地日志

Kiro 的 Credit 使用数据记录在本地日志文件中:

~/Library/Application Support/Kiro/logs/*/window*/exthost/kiro.kiroAgent/q-client.log

每次 API 调用后,日志中会记录 GetUsageLimitsCommand 的响应,包含:

{
  "output": {
    "usageBreakdownList": [{
      "currentUsageWithPrecision": 878.75,
      "usageLimitWithPrecision": 1000,
      "currentOveragesWithPrecision": 0,
      "nextDateReset": "2026-05-01T00:00:00Z"
    }]
  }
}

关键字段:

  • currentUsageWithPrecision:当前周期已用 Credits
  • usageLimitWithPrecision:套餐额度上限
  • nextDateReset:下次重置日期

2. Hook:agentStop 自动记账

这是整个方案的核心——利用 Kiro 的 Hook 机制,在每次 AI 会话结束时自动触发记账。

~/.kiro/hooks/credit-report.json

{
  "name": "Credit Ledger",
  "version": "1.0.0",
  "description": "会话结束时自动记录 credit 消耗到账本",
  "when": {
    "type": "agentStop"
  },
  "then": {
    "type": "runCommand",
    "command": "python3 ~/.kiro/scripts/credit-log.py"
  }
}

agentStop 是 Kiro Hook 支持的事件类型之一,在 AI agent 执行完毕后触发。这意味着每次你和 Kiro 对话结束,都会自动记一笔账。

3. 记账脚本:credit-log.py

脚本的核心逻辑:

def extract_latest(log_path):
    """从日志中提取最新的 Credit 数据"""
    last = None
    with open(log_path, 'r', errors='ignore') as f:
        for line in f:
            if 'GetUsageLimitsCommand' in line:
                last = line.strip()
    if not last:
        return None
    idx = last.find('{')
    data = json.loads(last[idx:])
    u = data['output']['usageBreakdownList'][0]
    return {
        'used': u['currentUsageWithPrecision'],
        'limit': u['usageLimitWithPrecision'],
        'reset_date': u['nextDateReset'][:10],
    }

def calc_cost(used, last_row):
    """计算本次会话消耗 = 当前累计 - 上次累计"""
    if not last_row:
        return round(used, 2)
    prev = float(last_row['total_used'])
    if used < prev - 1:  # 计费周期重置
        return round(used, 2)
    return round(used - prev, 2)

每次运行会:

  1. 找到最新的 q-client.log
  2. 提取最后一条 GetUsageLimitsCommand 记录
  3. 与 CSV 账本中的上一条记录对比,计算差值(本次消耗)
  4. 追加一行到 ~/.kiro/credit-ledger.csv
  5. 更新 HTML 仪表盘(将 CSV 数据内嵌到模板中)

生成的 CSV 格式:

datetime,total_used,session_cost,remaining,limit,overages,reset_date
2026-04-14 10:30:15,878.75,5.36,121.25,1000,0,2026-05-01

脚本还支持 --rebuild 模式,可以从所有历史日志全量重建账本:

python3 ~/.kiro/scripts/credit-log.py --rebuild

4. Steering:让 AI 自动管理 Hook

Steering 是 Kiro 的"指令注入"机制,可以在每次会话中自动给 AI 附加规则。

~/.kiro/steering/credit-tracking.md(关键部分):

---
inclusion: always
---

# Credit 消耗追踪规则

## 首要任务:Hook 自动部署

在处理用户任何请求之前,你必须先检查当前 workspace 是否存在
`.kiro/hooks/credit-ledger.kiro.hook`。

执行步骤:
1. 运行: `test -f .kiro/hooks/credit-ledger.kiro.hook && echo "EXISTS" || echo "MISSING"`
2. 如果 "MISSING",立即用 createHook 创建
3. 如果 "EXISTS",继续处理用户请求

这段 Steering 的作用:

  • inclusion: always 确保每个会话都会加载
  • AI 在每次会话开始时自动检查 Hook 是否存在,不存在就创建
  • 这解决了 Hook 可能被清理或在新 workspace 中不存在的问题

5. 可视化仪表盘

仪表盘是一个纯前端 HTML 页面,基于 Chart.js,CSV 数据直接内嵌在 HTML 中(无需后端服务)。

功能:

  • 卡片区:已用/额度、剩余、今日消耗、日均消耗
  • 柱状图:按日/周/月/计费周期的消耗趋势
  • 折线图:累计使用趋势(含额度上限参考线)
  • 日期筛选:支持自定义范围和快捷选项(近7天、本月、本周期等)
  • 明细表:每条记录的详细数据

用浏览器打开即可查看:

open ~/.kiro/credit-dashboard.html

一键安装

整个方案打包成了一个安装脚本:

bash install.sh --rebuild

安装内容:

文件安装位置说明
credit-log.py~/.kiro/scripts/记账脚本
credit-report.json~/.kiro/hooks/agentStop Hook
credit-dashboard-template.html~/.kiro/仪表盘模板
credit-tracking.md~/.kiro/steering/AI 追踪规则

--rebuild 参数会从 Kiro 历史日志中提取所有 Credit 记录,重建完整账本。

实际效果

我用这套方案追踪了一个月的数据,得到了一些有价值的发现:

指标数据
统计范围2026-03-19 ~ 2026-04-14
总请求数412 次
总消耗1,141 Credits
日均消耗76 Credits
单次最高139.61 Credits(一个 Spec 任务)
89.7% 的请求消耗 < 5 Credits
0.5% 的请求消耗了 21.3% 的总 Credits

关键洞察:

  • 少数高消耗请求是 Credit 黑洞:2 个 50+ cr 的请求就占了总消耗的 21%
  • Spec 任务是最大消耗源:跨模块的 Spec 任务单次可达 100+ Credits
  • Auto 模式效率最高:全程使用 Auto 模式,Credits 效率(cr/每1%使用时间)优于手动选择高级模型的同事
  • 下午是消耗高峰:17:00 时段消耗占比 19.3%,与复杂任务集中在下午有关

技术要点总结

Kiro Hook 机制

Hook 是 Kiro 的自动化能力核心,支持多种事件类型:

事件触发时机典型用途
agentStopAI 会话结束自动记账、日志收集
fileEdited文件保存自动 lint、格式化
promptSubmit发送消息输入预处理
preToolUse工具调用前权限检查、安全审计
postToolUse工具调用后结果验证

本方案使用 agentStop + runCommand,是最简单也最实用的组合。

Kiro Steering 机制

Steering 是 Kiro 的"持久化 prompt",通过 Markdown 文件定义规则:

~/.kiro/steering/     # 全局 Steering(所有 workspace 生效)
.kiro/steering/       # Workspace 级 Steering

支持三种 inclusion 模式:

  • always(默认):每次会话自动加载
  • fileMatch:匹配特定文件时加载
  • manual:用户通过 # 手动引用

本方案的 Steering 使用 always 模式,确保每个会话都能自动检查和维护 Hook。

适用场景

  • 个人用量管理:了解自己的 Credit 消耗模式,避免月底额度不足
  • 团队采购决策:量化团队成员的消耗数据,选择合适的套餐
  • 使用策略优化:识别高消耗任务类型,合理分配 Credit 预算
  • 成本分析:为管理层提供 AI 工具 ROI 数据

前提条件

  • macOS(脚本读取 ~/Library/Application Support/Kiro/logs/
  • Python 3
  • Kiro IDE

源码

完整代码包含 4 个文件,总计约 300 行:

kiro-credit-tracker/
├── credit-log.py                    # 记账脚本(Python)
├── credit-report.json               # Hook 配置
├── credit-dashboard-template.html   # 仪表盘模板(HTML + Chart.js)
├── credit-tracking.md               # Steering 规则
├── install.sh                       # 一键安装脚本
└── README.md

如果你也在用 Kiro,不妨试试这个方案。知道 Credit 花在哪,才能花得更值。