核心用法
kiaaccess-curl 是一项面向技术用户的车辆远程控制技能,通过纯 curl 命令直接与 Kia 官方 Owners API(api.owners.kia.com)通信。用户需先完成一次性 MFA(短信/邮件验证码)认证流程,获取持久的 rmtoken 刷新令牌,后续即可免交互续期 sid 会话令牌。支持的操作涵盖:查询车辆列表、读取实时/缓存状态、获取 EV 电池信息、远程锁车/解锁、启动/停止空调、以及管理充电计划。
关键配置包括三枚环境变量:KIA_USERNAME、KIA_PASSWORD 和稳定的 KIA_DEVICE UUID。所有请求必须携带 RFC-1123 格式的 date 头部,且 HTTP 200 不代表成功,需解析响应体中的 status.statusCode == 0 作为唯一成功标识。
显著优点
- 零依赖轻量化:无需安装 Node.js、Python 或 MCP 服务器,单条
curl即可完成车辆控制,极适合 CI/CD 流水线或边缘设备。 - 官方 API 直通:直接调用 Kia 后端服务,绕过移动端 App 的复杂中间层,响应结构清晰、字段语义明确。
- 一次认证长期可用:
rmtoken持久化后,后续authUser调用无需二次 MFA,兼顾安全性与自动化便利。 - 完整 EV 支持:针对 EV9 等电动车型,提供充电状态、目标 SOC 设置、立即充电/预约充电等细分接口。
- 验证文档完备:所有端点均经过 2024 EV9 实车测试,附带
jq处理脚本与字段差异对比方法,降低调试成本。
潜在缺点与局限性
- 非标准认证机制:
sid/rmtoken双令牌体系、header 中的date时戳要求、以及 HTTP 200 掩码失败等设计,均与主流 OAuth2/JWT 规范不符,学习曲线陡峭。 - 命令异步确认复杂:API 返回
statusCode: 0仅表示"已受理",实际执行结果需轮询cmm/gvi并 diff 特定字段(如doorLock、airCtrl),且需排除syncDate干扰,开发负担较重。 - 温控指令不确定性:实测
rems/start的设定温度可能被车辆系统覆盖(如请求 70°F 实际执行 72°F),无法保证精确控制。 - 账户风控敏感:连续登录失败会触发
enforceRecaptcha,导致 shell 自动化永久失效,需人工介入解除。 - 无官方 SLA 保障:作为非公开文档化的内部 API,存在随时变更或限流风险。
适合的目标群体
- 开发者与 DevOps 工程师:需要集成车辆状态到监控面板、或将充电控制编入 home automation 脚本的技术用户。
- CLI 重度用户:偏好终端交互、追求最小工具链的极客群体。
- MCP 调试场景:当
kiaaccess-mcp服务器异常时,用于快速验证 API 可用性或排查认证问题。 - 一次性操作需求:临时查询"车是否锁了"、"EV 电量多少"等对话式请求,无需常驻服务。
使用风险
- 凭证泄露风险:
rmtoken等同于账户密码,明文存储于~/.kiaaccess-mcp/curl-session.json需严格chmod 600,切勿提交至版本控制。 - 误操作车辆:
rems/door/unlock等端点无二次确认,脚本逻辑错误可能导致车辆意外解锁。 - API 速率限制:高频轮询
cmm/gvi确认命令状态可能触发限流,建议间隔 30–60 秒。 - 路径冲突:
~/.kiaaccess-mcp/session.json为 MCP 服务器专用,curl 技能写入会损坏其会话状态,强制双重 MFA。 - 地区与车型差异:文档基于北美 EV9 验证,其他市场或燃油车型字段可能不同。