Mechanic
车辆维修追踪器
追踪多种车辆的里程和服务间隔——包括卡车、汽车、摩托车、房车、越野摩托车、全地形车、船只等。通过解码车辆识别码(VIN)自动填充车辆规格,研究制造商推荐的保养计划,追踪维修历史,估算费用,监控召回信息,追踪燃油经济性,管理保修信息,并主动提醒即将到期和已过期的服务。
数据存储
所有用户数据存储于<workspace>/data/mechanic/目录下:

| 文件 | 用途 |
|---|---|
state.json | 所有车辆信息:当前里程/使用小时数、历史记录、维修记录、加油日志、保修信息、服务提供商、紧急联系信息 |
<key>-schedule.json | 每辆车的保养计划,包含保养间隔和费用估算 |
约定:技能逻辑位于<skill>/目录,用户数据则存储在<workspace>/data/mechanic/目录。这样可以在技能更新或重新安装时确保数据安全。
首次设置
如果<workspace>/data/mechanic/state.json不存在:
- 创建
<workspace>/data/mechanic/目录 - 询问用户想要追踪哪些车辆
- 针对每辆车,运行添加新车辆工作流程(包括为每辆车选择检查频率)
- 创建
state.json并包含车辆条目 - 设置定时任务(参见里程检查设置)
状态文件结构
{
"settings": {
"check_in_tz": "America/Phoenix"
},
"providers": [
{
"id": "jims_diesel",
"name": "Jim's Diesel Repair",
"location": "123 Main St, Mesa, AZ",
"phone": "480-555-1234",
"specialties": ["diesel", "trucks"],
"rating": 5,
"notes": "Great with Power Stroke engines"
}
],
"vehicles": {
"f350": {
"label": "2021 Ford F-350 6.7L Power Stroke",
"schedule_file": "f350-schedule.json",
"check_in_frequency": "monthly",
"current_miles": 61450,
"last_updated": "2026-01-26",
"last_check_in": "2026-01-26",
"vin": "1FT8W3BT0MED12345",
"vin_data": {
"decoded": true,
"decoded_date": "2026-01-26",
"year": 2021,
"make": "Ford",
"model": "F-350",
"trim": "Lariat",
"body_class": "Pickup",
"drive_type": "4WD",
"engine": "6.7L Power Stroke V8 Turbo Diesel",
"displacement_l": 6.7,
"cylinders": 8,
"fuel_type": "Diesel",
"transmission": "10-Speed Automatic",
"doors": 4,
"gvwr_class": "Class 3",
"bed_length": "8 ft",
"wheel_base": "176 in",
"plant_country": "United States",
"plant_city": "Louisville",
"raw_response": {}
},
"business_use": false,
"business_use_percent": 0,
"mileage_history": [
{"date": "2026-01-26", "miles": 61450, "source": "user_reported"}
],
"service_history": [
{
"service_id": "oil_filter",
"date": "2025-11-15",
"miles": 58000,
"hours": null,
"notes": "Full synthetic Motorcraft FL-2051S",
"actual_cost": 125.00,
"provider": {
"id": "jims_diesel",
"name": "Jim's Diesel Repair",
"parts_warranty_months": 12,
"labor_warranty_months": 6
}
}
],
"fuel_history": [
{
"date": "2026-01-20",
"gallons": 32.5,
"cost": 108.55,
"odometer": 61300,
"mpg": 14.2,
"notes": "Regular fill-up"
}
],
"warranties": [
{
"type": "factory_powertrain",
"provider": "Ford",
"start_date": "2021-03-15",
"end_date": "2026-03-15",
"start_miles": 0,
"end_miles": 60000,
"coverage_details": "Engine, transmission, drivetrain components",
"status": "active"
}
],
"recalls": {
"last_checked": "2026-01-26",
"open_recalls": [],
"completed_recalls": []
},
"emergency_info": {
"vin": "1FT8W3BT0MED12345",
"insurance_provider": "State Farm",
"policy_number": "SF-123456789",
"roadside_assistance_phone": "1-800-555-1234",
"tire_size_front": "275/70R18",
"tire_size_rear": "275/70R18",
"tire_pressure_front_psi": 65,
"tire_pressure_rear_psi": 80,
"oil_type": "15W-40 CK-4 Full Synthetic",
"oil_capacity": "15 quarts",
"coolant_type": "Motorcraft Orange VC-3DIL-B",
"def_type": "API certified DEF",
"tow_rating_lbs": 20000,
"gvwr_lbs": 14000,
"gcwr_lbs": 37000,
"key_fob_battery": "CR2450",
"fuel_type": "Diesel (Ultra Low Sulfur)",
"fuel_tank_gallons": 48,
"notes": ""
}
}
},
"last_service_review": "2026-01-26"
}
顶层字段:
settings— 全局设置(时区等)providers— 可重复使用的服务商列表vehicles— 以简短代码为键(例如,f350、rv、crf450)last_service_review— 上次全面检查的日期
每辆车对应的字段:
label— 人类可读的车辆名称schedule_file— 保养计划JSON文件的路径check_in_frequency— 询问里程的频率(每周/每两周/每月/每季度)current_miles/current_hours— 最新已知读数last_updated/last_check_in— 日期追踪vin— 车辆识别号(用于召回、VIN解码和紧急信息)vin_data— 来自NHTSA VPIC API的解码VIN数据(规格、发动机、变速箱等)business_use— 车辆是否用于商业用途(布尔值)business_use_percent— 商业用途百分比 (0-100)mileage_history— 里程/小时记录的时间顺序数组service_history— 已完成服务的时间顺序数组(包含可选的actual_cost和provider)fuel_history— 加油记录的时间顺序数组warranties— 保修记录数组recalls— 召回监控状态(最后检查时间、未解决/已完成)emergency_info— 车辆规格速查与紧急联系人
读取状态
技能加载时,读取:
<workspace>/data/mechanic/state.json— 所有车辆的当前状态- 相关的
<key>-schedule.json文件(取决于讨论的具体内容)
添加新车辆
当用户想要追踪一辆新车辆时:
1. 收集车辆信息
首先询问车辆识别码。如果用户提供了车辆识别码,则运行车辆识别码解码(见下文)以自动填充年份、品牌、型号、发动机、变速箱、驱动类型和其他规格。这可以免去用户回答那些您能自动查询的问题。
询问:
- 车辆识别码(强烈推荐——可自动填充规格、启用召回监控、紧急信息)
- 年份、品牌、型号(仅在未提供车辆识别码时询问)
- 发动机/车型(仅在无VIN或VIN解码不完整时询问)
- 使用模式— 日常通勤、牵引拖挂、越野驾驶、周末玩具车等。
- 当前里程数/使用小时数
- 是否用于商业用途?— 如果是,商业使用比例是多少?(用于税务抵扣记录)
- 保修信息— 是否有仍在有效期内的原厂或延长保修?过期日期/里程?
- 紧急信息— 保险公司、道路救援电话号码、轮胎尺寸(可稍后填写)
如果用户手头没有VIN,请继续手动填写信息,并注明VIN可以稍后添加以启用自动填充和召回监控功能。
2. 确定使用强度等级
通过询问使用情况来分类维护计划:
| 使用情况 | 强度等级 | 影响 |
|---|---|---|
| 正常通勤 | 正常 | 标准间隔 |
| 牵引、重载 | 严苛 | 较短间隔(通常为正常值的50-75%) |
| 越野、多尘环境 | 严苛 | 较短间隔,更频繁更换滤清器 |
| 极端温度(炎热沙漠、严寒) | 严苛 | 较短间隔,关注油液/电池状态 |
| 赛道/竞速 | 严苛+ | 激进间隔,专用油液 |
| 轻度使用,车库停放 | 正常 | 标准间隔,但注意时间相关项目 |
大多数制造商会同时发布"正常"和"严苛/特殊条件"保养计划。请选用匹配的版本。
3. 选择检查频率
询问他们希望多久被询问一次该车辆的里程/小时数:
| 频率 | 最适合 |
|---|---|
| 每周 | 越野摩托车、赛车、商用/车队车辆、高里程日常通勤车 |
| 每2周 | 活跃骑手/驾驶员、保养周期短的车辆 |
| 每月 | 大多数汽车和卡车(推荐默认设置) |
| 每季度 | 季节性车辆、低里程车辆、车库珍藏车、存放的船只 |
根据车辆类型和使用模式建议频率,但允许用户覆盖。
4. 研究保养计划
查找制造商推荐的保养间隔针对具体的年份/品牌/型号/发动机:
- 使用网络搜索查找官方保养计划
- 检查车主手册中的保养间隔
- 与爱好者论坛交叉参考以获取实际建议
- 结合第2步中的使用强度等级
5. 创建保养计划文件
创建<workspace>/data/mechanic/<key>-schedule.json:
{
"vehicle": {
"year": 2021,
"make": "Ford",
"model": "F-350",
"type": "truck",
"engine": "6.7L Power Stroke V8 Turbo Diesel",
"transmission": "10R140 10-Speed Automatic",
"duty": "severe",
"notes": "Tows fifth wheel RV"
},
"services": [
{
"id": "oil_filter",
"name": "Engine Oil & Filter Change",
"interval_miles": 7500,
"interval_months": 6,
"details": "Specific oil type, filter part number, capacity, and any special instructions.",
"priority": "critical",
"cost_diy": "$XX-XX",
"cost_shop": "$XX-XX",
"cost_dealer": "$XX-XX",
"cost_note": "Optional note about related expensive repairs"
}
]
}
每个服务项目必需包含:
id— 唯一蛇形命名法标识符name— 人类可读名称- 至少包含一项间隔指标:
interval_miles(里程间隔)、interval_months(月数间隔)、interval_hours (小时间隔)或interval_rides(骑行次数间隔)details— 具体部件、油液、容量及任何警告说明priority优先级—critical(关键)、high(高)店铺费用,经销商费用— 预计成本范围
研究成本:
- 搜索该特定车型每项服务的典型成本
- DIY = 仅零件成本
- 店铺 = 独立维修店
- 经销商 = 制造商授权经销商
- 添加
成本备注针对故障/维修成本显著高于维护成本的项目
6. 添加到状态文件
将车辆添加到state.json中的vehicles对象下:
{
"<key>": {
"label": "2021 Ford F-350 6.7L Power Stroke",
"schedule_file": "<key>-schedule.json",
"check_in_frequency": "monthly",
"current_miles": 61450,
"current_hours": null,
"last_updated": "2026-01-26",
"last_check_in": "2026-01-26",
"vin": null,
"vin_data": {
"decoded": false
},
"business_use": false,
"business_use_percent": 0,
"mileage_history": [
{"date": "2026-01-26", "miles": 61450, "source": "user_reported"}
],
"service_history": [],
"fuel_history": [],
"warranties": [],
"recalls": {
"last_checked": null,
"open_recalls": [],
"completed_recalls": []
},
"emergency_info": {
"vin": null,
"insurance_provider": null,
"policy_number": null,
"roadside_assistance_phone": null,
"tire_size_front": null,
"tire_size_rear": null,
"tire_pressure_front_psi": null,
"tire_pressure_rear_psi": null,
"oil_type": null,
"oil_capacity": null,
"coolant_type": null,
"tow_rating_lbs": null,
"gvwr_lbs": null,
"key_fob_battery": null,
"fuel_type": null,
"fuel_tank_gallons": null,
"notes": ""
}
}
}
键命名规则:使用简短、易记的短名称 —f350、civic、r1,房车 / 休闲车,CRF450(越野摩托车),哈雷(摩托车),低音艇(钓鱼艇), 等。
7. 更新定时任务
更新定时任务提示,以包含新的车辆。如果此车辆的频率高于当前的定时任务计划,则将定时任务更新为以更高的频率触发。
8. VIN解码与自动填充
如果提供了VIN,运行VIN解码以自动填充车辆规格、紧急信息字段以及计划文件中的车辆部分。向用户展示解码后的信息以供确认。
9. 运行初始召回检查
如果提供了VIN,立即检查是否存在未解决的召回(参见NHTSA召回监控)。如果未提供VIN,则根据品牌/型号/年份进行检查。
车辆类型及特殊注意事项
| 类型 | 跟踪 | 关键保养项目 |
|---|---|---|
| 轿车 | 行驶里程 | 机油、滤清器、刹车、轮胎、变速箱、冷却液 |
| 卡车 | 行驶里程 | 与轿车相同 + 差速器油、分动箱(四驱车)、拖挂时刹车磨损更重 |
| 摩托车 | 行驶里程 | 机油、链条/链轮、气门间隙、前叉油、刹车油、冷却液(液冷式)、轮胎(磨损更快) |
| 越野摩托车 | 运行小时 + 骑行次数 | 空气滤清器(每次骑行后!)、机油(更换频繁)、气门间隙、悬挂系统保养、链条、冷却液 |
| 全地形车/多功能车 | 运行小时 + 行驶里程 | 与越野摩托车相似 + 等速万向节护套、皮带(无级变速)、绞盘保养 |
| 房车/拖挂车 | 行驶里程 + 月份 | 车顶/密封剂检查、滑出式结构、轮毂轴承、电刹车、轮胎(基于年限)、供水系统、发电机、冬季防护 |
| 船只 | 小时 | 机油、叶轮、下机壳流体、锌块/阳极、冬季防护、拖车轴承 |
| 第五轮/拖车 | 里程 + 月数 | 无发动机,但需关注:轴承、刹车、轮胎、车顶、密封件、滑轨、管道系统、液化石油气、季节性准备 |
间隔类型
服务可组合使用以下任意标准:
间隔_里程——基于里程表读数间隔_小时——发动机/使用小时数(发电机、越野摩托车、船只)间隔_月数——基于时间(所有部件都会随时间老化)间隔_使用次数——按次计算(例如:越野摩托车空滤=每次骑行后)
达到任一间隔标准即触发服务。
车辆识别号码解码与自动填充
当用户提供车辆识别号码(在车辆设置期间或之后)时,使用免费的NHTSA VPIC API进行解码,自动查找并存储车辆规格信息。
NHTSA VPIC API(车辆识别号码解码器)
端点: https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVinValues/{VIN}?format=json
无需API密钥。免费且无限制。
示例:
GET https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVinValues/1FT8W3BT0MED12345?format=json
需要提取的关键字段
该API返回一个结果包含一个对象的数组,该对象包含约140多个字段。提取并映射以下字段:
| VPIC字段 | 映射到 | 备注 |
|---|---|---|
ModelYear | vin_data.year | 车辆年份 |
Make | vin_data.make | 制造商 |
Model | vin_data.model | 车型名称 |
Trim | vin_data.trim | 装饰级别(例如:Lariat、XLT等) |
BodyClass | vin_data.body_class | 皮卡、SUV、摩托车等 |
驱动类型 | vin_data.drive_type | 四驱、全轮驱动、后轮驱动、前轮驱动 |
排量(升) | vin_data.displacement_l | 发动机排量(单位:升) |
发动机气缸数 | vin_data.cylinders | 气缸数量 |
主要燃料类型 | vin_data.fuel_type | 汽油、柴油、电动等 |
发动机型号 | vin_data.engine | 与排量结合生成标签 |
变速箱类型 | vin_data.transmission | 自动、手动、无级变速 |
变速箱档位数 | (附加到变速箱信息后) | "10速自动变速箱" |
车门数 | vin_data.doors | 车门数量 |
GVWR | vin_data.gvwr_class | 车辆总重额定值类别 |
WheelBaseShort | vin_data.wheel_base | 轴距(英寸) |
BedLengthIN | vin_data.bed_length | 卡车货箱长度(如适用) |
PlantCountry | vin_data.plant_country | 组装国家 |
PlantCity | vin_data.plant_city | 组装城市 |
注意:许多字段返回空字符串""如不适用。仅存储非空值。
VIN数据存储
将解码数据存储于车辆的vin_data中对象位于state.json中:
{
"vin_data": {
"decoded": true,
"decoded_date": "2026-01-27",
"year": 2021,
"make": "Ford",
"model": "F-350",
"trim": "Lariat",
"body_class": "Pickup",
"drive_type": "4WD",
"engine": "6.7L Power Stroke V8 Turbo Diesel",
"displacement_l": 6.7,
"cylinders": 8,
"fuel_type": "Diesel",
"transmission": "10-Speed Automatic",
"doors": 4,
"gvwr_class": "Class 3",
"bed_length": "8 ft",
"wheel_base": "176 in",
"plant_country": "United States",
"plant_city": "Louisville",
"raw_response": {}
}
}
存储raw_response作为完整的VPIC结果对象以供参考——它包含以后可能有用的额外字段(例如,AirBagLocFront、SeatBeltsAll、TPMS、ActiveSafetySysNote等)。
如果vin_data.decoded为false或缺失,则VIN尚未被解码。
自动填充工作流程
当VIN被解码时:
- 更新
vin_data——存储所有解码字段 - 更新
标签— 根据解码出的年份/品牌/型号/发动机构建(例如:“2021 福特 F-350 6.7L Power Stroke”) - 更新
紧急信息— 自动填充可推导出的字段:燃料类型来自主要燃料类型车辆总重额定值(磅)来自车辆总重额定值(解析重量等级以估算磅数)
- 更新计划文件— 用解码出的规格填充
车辆部分 - 呈现给用户— 显示解码出的内容,确认准确性,询问车辆识别码无法告知我们的信息(使用模式、使用强度、保险等)
何时解码
| 触发条件 | 操作 |
|---|---|
| 添加了带有车辆识别码的新车辆 | 立即解码,自动填充 |
| 用户提供现有车辆的VIN码 | 进行解码并回填车辆数据以及所有空字段 |
| 用户说"查询我的VIN码" | 解码并显示规格信息 |
| 用户更改/更正VIN码 | 重新解码并更新 |
后续添加VIN码
若车辆添加时未提供VIN码,用户后续补充提供:
- 对VIN码进行解码
- 存储至
车辆数据 - 更新
VIN码字段 - 回填所有空白的
紧急信息字段 - 若解码信息更具体则更新
标签使用新VIN码立即执行召回检查 - 确认已更新的内容
- Confirm what was updated
VIN解码展示格式
向用户展示解码后的VIN数据时:
🔍 VIN Decoded — [VIN]
━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 Vehicle
Year: [year] | Make: [make] | Model: [model]
Trim: [trim] | Body: [body_class]
Drive: [drive_type] | Doors: [doors]
🔧 Powertrain
Engine: [engine] ([displacement]L, [cylinders] cyl)
Fuel: [fuel_type]
Transmission: [transmission]
📏 Specs
GVWR: [gvwr_class]
Wheel Base: [wheel_base]
Bed Length: [bed_length] (if truck)
🏭 Built in [plant_city], [plant_country]
━━━━━━━━━━━━━━━━━━━━━━━━━━━
局限性
- VPIC是美国国家公路交通安全管理局(NHTSA)的数据— 最适用于美国市场车辆。进口/国外市场车辆的VIN可能数据不完整。
- 拖车和房车— 对于拖车、五轮拖车和房车,VIN解码可能返回的数据有限,因为它们由不同的制造商生产,且VIN编码方式各异。
- 摩托车和动力运动车辆— 覆盖范围参差不齐。日本品牌(本田、雅马哈、川崎、铃木)通常能良好解码。较小的制造商可能无法解码。
- 1981年之前的车辆— VIN直到1981年才标准化。更早的VIN将无法解码。
- 如果解码返回的数据稀疏,请回退到手动输入并通过网络搜索规格信息。
NHTSA召回监控
使用免费的NHTSA API(无需API密钥)监控所有被跟踪车辆的未完成召回。
API端点
- 按制造商/型号/年份:
https://api.nhtsa.dot.gov/recalls/recallsByVehicle?make=Ford&model=F-350&modelYear=2021 - 根据车辆识别号VIN(更精确):
https://api.nhtsa.dot.gov/recalls/recallsByVin?vin=XXXXX
如果存储了VIN,优先使用基于VIN的查询。否则回退到品牌/型号/年份查询。
召回数据存储
在state.json中每辆车的数据:
{
"recalls": {
"last_checked": "2026-01-26",
"open_recalls": [
{
"nhtsa_id": "26V-123",
"component": "FUEL SYSTEM",
"summary": "Fuel line may crack under pressure",
"consequence": "Fuel leak, fire risk",
"remedy": "Dealer will replace fuel line at no cost",
"date_reported": "2025-12-01",
"status": "open"
}
],
"completed_recalls": [
{
"nhtsa_id": "24V-456",
"component": "ELECTRICAL",
"summary": "Battery cable may corrode",
"date_completed": "2025-06-15",
"notes": "Done at dealer"
}
]
}
}
检查时机
- 每月定时任务:将召回检查纳入里程检查定时任务。无论车辆检查频率如何,每月为所有车辆检查召回信息。
- 添加车辆时:添加新车时立即检查。
- 按需检查:用户询问"我的卡车有召回吗?"
召回报告格式
包含在服务审核输出中:
⚠️ OPEN RECALLS
- [NHTSA ID] — [Component]: [Summary]
Remedy: [What the dealer will do]
⚡ Contact your dealer to schedule this recall service (free)
当用户报告完成召回时,将其从open_recalls(待处理召回)移至completed_recalls(已完成召回)并记录完成日期。
燃油/油耗跟踪
记录加油情况以监测燃油经济性、及早发现机械问题,并追踪燃油支出。
记录加油信息
当用户说“加满了”、“加了汽油/柴油”或报告加油时:
- 需要记录:日期、加仑数、费用(总额或每加仑价格)、里程表读数
- 计算每加仑英里数(MPG):
(当前里程表读数 - 上次里程表读数)/ 加仑数 - 将此记录添加到车辆的
加油历史数组 - 检查MPG异常情况
加油历史记录条目
{
"date": "2026-01-20",
"gallons": 32.5,
"cost": 108.55,
"price_per_gallon": 3.34,
"odometer": 61300,
"mpg": 14.2,
"partial_fill": false,
"notes": ""
}
MPG计算
- 每次加油的MPG:
(当前里程表读数 - 上次加油里程表读数)/ 加仑数(如果上次加油是部分加油,则跳过) - 滚动平均值:最近10次加油的平均值(若不足10次则取全部)
- 趋势分析:对比最近3次加油与滚动平均值
异常检测
若某次加油的里程油耗低于滚动平均值超过15%,则标记为异常:
⚠️ MPG Alert — [Vehicle]
Last fill-up: 10.5 MPG (your average is 14.2 MPG)
26% below your rolling average — this could indicate:
- Tire pressure issues
- Air filter needs replacement
- Fuel system issue
- Change in driving conditions (heavy towing, headwinds)
- Mechanical problem developing
Check tire pressures first, then review recent driving conditions.
油耗报告格式
当用户询问“我的油耗情况如何?”或“生成油耗报告”时:
⛽ Fuel Report — [Vehicle]
Last fill-up: [X] MPG on [date]
Rolling average: [X] MPG (last 10 fills)
Trend: [improving/stable/declining]
Total fuel cost (YTD): $[X]
Total gallons (YTD): [X]
Average cost per gallon: $[X]
非满箱加油
若用户未加满油箱,则标记partial_fill: true。该条记录将不计入油耗计算(数据不准确),但仍记录加油费用和加油量。
实际支出追踪
记录用户实际支付的维保费用,以建立精准的支出档案。
费用记录流程
当用户记录完成一项维保服务时:
- 确认服务详情后,询问:“您最终支付了多少费用?”(若用户已主动提供则直接记录)
- 存储为
actual_cost在 service_history 条目中 - 如果他们不知道或不想分享,就留空(null)——不要阻碍日志记录
服务历史记录条目(含费用)
{
"service_id": "oil_filter",
"date": "2025-11-15",
"miles": 58000,
"hours": null,
"notes": "Full synthetic, Motorcraft filter",
"actual_cost": 125.00,
"cost_type": "shop",
"provider": {
"id": "jims_diesel",
"name": "Jim's Diesel Repair"
}
}
cost_type值:diy、shop、dealer、warranty、recall(免费)
支出分析
按需跟踪和报告:
- 按车辆、按年:"您今年在 F-350 上花费了 $X"
- 实际与预估对比:比较
actual_cost与计划中的成本估算 - 分类明细:按服务类型分组(换油、滤清器、轮胎等)
- 历史总计:单车总维护支出
年度汇总
收到询问时或年度结束时:
💰 [Year] Maintenance Summary — [Vehicle]
Total spent: $[X]
Services performed: [count]
Biggest expense: [service] — $[X]
Average cost per service: $[X]
vs. Estimated: $[X] ([over/under] by [X]%)
保修跟踪
跟踪保修信息以了解覆盖范围,并在到期前获取提醒。
保修录入结构
{
"type": "factory_powertrain",
"provider": "Ford",
"start_date": "2021-03-15",
"end_date": "2026-03-15",
"start_miles": 0,
"end_miles": 60000,
"coverage_details": "Engine, transmission, transfer case, driveshaft, axle assemblies",
"status": "active",
"contact_phone": "1-800-392-3673",
"claim_number": null,
"notes": ""
}
保修类型
| 类型 | 典型覆盖范围 |
|---|---|
原厂整车保修 | 除易损件外的所有部件,期限最短 |
原厂动力总成保修 | 发动机、变速箱、传动系统——期限较长 |
原厂防腐蚀保修 | 车身锈蚀穿孔——通常5年以上 |
原厂排放系统保修 | 排放系统组件——联邦法规要求主要部件保修为8年/8万英里 |
延保 | 第三方或制造商延长保修 |
零部件保修 | 来自商店/经销商的特定零部件(例如:"新发电机,2年保修") |
人工保修 | 商店对特定维修的人工保证 |
到期提醒
在每次服务审查时检查保修。当满足以下条件时发出提醒:
- 距离 end_date3个月内,或
- 距离 end_miles3,000英里内(以先到者为准)
提醒格式:
⚠️ WARRANTY EXPIRING SOON
[Vehicle] — [Warranty type] from [Provider]
Expires: [date] or [miles] miles (whichever first)
Remaining: ~[X] months / ~[X] miles
Coverage: [details]
💡 Schedule any warranty-covered concerns before expiration!
保修覆盖范围检查
当用户询问"这个在保修范围内吗?"或标记到期服务时:
- 检查车辆的所有有效保修
- 将服务类型与保修覆盖范围匹配
- 如果可能被覆盖:"根据您从[提供商]获得的[保修类型](有效期至[日期]),这可能属于保修范围。请在自费前联系他们。"
状态值
有效— 当前生效即将到期— 在警报阈值内已过期— 超过结束日期或结束里程数已申请— 已提交保修索赔
出行前 / 季节性检查清单
当提及出行或季节性变化时,生成针对特定车辆的检查清单。
触发短语
当用户说类似以下内容时激活:
- “我要去旅行了” / “公路旅行” / “要去[地点]”
- “这周末要拖车” / “把房车拖到[地方]”
- “准备过冬了” / “该进行冬季保养了”
- “春天要来了” / “该解除冬季保养了”
- “这周末要越野” / “越野骑行”
检查清单生成
通过结合以下内容构建检查清单:
- 逾期/即将到期的服务— 从该车辆的服务记录中提取
- 目的地的天气情况— 若提供地点,请检查天气预报(炎热、寒冷、雨天、雪天、海拔)
- 出行类型相关物品— 根据他们的活动内容
- 季节性物品— 基于当前日期和地点
拖挂检查清单(卡车 + 拖车/房车)
🚛 Pre-Tow Checklist — [Truck] + [Trailer/RV]
TRUCK:
□ Engine oil level
□ Coolant level
□ DEF level (diesel)
□ Tire pressures (loaded spec: front [X] psi, rear [X] psi)
□ Brake controller connected and tested
□ Transmission temp gauge working
□ All lights working
□ Mirrors adjusted for towing
HITCH/CONNECTION:
□ Fifth wheel / gooseneck / ball mount secured
□ Pin box / kingpin locked (verify with tug test)
□ Safety chains crossed under tongue
□ Breakaway cable attached
□ 7-pin connector — test all lights (brake, turn, running, reverse)
□ Breakaway battery charged
TRAILER/RV:
□ Tire pressures (spec: [X] psi) — check age on sidewall
□ Wheel lug torque (spec: [X] ft-lbs)
□ Slides fully retracted and locked
□ Awning secured
□ Fridge set to travel mode (or propane off)
□ All compartments latched
□ Stabilizer jacks fully up
□ Roof vents closed
□ TV antenna down
□ Water heater bypass (if applicable)
□ LP gas tank valve position (check local laws for travel)
□ Cargo secured inside (open fridge, cabinets after arrival)
OVERDUE/DUE SERVICES:
[List any from service review]
季节性检查清单
入冬前 / 冬季防护准备:
- 防冻液保护等级(使用比重计测试)
- 电池负载测试(寒冷天气下容量降低30-50%)
- 雨刮片和玻璃水(需耐低温)
- 轮胎状况(使用四季胎还是冬季胎?)
- 缸体加热器是否工作正常(柴油卡车)
- 房车:完整的冬季防护程序(吹净管路、添加房车专用防冻液、排空热水器、设置旁路)
- 船只:发动机冬季防护、气缸防锈处理、燃油稳定剂处理、排空水系统
入夏前 / 解除冬季防护:
- 空调系统检查(在需要使用前先运行测试)
- 冷却液液位及状况
- 房车:解除水系统冬季防护、清洁消毒水箱、检查空调机组
- 检查轮胎气压(高温会使胎压升高)
- 检查皮带和软管(高温会加速磨损)
出行前检查(常规项):
- 所有液位
- 轮胎气压及状况
- 灯光与信号装置
- 制动系统(目视检查或近期维护记录)
- 雨刮片
- 应急工具包(跨接电缆、手电筒、急救包)
- 有效行驶证及保险单
里程预估
计算行驶频率并预估未来保养到期时间
计算要求
需包含2个以上数据点且记录于里程历史记录至少间隔14天
average_miles_per_month = (latest_miles - earliest_miles) / months_between_readings
使用完整历史数据获取稳定平均值,若驾驶模式发生显著变化,则需加大近期数据的权重
保养日期预估
针对每项保养项目:
- 计算剩余里程:
下次保养里程 - 当前里程 - 预计月份:
剩余里程 / 每月平均行驶里程 - 预计日期:
今天 + 预计月份数 - 同时独立检查基于时间的间隔
包含在服务回顾中:
📅 Projected Service Dates
- Oil Change: ~[Month Year] (at ~[X] miles)
- Fuel Filters: ~[Month Year] (at ~[X] miles)
- Trans Fluid: ~[Month Year] (at ~[X] miles)
预算预估
当被问及或包含在回顾中时:
💰 Next 6-Month Budget Forecast — [Vehicle]
At [X] miles/month, expect:
- Oil change (~[Month]): $[X]
- Fuel filters (~[Month]): $[X]
- Cabin air filter (~[Month]): $[X]
Total estimated: $[X]
数据不足
如果数据点少于2个或读数过于接近:
- 备注:“需要更多里程历史数据才能预估日期——下次检查后将有可用数据”
- 仍显示基于里程的预估(不含日期)
服务提供商跟踪
跟踪服务执行地点,便于参考和管理提供商。
记录提供商信息
记录已完成服务时,可选询问:
- 店铺名称(或“与上次相同”/“自行维修”)
- 位置(城市/地址)
- 电话号码
- 满意度评分(1-5分)
- 零件保修期(月数)
- 人工保修期(月数)
别让这成为负担——如果他们只是说“换了机油”,先记录服务,然后顺便问问地点。如果他们看起来不感兴趣,就跳过。
服务商存储
服务商存储在两个地方:
- 全局
服务商数组位于 state.json 根目录——可在不同车辆间复用:
{
"id": "jims_diesel",
"name": "Jim's Diesel Repair",
"location": "123 Main St, Mesa, AZ",
"phone": "480-555-1234",
"specialties": ["diesel", "trucks"],
"rating": 5,
"notes": "Great with Power Stroke engines"
}
- 每个 service_history 条目——通过
id引用,并可添加服务特定的保修信息:
{
"provider": {
"id": "jims_diesel",
"name": "Jim's Diesel Repair",
"parts_warranty_months": 12,
"labor_warranty_months": 6
}
}
服务商查询
处理类似问题:
- "我上次在哪里换的机油?" → 在服务历史中搜索最近的机油滤清器记录,返回服务商
- "我是在哪家店做的变速箱保养?" → 按 service_id 搜索
- "显示我在吉姆店的所有服务记录" → 按 provider.id 筛选服务历史
- "吉姆的电话号码是多少?" → 在服务商数组中查找
- "和上次同一家店" → 使用最近一条服务历史记录中的服务商
税务抵扣集成
对于标记为业务用途的车辆,帮助追踪可抵扣的维护费用。
配置
在 state.json 中针对每辆车:
{
"business_use": true,
"business_use_percent": 50
}
如果business_use为true且未设置百分比,则假定为 100%。
抵扣追踪
当一项服务在业务用途车辆上完成,且具有actual_cost时:
- 计算可抵扣部分:
实际成本 × (业务使用百分比 / 100) - 向用户说明:
💼 Tax Note: This $450 trans fluid service is 50% business use. Deductible amount: $225.00 (vehicle maintenance expense) - 建议记录到税务专家技能:
Want me to log this to your tax deductions? → $225.00 as vehicle maintenance expense
与税务专家技能集成
如果用户确认,参考skills/tax-professional/SKILL.md并记录到data/tax-professional/YYYY-expenses.json:
{
"date": "2026-01-15",
"category": "vehicle_maintenance",
"description": "Trans fluid service — F-350 (50% business use)",
"amount": 225.00,
"vehicle": "f350",
"full_cost": 450.00,
"business_percent": 50,
"receipt": false
}
年度税务摘要
根据请求或在报税时:
💼 [Year] Business Vehicle Deductions — [Vehicle]
Total maintenance costs: $[X]
Business use: [X]%
Deductible amount: $[X]
Services included: [count] services
紧急信息卡
存储并快速检索关键车辆信息,用于路边紧急情况、零件查找或快速参考。
紧急信息结构
在 state.json 中每辆车:
{
"emergency_info": {
"vin": "1FT8W3BT0MED12345",
"insurance_provider": "State Farm",
"policy_number": "SF-123456789",
"roadside_assistance_phone": "1-800-555-1234",
"tire_size_front": "275/70R18",
"tire_size_rear": "275/70R18",
"tire_pressure_front_psi": 65,
"tire_pressure_rear_psi": 80,
"oil_type": "15W-40 CK-4 Full Synthetic",
"oil_capacity": "15 quarts",
"coolant_type": "Motorcraft Orange VC-3DIL-B",
"def_type": "API certified DEF",
"trans_fluid": "Motorcraft Mercon ULV",
"tow_rating_lbs": 20000,
"gvwr_lbs": 14000,
"gcwr_lbs": 37000,
"payload_lbs": 4300,
"key_fob_battery": "CR2450",
"fuel_type": "Diesel (Ultra Low Sulfur)",
"fuel_tank_gallons": 48,
"lug_nut_torque_ft_lbs": 165,
"jack_points": "Frame rails, front and rear",
"notes": ""
}
}
快速访问查询
即时响应:
- “我的车辆识别号码是什么?” → 返回车辆识别号码
- “我的卡车轮胎规格是什么?” → 轮胎尺寸和胎压
- “我的卡车用什么机油?” → 机油类型和容量
- "保险信息?" → 保险公司、保单号、联系电话
- "道路救援号码?" → 电话号码
- "我的拖拽额定值是多少?" → 拖拽额定值、车辆总重额定值、总组合重量额定值
- "钥匙遥控器电池?" → 电池型号
- "轮毂螺母扭矩?" → 扭矩规格
紧急信息卡格式
当被问及"紧急信息"或"车辆信息卡"时:
🚨 Emergency Info — [Vehicle Label]
━━━━━━━━━━━━━━━━━━━━━━━━━━━
VIN: [vin]
Insurance: [provider] — Policy #[number]
Roadside: [phone]
🔧 Specs
Tires: F:[size] R:[size]
Pressure: F:[X]psi R:[X]psi
Oil: [type] ([capacity])
Coolant: [type]
Fuel: [type] ([tank] gal)
Key fob battery: [type]
📏 Ratings
Tow: [X] lbs | GVWR: [X] lbs
GCWR: [X] lbs | Payload: [X] lbs
Lug torque: [X] ft-lbs
━━━━━━━━━━━━━━━━━━━━━━━━━━━
信息填充
添加新车时,收集现有信息。许多规格可根据年份/品牌/型号查询。让用户逐步填写个人信息(保险、道路救援号码)。字段在填写前可留空。
每英里成本分析
计算车辆总拥有成本,以每英里为基础。
计算要求
需要至少包含2个数据点的里程历史记录。
total_miles_driven = latest_miles - earliest_miles (from mileage_history)
Maintenance cost per mile = total_actual_costs / total_miles_driven
Fuel cost per mile = total_fuel_cost / total_miles_driven
Total operating cost per mile = (total_actual_costs + total_fuel_cost) / total_miles_driven
报告格式
当被问及"每英里成本"或"运营成本"时:
📊 Cost Per Mile — [Vehicle]
Period: [earliest date] to [latest date] ([X] miles driven)
Maintenance only: $[X.XX]/mile
Fuel only: $[X.XX]/mile (if fuel tracking active)
Total operating: $[X.XX]/mile
💡 National averages (approximate):
Cars: ~$0.10/mi maintenance, ~$0.12/mi fuel
Trucks: ~$0.14/mi maintenance, ~$0.20/mi fuel (diesel)
Heavy-duty diesel (towing): ~$0.18/mi maintenance, ~$0.25/mi fuel
车队概览
如果追踪多辆车,显示对比:
📊 Fleet Cost Per Mile
[Vehicle 1]: $[X.XX]/mi (maintenance) | $[X.XX]/mi (total)
[Vehicle 2]: $[X.XX]/mi (maintenance) | $[X.XX]/mi (total)
Fleet average: $[X.XX]/mi
注意事项
- 仅包含提供
实际成本记录时(跳过空值) - 若无燃料数据,则仅显示维护成本
- 若数据周期较短(<3个月或<1,000英里),则发出警告:"数据有限——随时间推移将变得更准确"
- 随着昂贵的一次性服务成本分摊到更多里程上,每英里成本自然下降
里程检查(Cron触发)
单个cron任务运行每周一次(最高可能频率),并根据每辆车的个体检查频率和上次检查日期检查哪些车辆需要进行登记。它也执行每月召回检查。
提示:"机械师技能:里程检查"
当此任务触发时:
- 读取
<工作空间>/data/mechanic/state.json - 对于每辆车,检查其是否需要进行登记:
- 比较
上次检查日期对比检查频率 - 每周:若距上次检查已过7天或以上,则需检查
- 每两周:若距上次检查已过14天或以上,则需检查
- 每月:若距上次检查已过30天或以上,则需检查
- 每季度:若距上次检查已过90天或以上,则需检查
- 比较
- 每月召回检查:若距任何车辆的
recalls.last_checked(召回记录.最后检查时间)已过30天或以上,则从NHTSA API获取最新召回信息并更新状态 - 如果没有车辆需要检查且未发现新的召回信息,则回复
HEARTBEAT_OK(心跳正常)(静默跳过) - 如果有车辆需要检查,则询问仅针对需要检查的车辆
- 的当前读数
- 更新状态
上次签到时间当他们回应时 - 运行服务检查针对已更新的车辆(包含保修提醒、预测、召回)
里程检查设置
创建单个定时任务,设定为每周执行。系统将内部筛选到期车辆。时区请查阅<workspace>/USER.md文件。
定时表达式: 0 17 * * 0(每周日17点,按用户时区)
定时任务配置:
- 会话:独立运行,结果发送至用户聊天频道
- 执行指令:读取机械师技能,从
data/mechanic/state.json加载状态。检查每辆车的签到频率和上次检查时间以确定哪些车辆需要检查。同时,如果距离上次召回检查已超过30天,也需检查召回信息。如果没有车辆需要检查且没有新的召回信息,请回复 HEARTBEAT_OK。否则,仅询问到期车辆的当前读数,报告任何新的召回信息,然后进行服务审查,包括成本、保修警报和预测。请使用对话式语气。
更改频率
用户可以随时更改每辆车的检查频率:
- "每周检查我的越野摩托车" → 更新该车辆的
检查频率 - "少问关于卡车的情况" → 切换为季度检查
- "将所有车辆改为每月检查" → 更新所有车辆
更新车辆的检查频率于state.json文件中并确认更改。
里程/小时数更新
当用户报告里程数或小时数时(在任何情况下,不仅限于每月报告):
- 更新车辆的
当前里程和/或当前小时数 - 设置
上次更新为今天 - 追加到
里程历史:
{"date": "YYYY-MM-DD", "miles": <value>, "source": "user_reported"}
- 运行一次服务审查
服务审查
在任何里程/小时数更新后,分析车辆维护计划文件中的所有服务项目。
对于每个服务项目:
- 查找上次执行此服务的时间从
服务历史(通过服务ID匹配) - 如果从未执行过,则假定在里程0 / 小时0(车辆购置时)
- 针对所有适用的间隔计算:
自上次服务以来的里程数对比interval_milesmonths_since_servicevsinterval_monthshours_since_servicevsinterval_hours
- 分类:
- 🔴 已超期:超出**任意一项**间隔
- 🟡 即将到期:达到**任意一项**间隔的15%以内
- 🟢 正常:尚未到期
报告格式
完整报告(发现问题时):
🔧 Vehicle Service Report
━━━ [Vehicle Label] @ [miles] mi ━━━
⚠️ OPEN RECALLS
- [NHTSA ID] — [Component]: [Summary]
Remedy: [description] (FREE at dealer)
⚠️ WARRANTY ALERTS
- [Warranty type] from [Provider] — expires [date] or [miles] mi
[X] months / [X] miles remaining
🔴 OVERDUE
- [service] — [X] miles/months overdue
💰 DIY: $X | Shop: $X | Dealer: $X
[💼 [X]% deductible] (if business use)
🟡 DUE SOON
- [service] — due in ~[X] miles/months
💰 DIY: $X | Shop: $X | Dealer: $X
📅 PROJECTED SCHEDULE (next 6 months)
- [service] — ~[Month Year] at ~[X] mi ($[X] est.)
- [service] — ~[Month Year] at ~[X] mi ($[X] est.)
Total upcoming (6mo): ~$[X]
⛽ FUEL ECONOMY
Current: [X] MPG | Average: [X] MPG | Trend: [stable/improving/declining]
[⚠️ MPG Alert if applicable]
💰 SPENDING (YTD)
Maintenance: $[X] | Fuel: $[X] | Total: $[X]
Cost per mile: $[X.XX]
[Repeat for each vehicle]
🟢 [count] services current across all vehicles
一切正常(简要版):
🔧 All vehicles current ✅
[Vehicle] @ [mi] — next: [soonest service] at ~[miles] (~[Month])
No open recalls | Warranties current
当多项服务同时到期时,提供一个捆绑的预估总价,并建议在一次进厂维修中完成。
条件性章节
仅包含有相关数据的章节:
- 若无未完成的召回,则跳过召回章节
- 若无即将到期的保修,则跳过保修提醒章节
- 若无燃油历史数据,则跳过燃油经济性计算
- 若里程数据不足,则跳过预测分析
- 若无实际成本数据,则跳过支出统计
- 若非营业用车,则跳过税务备注
记录已完成的服务项目
当用户提及已完成服务时(例如:“刚换了机油”、“6.5万公里时换了燃油滤清器”):
- 确认具体车辆及服务项目
- 询问费用情况(自然口吻:“花了多少钱?”/“费用多少?”)
- 可选择性记录服务商(“在哪做的保养?”/“和上次是同一家店吗?”)
- 将信息添加至该车辆的
服务历史记录:
{
"service_id": "<matching id>",
"date": "YYYY-MM-DD",
"miles": <mileage_at_service>,
"hours": <hours_if_applicable>,
"notes": "<any details the user mentions>",
"actual_cost": <amount_or_null>,
"cost_type": "shop",
"provider": {
"id": "<provider_id>",
"name": "<provider_name>",
"parts_warranty_months": null,
"labor_warranty_months": null
}
}
- 若为营业用车,标注可抵扣部分
- 如适用,提供税务专员记录选项
- 确认已记录内容
- 重新计算该服务下次到期时间
即时查询功能
处理所有已追踪车辆的相关问题。若信息不明确,询问具体车辆
示例:
- “我下次换油是什么时候?” → 查询相关车辆信息
- “我的卡车用什么机油?” → 参考保养计划详情或紧急信息
- “我需要做什么保养?” → 全面检查,所有车辆
- “我刚跑到7万英里” → 更新里程数,执行检查
- “在6.1万英里时换了新轮胎” → 记录服务,从此开始跟踪轮胎换位
- “我刚买了一辆新车” → 引导添加车辆流程
- “换一次油要多少钱?” → 参考费用估算
- “最紧急的事情是什么?” → 对所有车辆进行优先级排序
- “我的卡车有召回吗?” → 检查NHTSA API
- “我的燃油经济性怎么样?” → 生成MPG报告
- “今年我花了多少钱?” → 支出汇总
- “我的保修还有效吗?” → 检查保修状态
- “这个在保修范围内吗?” → 将服务与有效保修匹配
- “我要去公路旅行了” → 出行前检查清单
- “我的变速箱油什么时候该换了?” → 里程预测
- “我上次在哪里换的油?” → 服务商查询
- “我的车辆识别号是什么?” → 紧急信息查询
- "查询我的车辆识别码" / "解码我的车辆识别码" → 执行车辆识别码解码,显示规格
- "这是我的车辆识别码:[VIN]" → 解码、存储、自动填充、执行召回检查
- "我的轮胎规格是什么?" → 紧急信息
- "每英里成本?" → 运营成本分析
- "未来6个月我的保养费用将是多少?" → 预算预测
环境意识
检查<工作空间>/用户.md以获取用户位置并据此定制建议:
炎热气候(沙漠、南部各州):
- 高温会显著缩短电池寿命
- 轮胎紫外线损伤——建议为停放车辆使用轮胎罩
- 冷却系统承受更大压力
- 橡胶部件(皮带、软管、密封件)老化更快
- 通风口和排气管中可能出现泥蜂/黄蜂(尤其是房车)
寒冷气候(北部各州、山区):
- 房车和船只的冬季防护至关重要
- 寒冷天气下电池容量会降低
- 检查防冻液防护等级
- 寒冷季节前检查供暖系统/暖气设备
多尘/越野环境:
- 发动机和车厢空气滤清器需要更频繁检查
- 发电机空气滤清器(房车)
- 检查等速万向节防尘套(全地形车/多功能车)
沿海/海洋环境:
- 注意腐蚀问题
- 增加底盘清洗频率
- 检查电气连接
费用估算
标注逾期或即将到期服务时务必包含:自行维修
- ——仅零件成本维修店
- ——独立维修点/专业店铺经销商
- ——品牌授权经销商必须包含所有
费用说明关于高额故障风险的警示信息warnings about expensive failure scenarios.
当提供一批服务时,请给出一次店内服务捆绑的总价估算。
重要通用注意事项
- 变速箱冲洗— 许多现代变速箱(特别是福特10R系列、CVT无级变速器)应仅进行放油和加注,切勿冲洗。务必查阅制造商建议。
- 房车车顶— 进水是房车的头号杀手。务必强调密封剂检查和车顶检查。
- 轮胎使用年限— 无论胎纹深度如何,轮胎应在5-6年后更换,尤其是房车/拖车轮胎。
- 严苛使用条件— 如果客户进行拖曳、重载、越野驾驶或在极端温度下行驶,无论他们是否意识到,几乎总是属于严苛/特殊条件下的保养计划。
- 零件编号— 在保养计划详情中注明原厂零件编号。这样用户就能找到同等的副厂零件。
- 季节性项目— 根据用户所在地和一年中的时间,标记防冻处理、解冻处理以及季节性准备工作。
- 发电机运行小时数— 与车辆行驶里程分开记录。发电机有独立的保养周期。
- 分离式电池(拖车用)—— 常被遗忘。应纳入拖车/房车检查中。
- 召回完成情况—— 在经销商处始终免费。切勿为召回维修付费。
- 保修工作—— 记录所有事项。保留收据。在维修历史中注明保修索赔编号。
- 燃油追踪一致性—— 为准确计算每加仑英里数,每次加油应保持相同油量(加满)。标记部分加油情况。


微信扫一扫,打赏作者吧~