关于 track17
通过随附的 Python 命令行工具使用 17TRACK 跟踪包裹,涵盖轮询、包裹管理和经过身份验证的 Webhook,并将数据保存在本地,对远程变更设有明确限制。
主要功能
- 01按单号和承运商管理包裹
- 02轮询跟踪状态与配额
- 03接收签名验证的 Webhook
- 04保存并去重跟踪更新
- 05区分事件时间与刷新时间
适用场景
- 01查询不同承运商的包裹状态
- 02处理经过身份验证的 17TRACK 推送
- 03审查未完成的同步,避免误判为无更新
MCP 相关
输入介绍了 Skill 和命令行工作流,但未说明其与 MCP 的集成。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ tristanmanchester/ agent-skills --skill track17安装后在 Claude Code 中输入/track17确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdscripts/track17.pytests/test_review_regressions.pytest_track17.py详细介绍
使用 17TRACK 跟踪包裹
将 SKILL_DIR 解析为此技能的安装目录。请使用随附的 CLI,不要自行重建存储或签名处理逻辑。命令会返回 JSON;非零退出状态表示失败或同步未完成。
设置
通过宿主的密钥存储/环境变量设置 TRACK17_TOKEN;切勿打印它。将 TRACK17_DATA_DIR 设置为仓库外的私有绝对路径。然后运行:
python3 "$SKILL_DIR/scripts/track17.py" init
python3 "$SKILL_DIR/scripts/track17.py" --help
此版本使用新的本地架构。包含 packages 的旧数据库会被拒绝,且不会被修改。请选择新的数据目录,在本地检查/导出旧记录,并且只注册用户仍需要的包裹。不要删除旧数据库,也不要自动重新注册全部包裹:这可能会消耗服务商配额。
常规工作流
除非需要推送通知,否则优先使用轮询。在添加或移除任何包裹之前,先读取当前包裹列表。请通过跟踪号码加承运商代码确定包裹身份,不要猜测本地 ID。
python3 "$SKILL_DIR/scripts/track17.py" list
python3 "$SKILL_DIR/scripts/track17.py" carriers-search DHL
python3 "$SKILL_DIR/scripts/track17.py" add RR123456789CN --label "Headphones"
python3 "$SKILL_DIR/scripts/track17.py" sync
python3 "$SKILL_DIR/scripts/track17.py" status RR123456789CN --carrier 3011 --refresh
python3 "$SKILL_DIR/scripts/track17.py" quota
上述承运商号码仅为示例,并非通用默认值。如果自动检测无法确定承运商,请使用 --carrier;仅当承运商需要额外信息时,才使用 --param。注册成功不代表跟踪事件已经可用。
stop、retrack 和 remove 都需要跟踪号码和 --carrier。除非明确提供 --delete-remote,否则 remove 只会在本地移除。执行远程删除前,请先确认。网络故障导致结果不明确后,请在重试更改操作前核对服务商状态;客户端不会自动重放写入操作。
已验证身份的 Webhook
17TRACK 会将原始请求体字节后接 / 和 API 安全密钥,再使用 SHA-256 计算签名。签名通过 sign 标头传入。此辅助工具使用 TRACK17_TOKEN 作为该密钥;切勿另行编造不相关的 Webhook 密钥,也不要用 HMAC 替代服务商的算法。
对于已捕获的投递,请保持请求体不变,并提供其真实签名:
python3 "$SKILL_DIR/scripts/track17.py" ingest-webhook --file delivery.json --signature "$DELIVERY_SIGN"
对于推送投递:
python3 "$SKILL_DIR/scripts/track17.py" webhook-server --port 8789
接收器绑定到环回地址。请在其前方配置有意设置的 TLS 反向代理,并保留 sign 和原始请求体。不要随意公开开发服务器。缺失、无效或重复的身份验证标头都会导致请求失败;只有在数据库事务提交后,才会确认已接受的投递。存储失败会返回失败响应,以便服务商重试。没有无签名导入路径,也没有延迟处理的收件箱处理器。
相同的投递具有幂等性。日期较早的更新不会覆盖日期较新的快照。但这不代表能普遍确定顺序:时间戳无法解决时间相同的更正,也无法证明无日期更新的新鲜度。请分别报告事件时间和本地接收时间。
报告
优先关注已送达、派送中、待取件、投递失败和异常状态。请注明承运商、事件时间和最近一次成功刷新时间;区分已保存状态与服务商刚返回的响应。将部分同步和缺失事件视为不完整证据,而非“没有变化”。切勿根据无关包裹或过时快照推断送达日期。
来源和检查
17TRACK API 文档经审阅于 2026-09-13,记录了签名方案,并明确说明 v2.2 仍在线。此辅助工具有意保留该受支持的响应契约;v2.4 并非只需更改版本字符串即可直接替换,因为其注册字段有所不同。
运行离线和环回 HTTP 回归测试:
python3 -m unittest discover -s "$SKILL_DIR/tests" -v
updated_at 记录快照变更;last_refreshed_at 记录最近一次已接受的轮询响应,包括快照未变的情况。两者都不是承运商事件时间。Webhook 接收/去重不计为成功轮询。