用途
pp-jimmy-johns 是一个面向 Jimmy John's 点餐 API 的命令行工具(CLI),二进制名称为 jimmy-johns-pp-cli。它让用户和智能体能够在终端中完成浏览门店与菜单、管理购物车、下单以及查看奖励和已保存支付方式等操作。该工具由 Jimmy John's 位于 www.jimmyjohns.com/api 的专有 API 驱动。
前置条件与安装
使用前必须先安装 CLI 并验证。默认安装方式为 Printing Press 安装器,二进制默认安装到 macOS/Linux 的 $HOME/.local/bin,Windows 的 %LOCALAPPDATA%\Programs\PrintingPress\bin:
npx -y @mvanhorn/printing-press-library install jimmy-johns --cli-only
验证:jimmy-johns-pp-cli --version。需确保安装目录位于调用该技能的 agent/运行时的 $PATH 中。
如果 npx 安装失败(如无 Node、离线等),可回退到直接 Go 安装(需要 Go 1.26.6 或更新版本),安装到 $GOPATH/bin(默认 $HOME/go/bin):
go install github.com/mvanhorn/printing-press-library/library/food-and-dining/jimmy-johns/cmd/jimmy-johns-pp-cli@latest
如果安装后 --version 报“command not found”,说明运行时无法在 $PATH 上看到二进制目录,须在验证成功前停止使用该技能命令。
主要能力(命令参考)
account — 用户账户、个人资料、地址和已保存支付方式:
account current获取已认证用户的个人资料(姓名、邮箱、偏好)account delivery-addresses列出已保存的配送地址account login用邮箱+密码认证,设置 JJ 会话 Cookieaccount saved-payments列出已保存的支付方式account web-token刷新 Web 会话令牌(SPA 内部调用)
menu — 菜单商品、筛选器和修饰符选项:
menu product-filters列出可用的菜单筛选维度(分类、饮食标签、过敏原)menu product-modifiers列出特定商品的修饰符组(面包、配料、加料)menu products列出当前门店的菜单商品(三明治、配菜、饮料、饼干、餐饮)
order — 购物车与订单管理:
order add-items单次调用向当前购物车添加一个或多个商品order current获取当前进行中的订单/购物车order upsell获取当前购物车的加售建议(配菜、饮料、饼干)
rewards — Freaky Fast Rewards 积分余额与目录:
rewards catalog列出当前积分余额可兑换的奖励rewards summary获取已认证用户的奖励积分余额和近期活动
stores — 门店位置与运营信息:
stores get-disclaimers获取门店特定免责声明stores list列出门店,接受地址搜索或筛选,返回含营业时间、距离、自取/配送标志的门店
system — 系统工具(门店查找器的 Google Maps 签名)。
使用方式
认证设置
该 CLI 使用浏览器会话。先在 Chrome 中登录 jimmyjohns.com,然后:
jimmy-johns-pp-cli auth login --chrome
或导入已有的浏览器抓包:
jimmy-johns-pp-cli auth login --cookies-file storage-state.json
--cookies-file 接受 Playwright storage-state JSON 或原始 Cookie: 头文本文件。Chrome 路径需要 Cookie 提取工具(pip 安装 pycookiecheat,或 Homebrew 安装 cookies)。运行 jimmy-johns-pp-cli doctor 验证设置。
智能体模式
任意命令加 --agent 会展开为 --json --compact --no-input --no-color --yes。特性包括:可管道化(stdout 输出 JSON,stderr 输出错误)、可筛选(--select 保留字段子集,点路径可深入嵌套结构,数组逐元素遍历)、可预览(--dry-run 显示请求但不发送)、离线友好(sync/search 命令在可用时可使用本地 SQLite 存储)、非交互(从不提示,所有输入为标志)、显式重试(仅在已存在的创建应计为成功时使用 --idempotent)。
响应封装
从本地存储或 API 读取的命令会将输出包装在溯源封装中:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
从 .results 解析数据,从 .meta.source 判断是实时还是本地。人类可读的 N results (live) 摘要仅在 stdout 为终端且未设置机器格式标志时打印到 stderr。
路径与状态
- 单次调用用 --home <dir>,或用 JIMMY_JOHNS_HOME=<dir> 将所有四类路径重定位到一个根下。
- 仅在特定类型必须分离时使用各类环境变量:JIMMY_JOHNS_CONFIG_DIR、JIMMY_JOHNS_DATA_DIR、JIMMY_JOHNS_STATE_DIR、JIMMY_JOHNS_CACHE_DIR。
- 解析顺序为:各类环境变量、--home、JIMMY_JOHNS_HOME、XDG、平台默认。
- config 包含 config.toml 和 profiles;data 包含 credentials.toml、data.db、cookies 和 auth sidecars;state 包含持久化查询、jobs 和 teach.log;cache 包含可再生成的 HTTP/缓存文件。
- 存储的机密位于 data 目录下的 credentials.toml。
对于 MCP,通过 MCP 主机配置传递重定位,MCP 二进制不会继承 CLI 标志。
查找命令
当知道想做什么但不知道用哪个命令时,可直接询问 CLI:jimmy-johns-pp-cli which "<用你自己的话描述的能力>"。退出码 0 表示至少一个匹配,退出码 2 表示无自信匹配,可回退到 --help 或使用更窄查询。
自动学习
该 CLI 内置自捕获学习循环。每次调用都会在本地记录日志;失败标志后跟更正重试会自动派生 flag_alias 候选;对没有操作手册的查询族执行 teach 会从会话日志自动合成 playbook_candidate。工作流程包括:先 recall(在任何发现之前)、根据决策树读取候选/操作手册/注释/结果/警告、始终读取警告、以及在最终确定响应后无条件 teach。候选是“先试后确认”的,从不是事实,须按 next_action 两步执行。
新鲜度契约
该 CLI 仅为已注册的门店支撑读取命令路径提供有界新鲜度。在 --data-source auto 模式下,这些路径检查 sync_state 并可能在读取本地数据前执行有界刷新;--data-source local 从不刷新;--data-source live 读取 API 且不修改本地存储。设置 JIMMY_JOHNS_NO_AUTO_REFRESH=1 可跳过新鲜度钩子。覆盖路径包括 menu、menu get、menu list、menu search、stores、stores get、stores list、stores search。
适用场景与限制
适用于在终端或智能体工作流中操作 Jimmy John's 点餐、菜单浏览、下单、奖励和门店查询等场景。该工具依赖从已登录 Chrome 会话导入的 Cookie 进行认证,且需要可用的网络或本地同步数据。关于具体的收费标准、价格、平台支持细节等,资料暂未提供。