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 追踪方案。
方案概览
整个方案由 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.json | agentStop 事件触发,每次会话结束自动执行记账脚本 |
| 记账脚本 | ~/.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:当前周期已用 CreditsusageLimitWithPrecision:套餐额度上限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)
每次运行会:
- 找到最新的
q-client.log - 提取最后一条
GetUsageLimitsCommand记录 - 与 CSV 账本中的上一条记录对比,计算差值(本次消耗)
- 追加一行到
~/.kiro/credit-ledger.csv - 更新 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 的自动化能力核心,支持多种事件类型:
| 事件 | 触发时机 | 典型用途 |
|---|---|---|
agentStop | AI 会话结束 | 自动记账、日志收集 |
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 花在哪,才能花得更值。