{"id":"64c30620-9203-4d4a-a2be-cd6dc902884e","entityType":"agent","slug":"clawhub-meituan-tech-mt-paotui-for-client","name":"美团跑腿","canonicalUrl":"https://www.xpersona.co/agent/clawhub-meituan-tech-mt-paotui-for-client","canonicalPath":"/agent/clawhub-meituan-tech-mt-paotui-for-client","generatedAt":"2026-10-10T15:52:50.532Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T13:09:00.904Z","emptyReason":null},"description":"美团跑腿下单助手。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。 Skill: 美团跑腿 Owner: meituan-tech Summary: 美团跑腿下单助手。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。 Tags: latest:1.0.5 Version history: v1.0.5 | 2026-09-20T08:19:23.002Z | user **mt-paotui-for-client 1.0.5 Change Summary** - Rebuilt project with dist/和passport-auth环境准备、鉴权、ru","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.4K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s172cvmv1t8e5hqav8jvf9mfjd84s3z8:mt-paotui-for-client","sourceUrl":"https://clawhub.ai/meituan-tech/mt-paotui-for-client","homepage":"https://clawhub.ai/meituan-tech/skills/mt-paotui-for-client","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/meituan-tech/mt-paotui-for-client","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/meituan-tech/skills/mt-paotui-for-client","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"美团跑腿下单助手。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T13:09:00.904Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T13:09:00.904Z","emptyReason":null},"stars":null,"forks":null,"downloads":1420,"packageName":null,"latestVersion":"1.0.5","tractionLabel":"1.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T13:09:00.904Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T13:09:00.904Z","lastCrawledAt":"2026-10-10T13:09:00.904Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T13:09:00.904Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.5","createdAt":"2026-09-20T08:19:23.002Z","changelog":"**mt-paotui-for-client 1.0.5 Change Summary** - Rebuilt project with dist/和passport-auth环境准备、鉴权、run.sh等文件重构和新增，实现全流程本地自包含。 - 大量移除dist/和vendor/cliguard相关旧实现，新增passport-auth、cliguard等依赖包、脚本和配置，完善免依赖外部Skill的授权模块。 - SKILL.md规范全面升级：细化安全门控、输出卡片模板和交互流程，格式化和隐私要求更严格，明确“手机号必须真实”及地址簿、POI使用场景。 - 工作流大幅调整，所有流程以本地CLI脚本及Token缓存驱动，全部下单前流程和授权过程自主可控。 - 支持帮取送必预览普通送和1v1急送两种服务类型并对比，和之前版本相比覆盖更多业务常见场景。 - 输出全程标准化，禁止过程","fileCount":19,"zipByteSize":1323467},{"version":"1.0.4","createdAt":"2026-05-28T07:15:09.782Z","changelog":"- Removed skill-card.md file. - Updated skill documentation: clarified Step 0登录授权流程，调整了命令描述与授权确认步骤（由轮询命令改为confirm_auth）。 - 精简了登录流程中的命令顺序和提示文案，使其与实际实现更一致。 - 未涉及功能变更，仅为文档规范和流程表达优化。","fileCount":12,"zipByteSize":1406680},{"version":"1.0.3","createdAt":"2026-05-27T09:15:31.420Z","changelog":"- 删除了 _meta.json 元数据文件。 - 优化了登录授权流程，明确依赖 pt-passport CLI、指明 Token 过期强制刷新及授权流程接口返回处理。 - 明确所有预览卡片的字段值均需来自接口实际返回，严禁使用示例值或硬编码。 - 帮买场景预览卡片展示优化：\"就近购买\"时只展示该描述，不展示地址。 - 帮忙场景预览费用卡片字段调整，费用等字段更贴合接口返回内容。 - 文件依赖和部分参数构造逻辑的描述细化，增强与其它技能配合的准确性。","fileCount":12,"zipByteSize":1398000},{"version":"1.0.2","createdAt":"2026-05-22T02:21:47.345Z","changelog":"Version 1.0.2 - Added _meta.json for improved metadata management. - Major update to SKILL.md for clearer user guidance, enhanced risk warnings, and streamlined workflow instructions. - Improved scenario classification and handling (帮取送/帮买/帮忙) for more precise user intent mapping. - Adjusted parameter filling and telephone selection logic for greater reliability. - Refined output templates for fee previews and operation messages according to scene type.","fileCount":11,"zipByteSize":1921311},{"version":"1.0.1","createdAt":"2026-05-07T03:33:57.454Z","changelog":"- 强制集成 skill-metric-reporter，所有操作前后必须执行埋点上报。 - 优化输出规范：严禁展示任何技术细节，所有内容严格格式化、逐行展示，信息分行不堆砌。 - 明确下单为不可逆操作，新增“两步确认”与“金额异常拦截”机制。 - 完善登录授权流程，细化手机/电脑端授权指引及授权状态轮询。 - 加强地址选择与信息收集流程，支持序号选择、关键词筛选和地址搜索，全部规范输出。 - 完善费用卡片模板与预览→确认→提交全流程，所有环节仅展示必要信息，提升安全与易用性。","fileCount":11,"zipByteSize":1920262},{"version":"1.0.0","createdAt":"2026-05-07T03:28:19.205Z","changelog":"meituan-paotui Skill Version 1.0.0 - Initial release supporting 美团跑腿一键下单，包括帮取送、帮买等多种工作场景。 - 严格执行两步确认和费用预览流程，避免误操作和消费风险。 - 全面格式化输出，信息分行展示，确保内容清晰易读。 - 地址、物品等关键信息自动识别与引导补充，提高交互效率。 - 强制使用 SKILLHUB_METRIC_REPORTER 进行全流程操作监控。","fileCount":11,"zipByteSize":1920261}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s172cvmv1t8e5hqav8jvf9mfjd84s3z8:mt-paotui-for-client","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-meituan-tech-mt-paotui-for-client/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-meituan-tech-mt-paotui-for-client/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-meituan-tech-mt-paotui-for-client/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-meituan-tech-mt-paotui-for-client/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-meituan-tech-mt-paotui-for-client/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-meituan-tech-mt-paotui-for-client/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T15:52:50.529Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-meituan-tech-mt-paotui-for-client/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-meituan-tech-mt-paotui-for-client/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-meituan-tech-mt-paotui-for-client/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-meituan-tech-mt-paotui-for-client/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T13:09:00.904Z","emptyReason":null},"readme":"Skill: 美团跑腿\n\nOwner: meituan-tech\n\nSummary: 美团跑腿下单助手。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。\n\nTags: latest:1.0.5\n\nVersion history:\n\nv1.0.5 | 2026-09-20T08:19:23.002Z | user\n\n**mt-paotui-for-client 1.0.5 Change Summary**\n\n- Rebuilt project with dist/和passport-auth环境准备、鉴权、run.sh等文件重构和新增，实现全流程本地自包含。\n- 大量移除dist/和vendor/cliguard相关旧实现，新增passport-auth、cliguard等依赖包、脚本和配置，完善免依赖外部Skill的授权模块。\n- SKILL.md规范全面升级：细化安全门控、输出卡片模板和交互流程，格式化和隐私要求更严格，明确“手机号必须真实”及地址簿、POI使用场景。\n- 工作流大幅调整，所有流程以本地CLI脚本及Token缓存驱动，全部下单前流程和授权过程自主可控。\n- 支持帮取送必预览普通送和1v1急送两种服务类型并对比，和之前版本相比覆盖更多业务常见场景。\n- 输出全程标准化，禁止过程\n\nv1.0.4 | 2026-05-28T07:15:09.782Z | user\n\n- Removed skill-card.md file.\n- Updated skill documentation: clarified Step 0登录授权流程，调整了命令描述与授权确认步骤（由轮询命令改为confirm_auth）。\n- 精简了登录流程中的命令顺序和提示文案，使其与实际实现更一致。\n- 未涉及功能变更，仅为文档规范和流程表达优化。\n\nv1.0.3 | 2026-05-27T09:15:31.420Z | user\n\n- 删除了 _meta.json 元数据文件。\n- 优化了登录授权流程，明确依赖 pt-passport CLI、指明 Token 过期强制刷新及授权流程接口返回处理。\n- 明确所有预览卡片的字段值均需来自接口实际返回，严禁使用示例值或硬编码。\n- 帮买场景预览卡片展示优化：\"就近购买\"时只展示该描述，不展示地址。\n- 帮忙场景预览费用卡片字段调整，费用等字段更贴合接口返回内容。\n- 文件依赖和部分参数构造逻辑的描述细化，增强与其它技能配合的准确性。\n\nv1.0.2 | 2026-05-22T02:21:47.345Z | user\n\nVersion 1.0.2\n\n- Added _meta.json for improved metadata management.\n- Major update to SKILL.md for clearer user guidance, enhanced risk warnings, and streamlined workflow instructions.\n- Improved scenario classification and handling (帮取送/帮买/帮忙) for more precise user intent mapping.\n- Adjusted parameter filling and telephone selection logic for greater reliability.\n- Refined output templates for fee previews and operation messages according to scene type.\n\nv1.0.1 | 2026-05-07T03:33:57.454Z | user\n\n- 强制集成 skill-metric-reporter，所有操作前后必须执行埋点上报。\n- 优化输出规范：严禁展示任何技术细节，所有内容严格格式化、逐行展示，信息分行不堆砌。\n- 明确下单为不可逆操作，新增“两步确认”与“金额异常拦截”机制。\n- 完善登录授权流程，细化手机/电脑端授权指引及授权状态轮询。\n- 加强地址选择与信息收集流程，支持序号选择、关键词筛选和地址搜索，全部规范输出。\n- 完善费用卡片模板与预览→确认→提交全流程，所有环节仅展示必要信息，提升安全与易用性。\n\nv1.0.0 | 2026-05-07T03:28:19.205Z | user\n\nmeituan-paotui Skill Version 1.0.0\n\n- Initial release supporting 美团跑腿一键下单，包括帮取送、帮买等多种工作场景。\n- 严格执行两步确认和费用预览流程，避免误操作和消费风险。\n- 全面格式化输出，信息分行展示，确保内容清晰易读。\n- 地址、物品等关键信息自动识别与引导补充，提高交互效率。\n- 强制使用 SKILLHUB_METRIC_REPORTER 进行全流程操作监控。\n\nArchive index:\n\nArchive v1.0.5: 19 files, 1323467 bytes\n\nFiles: config.json (44b), dist/index.js (104607b), node_modules/@sec/cliguard/core/cliguard-wrapper.js (35798b), node_modules/@sec/cliguard/core/cliguard.js (108193b), node_modules/@sec/cliguard/index.js (23761b), node_modules/@sec/cliguard/package.json (592b), node_modules/@sec/cliguard/README.md (544b), package.json (1022b), paotui.js (3266097b), passport-auth/reference.md (11836b), passport-auth/scripts/install.sh (1418b), passport-auth/scripts/qrcode-image.sh (1806b), references/commands.md (5793b), references/errors.md (4593b), references/params.md (4866b), run.sh (223b), skill-card.md (3116b), SKILL.md (21937b), _meta.json (139b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: MT-Paotui-For-Client\ndescription: 美团跑腿下单助手。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。\n---\n# 美团跑腿下单 Skill\n\n> ⚠️ **输出规范**：\n> 1. **严禁向用户展示任何技术细节**，包括但不限于：英文字段名、JSON 结构、命令行内容、脚本路径、技术参数。执行过程中的中间状态不展示，只展示用户需要知道的结果。\n> 2. **只展示用户意图相关的信息**：地址摘要（\"从 xxx 送到 xxx\"）、物品名称、费用卡片、预计时效、操作结果。费用卡片按固定模板逐行展示（见 Step 5）。\n> 3. **所有输出必须格式化展示，严格换行**：每个字段独占一行，用空行分隔。禁止将多条信息挤在一行。\n> 4. **手机号必须真实**：脱敏号码（含 `****`）严禁传入下单接口，真实号码获取规则详见 Step 3。\n>\n> 5. **严禁在回复任何位置展示内部过程描述**（开头、中间、结尾均禁止）。如\"地址簿拉取成功\"\"POI搜索到了多个结果\"\"匹配不到地址簿\"\"同时还需要确认\"\"一起问\"\"已匹配该地址\"等均属内部过程，严禁出现。用户只需要看到问题、选项和结果，不需要知道后台做了什么操作。\n\n> ⚠️ **强制重读**：每次会话第一次触发时，必须重新读取本文件，不得依赖历史记忆。\n\n## When to Use\n\n帮取送、帮买、餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。用户说出\"跑腿\"、\"帮我送\"、\"帮我取\"、\"帮忙\"等意图时触发。\n\n## When NOT to Use\n\n询问其他非跑腿业务场景，跨城远距离配送或者用户明确表示不下单时。\n\n## 风险提示与免责声明\n\n本 Skill 通过开放平台接口实现跑腿下单功能。\n\n• 调用方应确保所使用的 AI 助手已在中国大陆完成安全备案，并符合相关法律法规要求\n\n• 调用方应审慎评估 AI 对需求的理解偏差风险，使用本人账号授权操作，确认订单预览后再提交\n\n• 如发现异常订单或 AI 行为异常，请立即联系美团客服处理\n\n---\n\n## 场景识别与分流\n\n收到用户请求后，首先判断属于以下哪种场景，后续流程按对应分支执行：\n\n- **帮取送**：从 A 地取件送到 B 地，需要取件地址 + 收件地址 + 取送物品信息\n- **帮买**：骑手代购商品，需要购买方式 + 收件地址 + 购买物品信息\n- **帮忙**（以下场景统一归为帮忙）：餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。只需一个地址，不涉及物品信息\n\n---\n\n## 安全门控\n\n> ⚠️ 跑腿下单是**真实消费、不可逆操作**：\n\n1. **强制两步确认**：先预览展示费用卡片，等用户明确回复\"确认\"后才提交。\n2. **信息完整性**（按场景区分必填项）：\n   - **帮取送**：取件地址、收件地址、取件电话、收件电话、物品信息（需查 `params.md` 品类表映射 goodTypes/goodTypeNames/goodsWeight）（5 项）\n   - **帮买**：送达地址 + 电话 + 购买方式（指定购买地址 or 就近购买）+ 物品信息（`--purchase-detail`）（4 项）\n   - **帮忙**：帮忙地址 + 电话（2 项）\n\n   缺失任何必填项**不允许询价和提单**。电话获取规则详见 Step 3。\n3. **金额异常拦截**：费用 > 100 元时需额外向用户确认。\n\n---\n\n## 工作流程\n\n**Step 0：鉴权检查（自包含授权）**\n\n本 Skill 内置了 `pt-passport` 授权工具，无需依赖外部 Skill。\n\n**0.1 安装 pt-passport CLI（每次会话执行一次）**\n\n```bash\nbash \"$(dirname \"$0\")/../passport-auth/scripts/install.sh\"\n```\n\n> 若无法定位路径，用 `glob_file_search` 搜索 `passport-auth/scripts/install.sh` 找到绝对路径后执行。安装成功或已是最新则继续。\n\n**0.2 检查缓存的授权 Token**\n\n```bash\npt-passport get-token --client_id ac76c22d257c4c6d9164719eea64ed4b > /dev/null 2>&1\necho $?\n```\n\n- 退出码 `0`（缓存命中）→ 取出 Token 执行 `login` 验证：\n  ```bash\n  TOKEN=$(pt-passport get-token --client_id ac76c22d257c4c6d9164719eea64ed4b)\n  MCP_ACCESS_TOKEN=\"$TOKEN\" sh run.sh login\n  ```\n  - **已登录** → 直接进入 Step 1\n  - **AUTH_FAILED** → 走下方授权流程\n- 退出码 `1`（无缓存）→ 走下方授权流程\n\n**0.3 发起授权（无缓存或缓存失效时）**\n\n```bash\npt-passport auth get-code --client_id ac76c22d257c4c6d9164719eea64ed4b\n```\n\n解析输出：\n- `AUTH_LINK: <url>` → 生成二维码并展示给用户：\n  ```bash\n  bash \"<SKILL_DIR>/passport-auth/scripts/qrcode-image.sh\" \"<AUTH_LINK>\" \"ac76c22d257c4c6d9164719eea64ed4b\"\n  ```\n  读取输出的 `QRCODE_IMAGE:<path>` 图片路径，用 `![二维码](<path>)` 内联渲染。\n\n  按以下格式展示授权信息：\n\n  📱 请用美团 App 扫码授权，或点击链接确认：\n\n  👉 [点击授权](<AUTH_LINK>)\n\n  > ⏱ 链接有效期 10 分钟，授权完成后告诉我一声。\n\n  > ⚠️ 只展示 `AUTH_LINK`，不要展示 `DIRECT_AUTH_LINK`。\n\n  展示完链接后等待用户确认授权，在此期间不执行任何需要 Token 的操作（包括拉取地址簿、POI 搜索等），不追问业务信息（包括购买地址、收件地址、物品信息等）。\n\n- 输出 `Token:` 开头 → 授权已有效，取出 Token 继续\n- 输出 `❌` → 按错误码提示用户\n\n**0.4 用户确认授权后获取 Token**\n\n当用户回复\"已授权\"或表示已完成扫码后，执行 `poll-token` 获取并缓存 Token（用户已授权，会立即返回）：\n```bash\npt-passport auth poll-token --client_id ac76c22d257c4c6d9164719eea64ed4b\n```\n成功后取出 Token 验证登录：\n```bash\nTOKEN=$(pt-passport get-token --client_id ac76c22d257c4c6d9164719eea64ed4b)\nMCP_ACCESS_TOKEN=\"$TOKEN\" sh run.sh login\n```\n- **已登录** → 进入 Step 1\n- **AUTH_FAILED** → 提示用户重新扫码授权\n\n> ⚠️ **Token 安全**：严禁将 Token 输出到回复正文、日志或任何用户可见位置，仅在命令执行时内存中使用。\n>\n> ⚠️ 后续所有需要鉴权的命令，都需要将 Token 作为 `MCP_ACCESS_TOKEN` 环境变量传入。\n\n**Step 1：信息预收集**（静默，不等用户回复）\n\n从对话中提取已知信息（场景/物品/地址），判断场景分流。**登录确认后**直接进入 Step 2，**严禁**在登录检查前追问用户任何信息。\n\n**Step 2：拉取地址簿**\n\n登录确认后立即拉取地址簿。\n\n- 用户已提到所有必要地址 → 地址簿模糊匹配/POI 搜索确认，不展示地址簿列表\n- 用户提到部分地址 → 已提到的地址直接匹配，未提到的地址展示地址簿让用户选择\n- 用户未提地址 → 按最近使用时间展示前 3 条，先问后列，格式：\n\n```\n请问{场景动作}？以下是你最近使用的地址簿，可以直接说序号或关键词使用对应地址，也可以直接告诉我新的地址：\n\n① 地址1-门牌号1 　　姓名 · 123****4567\n\n② 地址2-门牌号2 　　姓名 · 134****6789\n\n③ 地址3-门牌号3 　　姓名 · 135****7890\n\n```\n\n> ⚠️ 地址簿固定展示 3 条，底部追加一行提示「还有 {总数-3} 个更多地址，说关键词即可」，用户需要其他地址时直接说关键词。\n\n> `{场景动作}` 根据场景替换：帮买用\"骑手买{物品}送达哪个地址\"，帮取送用\"从哪里取件、送到哪里\"（用户已说一个地址时：已说收件 → \"从哪里取件\"，已说取件 → \"送到哪里\"），帮忙用\"骑手去哪里帮忙\"。\n>\n> ⚠️ **严禁向用户暴露内部场景判断过程**（如\"搬冰箱属于帮忙场景\"等），直接问用户地址即可。\n\n> ⚠️ **帮取送部分地址处理**：用户只说了一个地址时（如\"帮我送文件到融新科技中心\"），先匹配已提到的地址，再只针对缺失的地址展示地址簿。问法调整为：已说收件地址 → \"请问从哪里取件？\"；已说取件地址 → \"请问送到哪里？\"。不要把已确认的地址再问一遍。\n\n> ⚠️ **帮买部分地址处理**：用户已说送达地址时（如\"帮买猫粮送到融新\"），直接匹配，不展示地址簿，紧接着问购买方式。\n\n> ⚠️ **帮忙部分地址处理**：用户已说帮忙地址时（如\"帮我搬冰箱到朝来\"），直接匹配，不展示地址簿，直接进入预览。\n\n> ⚠️ 地址列表每条独占一行，地址与联系人之间用全角空格分隔，不堆砌多地址到一行。\n\n**Step 3：地址确认**\n\n- 选序号 → 使用地址簿的坐标、地址、门牌号、姓名等信息，跳过 POI 搜索\n- 说关键词 → 地址簿模糊匹配，匹配不到才调用 POI 搜索\n- 新地址 → 调用 POI 搜索\n- 用户在任意时刻明确说了取件人或收件人电话 → 覆盖已有电话，使用用户指定的\n- 两个地址均需 POI 搜索时 → **并行发起**两条搜索\n- 两个地址都从地址簿选择时 → **并行发起**两条 `get_address_info`\n\n> ⚠️ **电话获取规则**（默认不主动询问电话，自动从地址簿取最近使用的真实号码）：\n> 1. 用户明确指定的真实电话 → 使用用户指定的\n> 2. 地址簿选序号 → 调用 `get_address_info --address-id` 获取真实号码\n> 3. 新地址场景 → 从地址簿取最近使用的地址调 `get_address_info` 获取真实号码\n> 4. `get_address_info` 返回的号码仍含 `****` → 才向用户追问\n> 5. 地址簿为空 → 向用户询问手机号\n>\n> **严禁主动询问电话**，用户没说就默认取地址簿最近使用的真实号码。帮取送场景中取件人和收件人的电话都需要按上述规则获取，不主动追问。\n\n**帮取送场景**：需要取件地址 + 收件地址，两个地址都确认后进入 Step 4。\n> ⚠️ 取件地址和收件地址可以相同，用户确认后直接使用，**严禁质疑**（如\"取件和收件地址一样哦，确定吗？\"）。\n\n**帮买场景**：先确认收件地址，再询问购买方式：\n- 若用户已提供购买地址 → 使用该地址\n- 若用户未提供 → 询问：\"请问有指定地址购买还是骑手就近购买？\"\n\n**帮忙场景**：只需要一个地址（帮忙地址），不要问\"从哪搬到哪\"，只问\"去哪里帮忙\"。取件地址和收件地址均填该地址，**不向用户说明这个逻辑**。\n\n**Step 4：物品信息与参数构造**\n\n**帮取送场景**：\n- Step 1 已收集物品信息 → 直接使用\n- 用户有模糊描述（如\"一些东西\"、\"食物\"）→ 直接根据描述匹配最接近的品类，无法匹配的按\"其他\"处理，**不追问**\n- 完全没有任何物品信息 → 追问：\"请问需要帮您送什么东西？\"\n- 根据物品类型查阅 [references/params.md](references/params.md) 得到 goodTypes/goodTypeNames/goodsWeight 及服务类型参数\n\n**帮买场景**：\n- Step 1 已收集购买物品 → 直接使用，不需要查阅物品类型，整理记录即可\n- 未收集 → 追问：\"请问需要帮您购买什么物品？\"\n\n**帮忙场景**：\n- **不询问、不收集、不展示任何物品信息**\n- 将用户描述的帮忙内容（如\"帮扔垃圾\"、\"帮取号\"等）填入备注字段，让骑手了解具体需求\n- 直接进入 Step 5\n\n**Step 5：预览 → 确认 → 提交**\n\n**第一步：调用 `delivery_preview` 预览（只展示费用，不提交）**\n\n**帮取送场景需并行询价两次**：\n- `--service-type 1003`（普通送）→ 获取普通送的费用、时效\n- `--service-type 4033`（1对1急送）→ 获取 1v1 急送的费用、时效\n\n两次询价返回各自独立的 `orderToken`、`_deliveryFee`、`estimateTime`。展示时以普通送完整信息为主，底部追加 1v1 急送对比行（使用两次结果的差值）。用户确认时按所选服务提交：默认普通送；用户选 1v1 急送（如回复\"要急送\"\"用1v1\"）则用 **4033 那次询价返回的 `orderToken`/`_deliveryFee`** 提交，不得用普通送的 token。\n\n**帮买场景**单次询价：`--business-type 2` + `--business-type-tag`（指定购买地址传 0，就近购买传 1 且 `--sender` 与 `--recipient` 同址）+ `--purchase-detail`，不传 `--service-type`。**帮忙场景**单次询价，固定传 `--service-type 4033`。完整参数说明和示例见 [references/commands.md](references/commands.md)。\n\n从接口返回结果中提取实际值，按以下模板逐行展示。**所有字段的值必须来自预览接口的实际返回，严禁使用示例值或硬编码值。**\n\n> ⚠️ 预览返回的 `orderToken`、`_deliveryFee`、`_previewTotal`、`_couponViewId` 需要保存，用户确认后提交时必传。`_couponViewId` 已经过 URL 编码，提单时直接使用即可。\n>\n> ⚠️ 如果 `delivery_preview` 返回错误码，查阅 [references/errors.md](references/errors.md) 中对应错误码的处理方式并执行。\n\n预览返回的字段说明：`serviceType`=服务类型，`deliveryServiceType`=配送服务类型（如 1对1急送/普通送，有值时展示），`senderAddress`=取件地址，`senderPhone`=取件电话，`recipientAddress`=收件地址，`recipientName`=收件人，`recipientPhone`=收件电话，`goodsName`=物品名称，`distance`=距离，`feeDisplay`=配送费展示，`estimateTime`=预计时效，`feeDetails`=费用明细。\n\n---\n\n### 帮取送 预览模板\n\n> 帮取送默认展示普通送完整信息，底部追加 1v1 急送对比行。询价两次（service-type 1003 + 4033），使用两次结果差值填充对比行。\n\n🛵 **服务类型** {serviceType}\n\n📦 **取件地址** {senderAddress} · {senderPhone}\n\n🏠 **收件地址** {recipientAddress} · {recipientPhone}\n\n🎁 **物品** {goodsName}\n\n📝 **备注要求** {简要概括用户要求}\n\n📍 **距离** {distance}\n\n💰 **配送费** {feeDisplay}\n\n🕐 **预计时效** {estimateTime}\n\n---\n\n⚡ **【更快更安心】** 还可以选择 1v1 急送，预计快 {普通送时效分钟数 - 1v1时效分钟数} 分钟送达，配送费 {1v1配送费} 元\n\n请确认信息，帮你下单吗？\n\n### 帮买 预览模板\n\n🛵 **服务类型** {serviceType}\n\n🏪 **购买地址** {businessTypeTag=0时展示 senderAddress；businessTypeTag=1时展示\"就近购买\"}\n\n🏠 **收件地址** {recipientAddress} · {recipientPhone}\n\n🛍️ **物品** {purchaseGoodDetail，即 --purchase-detail 传入的值（预览响应不回传此字段，取自本地记录的购买需求）}\n\n📝 **备注要求** {简要概括用户要求}\n\n📍 **距离** {distance}（仅 businessTypeTag=0 时展示，就近购买时不展示此行）\n\n💰 **配送费** {feeDisplay}\n\n🕐 **预计时效** {estimateTime}\n\n---\n\n### 帮忙 预览模板\n\n（适用于：餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙）\n\n> ⚠️ 帮忙场景**不展示配送方式**（如\"1对1急送\"），只展示服务类型名称。\n\n🛵 **服务类型** {serviceType}\n\n📍 **帮忙地址** {senderAddress} · {senderPhone}\n\n📝 **备注要求** {简要概括用户要求}\n\n💰 **帮忙服务费用** {feeDisplay}\n\n🕐 **预计时效** {estimateTime}（展示时将\"送达\"替换为\"完成帮忙\"）\n\n---\n\n> ⚠️ 帮忙场景**不展示物品信息**（🛍️ 行），改为展示「备注要求」。\n>\n> 「备注要求」展示规则：帮搬装写具体搬运物品（如\"搬冰箱\"），其他帮忙场景简要总结用户需求。如果服务类型已能概括用户需求（如\"餐厅取号\"本身已明确），则**不展示**备注要求行。\n\n> ⚠️ **优惠券条件展示**：\n> - **无优惠券时**（`_couponViewId` 为空）：预览正常展示 `💰 配送费 {feeDisplay}`，不提优惠券。\n> - **有优惠券时**（`_couponViewId` 非空，`_deliveryFee` ≠ `_previewTotal`）：\n>   - 配送费行展示：`💰 配送费 {_previewTotal} 元（已用红包减免 {_deliveryFee - _previewTotal} 元）`\n>   - 不展示 feeDetails 费用明细\n>   - 预览后追加一句：**帮你使用红包优惠了 {_deliveryFee - _previewTotal} 元！**\n>\n> 帮取送预览后追加 1v1 急送对比行，然后统一询问：**请确认信息，帮你下单吗？**\n>\n> 帮买和帮忙预览后直接问：**确认下单吗？**\n\n> ⚠️ **确认判定规则**：只有用户明确回复\"确认\"\"下单\"\"好的\"\"可以\"等确认意图时才提交订单。用户回复的其他内容（如\"放到前台就行\"\"别按门铃\"\"放门口\"等配送要求）是**追加备注**，不是确认下单。收到追加备注后：填入 `--remark` 参数，重新询问 **确认下单吗？**，严禁直接提交。\n\n**第二步：用户确认后调用 `submit_order` 提交**。必须传入预览返回的 `orderToken`、`_deliveryFee`（配送费原价）、`_previewTotal`（优惠后实付金额），以及 `_couponViewId`（如有优惠券，已 URL 编码可直接使用）。所有地址、物品参数必须与预览时完全一致，不得修改任何参数。**帮买场景下 `--purchase-detail` 必须传入**（与询价时一致），否则骑手无法获知购买需求。**帮取送和帮忙场景下 `--service-type` 必须传入**（与询价时一致：帮取送 1003/4033，用户选 1v1 急送时用 4033 询价的 token 和费用提交，帮忙固定 4033，帮买不传）。如有追加备注，通过 `--remark` 参数传入。\n\n> ⚠️ 如果 `submit_order` 返回错误码，查阅 [references/errors.md](references/errors.md) 中对应错误码的处理方式并执行。\n\n下单成功后，`submit_order` 返回结果中包含 `orderId`、`tradeNo`、`payToken`（如接口有返回），需保存这些字段用于后续支付流程。\n\n下单成功后直接进入 Step 6 支付引导，**不向用户展示订单号**。\n\n---\n\n## Step 6：支付引导（H5 收银台）\n\n下单成功后，引导用户通过收银台完成支付。`submit_order` 返回的 `orderId`、`tradeNo`、`payToken` 用于构造收银台链接。\n\n**第一步：生成支付链接**\n\n调用 `get_pay_url` 生成收银台支付链接：\n\n```bash\nMCP_ACCESS_TOKEN=\"$TOKEN\" sh run.sh get_pay_url \\\n  --trade-no \"${tradeNo}\" \\\n  --pay-token \"${payToken}\" \\\n  --order-id \"${orderId}\"\n```\n\n返回结果包含两个链接：\n- `mobilePayUrl`：移动端 H5 收银台（支持美团支付、微信支付、支付宝）\n- `pcPayUrl`：PC 端收银台（支持微信扫码、支付宝、外卡支付）\n\n**第二步：发送支付链接（登录链接随附，条件引导）**\n\n链接本身有效（`get_pay_url` 已成功返回），登录态判断交给用户点击时的真实页面，不做任何预验证。同一条消息内发送双支付链接 + 登录链接 + 条件引导：\n\n```\n请在 15 分钟内点击链接完成支付，支付成功后就会有骑手接单啦：\n\n📱 [点击支付]({mobilePayUrl})\n\n💻 [点击支付]({pcPayUrl})\n\n如果是首次支付或提示登录失效，请先点击下方链接，登录收银台后再次点击上方支付链接（登录后关闭页面即可）：\n\n🔗 [登录收银台](https://passport.meituan.com/useraccount/ilogin)\n\n支付后可以随时找我查询订单状态哦～\n```\n\n**第三步：对话兜底**\n\n用户反馈登录失败或支付页面有问题（要登录/打不开/登录后仍提示失效/支付方式不可用）→ **不质疑用户**，按以下格式引导先登录再点支付链接：\n\n```\n遇到登录或页面问题的话，请先点击下方链接完成登录（登录后关闭页面即可）：\n\n🔗 [登录收银台](https://passport.meituan.com/useraccount/ilogin)\n\n登录后请再次点击下方支付链接完成支付，原链接直接可用～\n\n📱 [点击支付]({mobilePayUrl})\n\n💻 [点击支付]({pcPayUrl})\n\n支付后可以随时找我查询订单状态哦～\n```\n\n> ⚠️ 三条规则：\n> 1. 登录链接始终随支付链接一并发送，用户点击时按页面实际情况自助判断是否需要。\n> 2. 用户登录后原支付链接直接可用，无需重新生成。\n> 3. 只发收银台链接，严禁引导去美团 App 支付；链接用 Markdown 超链接格式，严禁裸露 URL。手机端和电脑端收银台链接始终成对发送；移动端收银台不支持电脑端支付，PC 端收银台不支持手机端支付，因此两案都发。\n\n---\n\n## Step 7：订单状态查询\n\n用户可随时询问订单进度，调用 `get_order_status` 查询：\n\n```bash\nMCP_ACCESS_TOKEN=\"$TOKEN\" sh run.sh get_order_status \\\n  --order-id \"${orderId}\"\n```\n\n返回结果中 `order.orderStatus.text` 为订单状态文本，`order.auditStatus.text` 为审核状态文本。\n\n**严格规则：** 只展示接口返回的状态字段和文本，**严禁自行推测或添加接口未返回的信息**（如接口未返回\"支付状态\"，不得推断用户是否已支付）。\n\n**取消订单引导：**\n\n当前 skill 不支持取消订单命令。当用户要求取消订单时，引导用户手动取消：\n\n```\n如果你想取消订单，请打开美团App或跑腿微信小程序 → 订单列表 → 找到这笔{物品}订单 → 点击取消。\n```\n\n---\n\n## 详细参考文档\n\n- [references/commands.md](references/commands.md) — 所有命令及参数\n- [references/params.md](references/params.md) — 地址、物品、业务类型参数参考\n- [references/errors.md](references/errors.md) — 错误码与异常处理\n\nFile v1.0.5:node_modules/@sec/cliguard/README.md\n\n# openclaw-cliguard\n\n集成验签和设备指纹\n\n\n## 接入文档\n\n**https://km.sankuai.com/collabpage/2755803958**\n\n\n## CLI配置\n\n**需要Node环境**\n\n\n## changelog\n    ### v1.4.0\n        1.新增发码功能\n    ### v1.3.3\n        1.为websocket upgrade请求过滤公参注入等逻辑，避免影响长链建立。\n    ### v1.3.2\n        1.修复CLI导出 --help 提示不对的问题\n    ### v1.3.0\n        1.自动patch为网络请求添加mtgsig（包括验签值d1&设备指纹a6）\n        2.启动守护进程进行自升级检查\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn71y9yc73jym61ban40qyj59h84r5jp\",\n  \"slug\": \"mt-paotui-for-client\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1789892363002\n}\n\nFile v1.0.5:references/commands.md\n\n# 命令与参数\n\n## 命令总览\n\n| 命令 | 说明 | 必填参数 |\n|------|------|---------|\n| `login` | 检查鉴权状态 | 无（可选 `--force`） |\n| `logout` | 登出（清除本地 Token） | 无 |\n| `confirm_auth` | 检查鉴权有效性 | 无 |\n| `search_poi` | POI 地址搜索 | `--keyword` |\n| `get_address_list` | 获取用户地址簿 | 无 |\n| `get_address_info` | 根据地址 ID 获取真实手机号 | `--address-id` |\n| `delivery_preview` | 配送预览（查询费用/时效） | `--sender --recipient --goods` |\n| `submit_order` | 提交订单 | `--order-token --sender --recipient --goods --delivery-fee` |\n| `get_order_status` | 查询订单状态 | `--order-id` |\n| `get_last_preview` | 查看上一次预览结果（缓存） | 无 |\n\n## 详细参数\n\n### search_poi\n```\n--keyword <string>     搜索关键词（必填）\n--city <string>        城市名（默认\"北京\"）\n--lat <number>         纬度（E6整数或小数）\n--lng <number>         经度（E6整数或小数）\n```\n\n### get_address_list\n```\n--address-type <int>   地址类型（默认 1）\n--business-type <int>  业务类型（默认 1）\n--scene <int>          场景（默认 2）\n```\n返回字段：`addressId`、`address`、`houseNumber`、`name`、`phone`（服务端脱敏）、`lat`/`lng`、`cityId`、`tag`、`isDefault`、`lastUseTime`。\n\n> ⚠️ `phone` 是脱敏号码（如 `187****0436`），仅供展示，**不能直接用于下单**。需通过 `get_address_info` 获取真实号码。\n\n---\n\n### get_address_info\n根据地址 ID 获取真实手机号。`get_address_list` 返回的 phone 是脱敏号码，不能直接用于下单，**必须通过此命令获取真实号码**。其余地址信息（address、houseNumber、name、坐标等）仍使用 `get_address_list` 返回的。\n```\n--address-id <string>  地址 ID（必填，来自 get_address_list 返回的 addressId）\n```\n返回字段：`addressId`、`phone`（**真实号码**）。\n\n---\n\n### delivery_preview\n配送预览命令，返回费用、时效、orderToken 等信息，不提交订单。结果会自动缓存，可通过 `get_last_preview` 查看。\n```\n--sender <JSON>              发件人地址对象（必填）\n--recipient <JSON>           收件人地址对象（必填）\n--goods <JSON>               物品信息对象（必填）\n--business-type <string>     业务类型: 1=帮取送/帮忙, 2=帮买（默认 1）\n--biz-type-scene-tag <string> 场景标签（默认 0，仅帮取送体系使用，详见 params.md；帮买不传，帮买用 --business-type-tag）\n--service-type <string>       服务类型，仅帮取送/帮忙使用（帮取送 1003=普通送/4033=1v1急送，帮忙固定 4033）；帮买不传\n--tip-fee <int>              小费（分，默认 0）\n--purchase-detail <string>   帮买物品明细（businessType=2 时使用）\n```\n\n返回字段中需要关注的：`orderToken`（提交订单时必传）、`_deliveryFee`（提交订单时必传配送费原价）、`_couponViewId`（有优惠券时传入提交）。\n\n**帮买场景参数组合**（businessType=2，与帮取送/帮忙的关键差异）：\n\n> ⚠️ `--business-type-tag` **未列入 CLI usage 帮助文本**（工具方遗漏），功能正常，照常传。另注意与 `--biz-type-scene-tag` 严禁互串：帮买用 `--business-type-tag`，帮取送体系用 `--biz-type-scene-tag`，误传会静默错单。\n\n- `--business-type 2`\n- `--business-type-tag`：指定购买地址传 `0`，就近购买传 `1`\n- `--sender`：指定购买地址时传商家地址；就近购买时传收件地址（和 `--recipient` 相同）\n- `--purchase-detail`：必传，填写购买物品明细\n- 不传 `--service-type`（帮买专用参数组合，与其他场景的关键差异）\n\n就近购买示例：\n```\n--sender '{\"lat\":40020135,\"lng\":116469935,\"address\":\"朝来科技产业园西区-1号楼\",\"name\":\"j\",\"phone\":\"13552069166\"}' \\\n--recipient '{\"lat\":40020135,\"lng\":116469935,\"address\":\"朝来科技产业园西区-1号楼\",\"name\":\"j\",\"phone\":\"13552069166\"}' \\\n--goods '{\"goodsName\":\"猫粮\"}' --business-type 2 --business-type-tag 1 --purchase-detail \"购买一包猫粮\"\n```\n\n**帮取送/帮忙场景**：businessType=1，需按场景传 `--service-type`（详见上表），不传 `--business-type-tag`/`--purchase-detail`。\n\n---\n\n### submit_order\n提交订单命令。需要先通过 `delivery_preview` 获取 `orderToken` 和 `_deliveryFee`，再传入提交。\n```\n--order-token <string>       配送令牌（必填，来自预览返回的 orderToken）\n--sender <JSON>              发件人地址对象（必填，与预览时一致）\n--recipient <JSON>           收件人地址对象（必填，与预览时一致）\n--goods <JSON>               物品信息对象（必填，与预览时一致）\n--delivery-fee <number>      配送费（必填，来自预览返回的 _deliveryFee）\n--business-type <string>     业务类型（默认 1，与预览时一致）\n--biz-type-scene-tag <string> 场景标签（与预览时一致）\n--service-type <string>       服务类型，与预览时一致（帮取送 1003/4033，帮忙固定 4033，帮买不传）\n--tip-fee <int>              小费（分，默认 0）\n--remark <string>            备注\n--purchase-detail <string>   帮买物品明细\n--coupon-view-id <string>    优惠券视图ID（来自预览返回的 _couponViewId）\n```\n\n---\n\n### get_order_status\n```\n--order-id <string>    订单ID（必填）\n```\n\n---\n\n### logout\n清除本地缓存的 accessToken、环境变量以及 pt-passport CLI 的登录态。不需要任何参数。\n\n---\n\n### get_last_preview\n查看上一次 `delivery_preview` 的缓存结果，不会重新发起网络请求。如果已成功提交过订单，会同时返回 `orderId`。不需要任何参数。\n\nFile v1.0.5:references/errors.md\n\n# 异常处理\n\n| 异常错误 | 含义 | 处理类型 | 处理方式 |\n|---|---|---|---|\n| 登录失效 / `status: error` / `AUTH_REQUIRED` / `AUTH_FAILED` | Token 不存在或已失效 | 重试 | 执行 `login` 命令重新授权 |\n| `10000` | 登录态失效 | 重新登录 | 先执行 `login --force` 强制刷新并重试，仍失败则提示用户重新登录。详见下方 Token 失效自动检测 |\n| `10001` | 必填参数校验未通过 | 校验补全 | 检查手机号是否为脱敏号码(含\\*\\*\\*\\*)或缺失，按优先级自动填写真实号码：用户明确提供的真实电话 > get_address_info返回的真实号码 > 登录账号的手机号，严禁使用脱敏号码下单，补全后重新提交 |\n| `10002` | goodTypes与goodTypeNames不匹配 | 校验补全 | 检查goodTypes/goodTypeNames映射是否一致并修改 |\n| `10003` | 服务器偶发异常/超时 | 透传 | 提示用户：「服务器暂时开小差啦，请稍后重试。」 |\n| `10309` | 配送费已动态变化 | 二次确认 | 重新询价和预览订单，展示并提示用户「配送费发生动态变化，请重新确认下单」 |\n| `10310` | 账号被风控限制 | 透传 | 提示用户：「系统检测到您的账号存在异常行为，已被限制下单。如有疑问请前往美团app或小程序咨询客服」不重试 |\n| `10311` | orderToken失效 | 重试 | 重新询价并再次下单 |\n| `10392` | 帮买场景误传了 service-type（如 4033） | 校验修正 | 帮买场景不传 `--service-type`，去掉该参数后重新询价并下单 |\n| `10112` | 取件/购买地址所在区域未开通服务 | 透传 | 提示用户：「该地址所在区域暂未开通跑腿服务，请重新选择地址。」 |\n| `10113` | 地址所在城市未开通服务 | 透传 | 提示用户：「该地址所在城市暂未开通跑腿服务，请更换为已开通服务的城市。」 |\n| `10114` | 交通管制等特殊原因无法配送 | 透传 | 提示用户：「因临时交通管制，该地址暂时无法配送，请稍后重试。」 |\n| `10115` | 配送距离超出最大范围 | 透传 | 提示用户：「收发件地址距离过远，超出配送范围，请选择更近的地址。」 |\n| `10116` | 无效地址 | 透传 | 提示用户：请提供更精确的地址 |\n| `11000` | 提单内容包含不规范内容 | 透传 | 提示用户：「订单内容包含不规范内容，请修改后重新下单。」 |\n| `11003` | 商品信息不符合平台规范 | 透传 | 提示商品信息不符合平台规范，包含违禁物品或敏感词，请修改后重新下单。 |\n| `11004` | 备注内容不符合规范 | 透传 | 提示用户：「备注内容不符合规范，请修改后重新下单。」 |\n| `11005` | 发件人姓名包含不规范内容 | 透传 | 提示用户：「发件人姓名包含不规范内容，请修改后重试。」 |\n| `11006` | 发件地址包含不规范内容 | 透传 | 提示用户：「发件地址包含不规范内容，请修改后重试。」 |\n| `11007` | 收件人姓名包含不规范内容 | 透传 | 提示用户：「收件人姓名包含不规范内容，请修改后重试。」 |\n| `11008` | 收件地址包含不规范内容 | 透传 | 提示用户：「收件地址包含不规范内容，请修改后重试。」 |\n| `11016` | 物品描述不符合规范 | 透传 | 提示用户：「配送物品描述不符合规范，请修改后重新下单。」 |\n| `40001` | 不支持代购药品/医疗器械 | 透传 | 提示用户：「跑腿不支持代购药品和医疗器械，请选择其他品类。」 |\n| `10401` | 配送费计算失败 | 重试 | 重新询价并再次下单 |\n| POI 搜索无结果 | POI搜索无结果 | 透传 | 提示用户提供更精确的地址（含街道/楼号） |\n| 费用预览失败 | 费用预览失败 | 重试 | 检查地址坐标是否正确或尝试缩短距离 |\n| 网络超时 | 网络超时 | 重试 | 提示用户：网络问题超时，请检查网络/VPN后重试 |\n| 响应解析失败 | 接口响应异常 | 重试 | 提示用户：接口异常，请检查网络/VPN连接后重试 |\n\n## Token 失效自动检测\n\n当任何接口返回 `code: 10000` 且 `message` 为\"未知错误\"时，应视为 Token 服务端过期：\n\n1. 自动执行 `login --force` 强制重新授权\n2. 授权成功后重试原请求\n3. 若重试仍失败，按实际错误码处理\n\n> ⚠️ `login`（不带 `--force`）仅检查本地缓存文件，不验证服务端有效性。因此本地 Token 存在 ≠ 服务端有效，收到 10000 时必须使用 `login --force` 强制刷新。\n\nFile v1.0.5:references/params.md\n\n# 参数说明\n\n## 地址 JSON（--sender / --recipient）\n\n```json\n{\n  \"address\": \"北京市朝阳区融新科技中心A座\",  // 完整地址\n  \"houseNumber\": \"3号楼1单元\",               // 门牌号（地址簿返回或用户提供时填写，无则留空）\n  \"lat\": 40019368,                            // 纬度，整数×1e6\n  \"lng\": 116469191,                           // 经度，整数×1e6\n  \"name\": \"张三\",                              // 联系人姓名（地址簿返回或用户提供时填写，无则留空）\n  \"phone\": \"138xxxx5678\",                     // 联系电话（必须真实号码，地址簿返回的脱敏号码需通过 get_address_info 获取真实号码）\n  \"cityId\": 110100                            // 城市ID，见城市表\n}\n```\n\n> ⚠️ `houseNumber` 和 `name` 在地址簿返回或用户明确提供时应正常填写，会传递到下单接口的 `fetchHouseNumber`/`recipientHouseNumber` 和 `senderName`/`recipientName` 字段。\n\n**单地址场景**（取号/帮搬/帮扔/医院帮忙/其他帮忙）：`--sender` 和 `--recipient` 传同一个地址 JSON。\n\n---\n\n## 物品 JSON（--goods）\n\n```json\n{\n  \"goodsName\": \"其他\",\n  \"goodsWeight\": 1,          // 物品实际重量（公斤数），值是多少就是多少公斤，如 15 表示 15kg。重量越大配送费越贵\n  \"goodTypes\": [8],          // 物品类型数组，必须按下方映射表选择对应值，禁止直接复制此示例\n  \"goodTypeNames\": [\"其他\"]  // 物品类型名称数组（与 goodTypes 一一对应）\n}\n```\n\n> ⚠️ **严格查表规则**：`goodTypes` 数值与 `goodTypeNames` 名称必须**整行一起取**，禁止单独推断（如\"餐饮\"绝不是 `[1]`，\"鲜花\"绝不是 `[2]`）。每次都必须找到用户描述对应的那一整行，同时取出该行的 `goodTypes` 和 `goodTypeNames`，缺一不可。\n\n| 用户描述关键词 | goodTypes（数值） | goodTypeNames（名称） | goodsWeight 默认值 |\n|---|---|---|---|\n| 餐饮、外卖、食物、饭、菜、奶茶、饮料 | **`[2]`** | **`[\"餐饮\"]`** | 1 |\n| 文件、合同、资料、单据、证件、文书 | **`[4]`** | **`[\"文件\"]`** | 1 |\n| 生鲜、水果、蔬菜、肉、海鲜 | **`[3]`** | **`[\"生鲜\"]`** | 2 |\n| 蛋糕、甜品 | **`[9]`** | **`[\"蛋糕\"]`** | 2 |\n| 鲜花、花束、花 | **`[1]`** | **`[\"鲜花\"]`** | 1 |\n| 数码、手机、电脑、平板、耳机、电子产品 | **`[5]`** | **`[\"数码\"]`** | 1 |\n| 服饰、衣服、鞋、包、服装 | **`[7]`** | **`[\"服饰\"]`** | 1 |\n| 快递、包裹、箱子 | **`[8]`** | **`[\"快递\"]`** | 2 |\n| 五金、工具、零件、螺丝、管件 | **`[2]`** | **`[\"五金\"]`** | 2 |\n| 汽配、汽车配件、车零件 | **`[2]`** | **`[\"汽配\"]`** | 3 |\n| 其他、物品、东西、不明确 | **`[8]`** | **`[\"其他\"]`** | 1 |\n\n> ⚠️ `goodsWeight` 值即公斤数。如用户明确说\"15公斤\"，传 `15`；说\"5公斤左右\"，传 `5`。默认值仅供参考，**以用户实际告知为准**。\n\n---\n\n## businessType 与 bizTypeSceneTag\n\n`businessType` 只有两个合法值，**严禁传 3/4/5/6**（会导致 10002 错误）：\n\n| 用户意图 | --business-type | --biz-type-scene-tag |\n|---|---|---|\n| 帮取送文件/物品（A→B） | 1 | 0（默认） |\n| 餐厅取号 | 1 | 1 |\n| 医院帮忙 | 1 | 2 |\n| 其他取号 | 1 | 3 |\n| 帮搬装 | 1 | 4 |\n| 其他帮忙 | 1 | 5 |\n| 帮扔杂物 | 1 | 6 |\n| 帮买东西 | 2 | 0（默认即可，另需按购买方式传 `--business-type-tag`，见下） |\n\n**purchaseGoodDetail**（CLI 参数名 `--purchase-detail`）：帮买场景（businessType=2）**必传**，如 `\"一瓶矿泉水\"`。其他场景留空。\n\n---\n\n## businessTypeTag\n\n`businessTypeTag` 与 `bizTypeSceneTag` 是两个完全独立的参数，无关联。**仅在帮买场景（businessType=2）下生效**，用于区分购买地址来源：\n\n> ⚠️ `--business-type-tag` **未列入 CLI 的 usage 帮助文本**（工具方遗漏），但参数功能正常，必须按本表正常传。以本文档为准，不要因 usage 未列出而省略。\n>\n> ⚠️ 两个参数名极易混淆：帮买传 `--business-type-tag`，帮取送体系（含取号/帮忙）传 `--biz-type-scene-tag`，**严禁互串**。误传不会报错而是**静默错单**（如帮买误传 `--biz-type-scene-tag 1`，会被服务器理解为「餐厅取号」）。\n\n| 场景 | --business-type-tag | 含义 |\n|------|---------------------|------|\n| 帮买 - 用户指定购买地址 | `0` | 骑手前往 `--sender` 指定地址购买 |\n| 帮买 - 就近购买 | `1` | 骑手自行决定购买地点，`--sender` 传收件地址 |\n| 帮取送（businessType=1） | `0` | 不适用 |\n\n---\n\n## 坐标格式\n\n整数×1e6（如 40.019368° → 40019368）。地址簿返回的 `lat`/`lng` 已是此格式，**可直接用于下单，无需转换**。\n\nFile v1.0.5:passport-auth/reference.md\n\n# 参考文档\n\n## 子命令说明\n\n`pt-passport` 支持以下子命令：\n\n| 子命令            | 说明                                                                            |\n| ----------------- | ------------------------------------------------------------------------------- |\n| `auth get-code`   | 第一阶段：检查缓存有效则直接输出 Token；否则生成授权链接输出 `AUTH_LINK: <url>` |\n| `auth poll-token` | 第二阶段：读取 session 文件，轮询等待用户在 App 内确认授权，输出 Token          |\n| `get-token`       | 直接输出缓存的 Token 字符串（无缓存时退出码 1）                                 |\n| `status`          | 查看本地缓存状态；不传 `--client_id` 则列出所有缓存账号（不调远程接口）         |\n| `logout`          | 清除本地缓存 Token（指定 `--client_id` 清除单个，`--all` 清除全部）             |\n\n## 参数说明\n\n### `auth get-code`\n\n| 参数          | 默认值 | 说明                                        |\n| ------------- | ------ | ------------------------------------------- |\n| `--client_id` | 必填   | 已注册的 client_id                          |\n| `--env`       | `prod` | `test` 或 `prod`                            |\n| `--base_url`  | -      | 自定义 API 地址，优先级高于 `--env`（泳道） |\n| `--force`     | -      | 强制重新授权，忽略本地缓存                  |\n| `--json`      | -      | 以 JSON 格式输出结果                        |\n\n### `auth poll-token`\n\n| 参数          | 默认值 | 说明                                     |\n| ------------- | ------ | ---------------------------------------- |\n| `--client_id` | 必填   | 客户端 ID（用于定位 session 文件）       |\n| `--base_url`  | -      | 自定义 API 地址（覆盖 session 中的地址） |\n| `--timeout`   | `600`  | 轮询最大等待秒数                         |\n| `--interval`  | `3`    | 轮询间隔秒数                             |\n| `--json`      | -      | 以 JSON 格式输出结果                     |\n\n> `poll-token` 的 `--env` 已记录在 session 文件中，无需再传。\n\n### `get-token`\n\n| 参数          | 默认值 | 说明                 |\n| ------------- | ------ | -------------------- |\n| `--client_id` | 必填   | 客户端 ID            |\n| `--env`       | `prod` | `test` 或 `prod`     |\n| `--json`      | -      | 以 JSON 格式输出结果 |\n\n### `logout`\n\n| 参数          | 默认值 | 说明                        |\n| ------------- | ------ | --------------------------- |\n| `--client_id` | -      | 客户端 ID（单个清除时必填） |\n| `--env`       | `prod` | `test` 或 `prod`            |\n| `--all`       | -      | 清除所有缓存账号            |\n\n## 命令示例\n\n```bash\n# 安装/更新（推荐使用 scripts/install.sh，或参考 SKILL.md Step 0）\n\n# 第一阶段：检查缓存或生成授权链接\npt-passport auth get-code --client_id <CLIENT_ID> [--env test|prod] [--force]\n\n# 第二阶段：轮询等待授权完成\npt-passport auth poll-token --client_id <CLIENT_ID> [--base_url <url>]\n\n# 获取缓存 Token 字符串\nTOKEN=$(pt-passport get-token --client_id <CLIENT_ID> [--env test|prod])\n\n# 查看缓存状态\npt-passport status --client_id <CLIENT_ID> [--env test|prod]\n\n# 退出登录（单个）\npt-passport logout --client_id <CLIENT_ID> [--env test|prod]\n\n# 退出登录（全部）\npt-passport logout --all\n\n# 列出所有缓存账号（不传 --client_id）\npt-passport status\n```\n\n## Token 缓存\n\n| 项目       | 说明                                             |\n| ---------- | ------------------------------------------------ |\n| 默认路径   | `~/.xiaomei-workspace/pt_passport_auth.json`     |\n| 自定义路径 | 环境变量 `PT_PASSPORT_AUTH_FILE`                 |\n| 文件权限   | `0600`（仅当前用户可读写）                       |\n| 存储格式   | 按 `client_id@env` 分 key，多账号/多环境互不干扰 |\n| 本地有效期 | 30 天（到期后 `auth get-code` 会重新远程校验）   |\n\n## Session 文件\n\n`auth get-code` 执行后会在 `/tmp/pt_passport_session_<hash>.json` 写入 session，`poll-token` 读取后自动删除。\n\n## 后端业务错误码\n\n| code     | 枚举名                    | 含义                                     | 脚本行为         |\n| -------- | ------------------------- | ---------------------------------------- | ---------------- |\n| `400`    | `PARAM_ERROR`             | client_id 未注册或配置缺失               | 终止             |\n| `401`    | `C_USER_TOKEN_LOGIN_FAIL` | 原始 Token 无效（用户侧登录态失效）      | 终止             |\n| `101000` | `SERVER_BUSY` / `DEFAULT` | 服务繁忙或内部异常                       | 自动重试直到超时 |\n| `101144` | `C_USER_HAS_RISK`         | 风控拒绝授权                             | 终止             |\n| `101267` | `C_USER_TICKET_ERR`       | 票据状态异常                             | 终止             |\n| `101269` | `C_USER_TICKET_INFO_ERR`  | authCode/clientId 不匹配或 PKCE 签名错误 | 终止             |\n| `101368` | `C_USER_AUTH_CANCEL`      | 用户取消授权                             | 终止             |\n| `1001`   | `NETWORK_ERROR`           | 请求授权码接口失败（网络异常）           | 终止             |\n| `1002`   | `AUTH_CODE_ERROR`         | 授权码接口返回字段缺失                   | 终止             |\n| `1003`   | `TIMEOUT`                 | 轮询等待超时                             | 终止             |\n| `1004`   | `SESSION_MISSING`         | 未找到 session 文件，需先执行 get-code   | 终止             |\n\n## authStatus 状态值（轮询 /check 时）\n\n| 值              | 含义                                                                | 脚本行为       |\n| --------------- | ------------------------------------------------------------------- | -------------- |\n| `1` (INIT)      | 等待用户在授权页确认                                                | 继续轮询       |\n| `2` (CANCEL)    | 用户取消授权（数据路径）                                            | 终止           |\n| `3` (RISK_DENY) | 风控拒绝（数据路径）                                                | 终止           |\n| `4` (CONFIRMED) | 已确认，token 非空则成功；token 为空时继续等待（衍生 token 生成中） | 成功或继续等待 |\n\n## 环境地址\n\n| 环境     | 地址                                                                          |\n| -------- | ----------------------------------------------------------------------------- |\n| 测试环境 | `https://passport.wpt.test.sankuai.com`（或使用 `--base_url` 自定义泳道地址） |\n| 线上环境 | `https://passport.meituan.com`                                                |\n\n## 环境要求\n\n- Node.js >= 18（低版本无法运行 `pt-passport` CLI）\n- 美团内网环境（外网无法访问 npm registry 和授权接口）\n\n安装 Node.js（`npm: command not found` 时）：\n\n```\nmacOS（推荐 nvm）：\n  curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash\n  nvm install 18\n\nWindows：\n  https://nodejs.org/ 下载安装包\n```\n\n---\n\n## 跨 Skill 协作\n\n### `passport_token_placeholder` 字段说明\n\n外部 Skill 在 `skill-dependencies` 中声明此字段，作用是**向平台和 LLM 显式登记所使用的占位符**，使平台在加载 Skill 时提前感知依赖关系。\n\n- **必填**，固定值为 `${passport_token}`，必须与命令模板中的占位符字面量一致\n- 若缺少此字段：平台可能无法提前识别依赖，LLM 仍可通过扫描命令模板触发授权，但不保证所有平台支持此降级行为，**建议始终声明**\n\n### 占位符替换规则\n\n**执行主体是 LLM，不是 shell。** 流程：\n\n1. 执行授权流程，取出 Token：\n   ```bash\n   TOKEN=$(pt-passport get-token --client_id <client_id> [--env test])\n   ```\n2. 校验 Token 非空，为空则报错终止：\n   ```\n   ❌ Token 获取失败（get-token 返回空），请重新发起授权。\n   ```\n3. LLM 将命令模板中所有 `${passport_token}` 替换为实际 Token，生成最终命令交由 Bash 执行。\n\n**多占位符规则：**\n\n- 同一命令多个 `${passport_token}` → 全部替换为同一 Token，只取一次\n- 多条命令各含占位符 → 同会话同缓存键共用同一 Token，不重复授权\n- 注释中的占位符（如 `# token: ${passport_token}`）→ 不替换，跳过\n\n**防止 shell 提前展开（必须用单引号）：**\n\n```bash\n# ✅ 正确\ncurl -H 'token: ${passport_token}' https://your-api/endpoint\n\n# ❌ 错误：shell 会将 ${passport_token} 展开为空字符串\ncurl -H \"token: ${passport_token}\" https://your-api/endpoint\n```\n\n### 错误处理\n\n| 错误场景                             | 处理行为                           |\n| ------------------------------------ | ---------------------------------- |\n| `client_id` 未声明                   | 报错终止，提示用户提供 `client_id` |\n| `env` 与 `client_id` 来源不一致      | 报错终止，提示环境与凭据不匹配     |\n| `pt-passport auth get-code` 返回非 0 | 报错终止，按错误码表告知用户       |\n| `pt-passport get-token` 返回空       | 报错终止，不得继续注入             |\n| Token 替换后命令执行失败             | 报错终止，输出原始错误，不重试授权 |\n\n### 最小执行顺序\n\n1. 生成业务命令（允许保留 `${passport_token}` 和 `${passport_auth_mode}` 占位符）\n2. 用户确认后，解析 `client_id` 和 `env`，校验环境一致\n3. 执行授权流程，提取 Token，校验非空\n4. 替换所有 `${passport_token}` 和 `${passport_auth_mode}`，执行最终命令\n5. 同会话同缓存键后续请求复用缓存，跳过步骤 3\n\n---\n\n## `${passport_auth_mode}` 占位符规范\n\n### 用途\n\n`${passport_auth_mode}` 用于在命令模板中获取当前缓存的授权模式数值（`0` 或 `1`），便于外部 Skill 根据授权模式动态路由 header 策略，通常与 `${passport_token}` 配合使用。\n\n### 取值命令\n\n```bash\nAUTH_MODE_JSON=$(pt-passport get-auth-mode --client_id <client_id> [--env test] --json)\n# 输出：{\"auth_mode\":0} 或 {\"auth_mode\":1}\n\n# 不带 --json 时输出纯数值\npt-passport get-auth-mode --client_id <client_id> [--env test]\n# 输出：0 或 1\n```\n\n### 替换规则\n\n**执行主体是 LLM，不是 shell。** 流程：\n\n1. 授权完成后调用 `get-auth-mode` 取出 `auth_mode` 纯数值\n2. 校验数值为 `0` 或 `1`，否则报错终止\n3. LLM 将命令模板中所有 `${passport_auth_mode}` 替换为实际数值后执行\n\n**防止 shell 提前展开（必须用单引号）：**\n\n```bash\n# ✅ 正确\ncurl -H 'X-Auth-Mode: ${passport_auth_mode}' -H 'token: ${passport_token}' https://your-api/endpoint\n\n# ❌ 错误：shell 会将 ${passport_auth_mode} 展开为空字符串\ncurl -H \"X-Auth-Mode: ${passport_auth_mode}\" https://your-api/endpoint\n```\n\n### 依赖声明字段\n\n| 字段 | 说明 |\n|------|------|\n| `passport_auth_mode_placeholder` | 固定值 `${passport_auth_mode}`，向平台登记占位符依赖 |\n\n```yaml\nskill-dependencies:\n  meituan-passport-user-auth:\n    passport_token_placeholder: ${passport_token}\n    passport_auth_mode_placeholder: ${passport_auth_mode}\n    client_id: your_client_id\n    env: prod\n```\n\n### 错误处理\n\n| 错误场景 | 处理行为 |\n|----------|----------|\n| `get-auth-mode` 返回非 0 | 报错终止，提示用户重新授权 |\n| `auth_mode` 值不为 `0` 或 `1` | 报错终止，提示缓存数据异常 |\n| `${passport_auth_mode}` 替换后命令执行失败 | 报错终止，输出原始错误，不重试 |\n\nFile v1.0.5:skill-card.md\n\n## Description:\n\n美团跑腿 is a Meituan errand-ordering assistant for pickup-and-delivery, purchasing, queue or registration help, moving or disposal help, and other local errand requests.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[meituan-tech](https://clawhub.ai/user/meituan-tech)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users use this skill to prepare Meituan errand orders, compare service options, preview fees and timing, submit only user-confirmed orders, and guide payment. It handles real account authorization, address information, contact phone numbers, order submission, and payment-link creation.\n\n### Deployment Geography for Use:\n\nChina mainland\n\n## Known Risks and Mitigations:\n\nRisk: The skill can access a Meituan account flow, address book, real phone numbers, order submission, and payment-link creation.\n\nMitigation: Install and use only with explicit user authorization, preserve token secrecy, preview order details before submission, and require clear user confirmation before placing or paying for an order.\n\nRisk: The security summary reports under-disclosed background fingerprinting and self-update behavior.\n\nMitigation: Before deployment, require publisher documentation for the bundled @sec/cliguard daemon, including reported fingerprint data, update authentication, disable and removal steps, and the reason obfuscated code is necessary.\n\nRisk: Real errand orders can create financial charges and may be difficult to reverse after confirmation.\n\nMitigation: Maintain two-step confirmation, re-confirm unusually high fees, and make the user review service type, addresses, item details, fee, and timing before submission.\n\nRisk: The release is marked suspicious by the authoritative security evidence.\n\nMitigation: Review and scan the bundled code and dependencies before installation or enterprise rollout, with particular attention to obfuscated code, bundled dependencies, and network behavior.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/meituan-tech/skills/mt-paotui-for-client)\n- [Command and parameter reference](references/commands.md)\n- [Error handling reference](references/errors.md)\n- [Order parameter reference](references/params.md)\n- [Passport authorization reference](passport-auth/reference.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Chinese-language Markdown responses with command-backed order previews, confirmation prompts, status messages, and payment guidance.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires Meituan account authorization and real contact, address, order, and payment details; user-facing output is intentionally summarized.]\n\n## Skill Version(s):\n\n1.0.5 (source: release evidence, package.json)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.5:config.json\n\n{\n  \"orderMode\": \"4\",\n  \"trafficSource\": 4\n}\n\nFile v1.0.5:node_modules/@sec/cliguard/package.json\n\n{\n  \"name\": \"@sec/cliguard\",\n  \"version\": \"1.4.1\",\n  \"description\": \"OpenClaw Skill HTTP Request Guardian — 拦截所有 HTTP 请求并附加签名，维护设备指纹守护进程持续上报\",\n  \"files\": [\n    \"index.js\",\n    \"core/\",\n    \"readme.md\"\n  ],\n  \"main\": \"index.js\",\n  \"bin\": {\n    \"cliguard\": \"./index.js\"\n  },\n  \"keywords\": [\n    \"cliguard\",\n    \"openclaw\",\n    \"skill\",\n    \"security\",\n    \"fingerprint\",\n    \"http-interceptor\",\n    \"signature\",\n    \"mtgsig\"\n  ],\n  \"author\": \"CLIGuard\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\"\n  },\n  \"dependencies\": {}\n}\n\nFile v1.0.5:package.json\n\n{\n  \"name\": \"@mtuser/pt-passport\",\n  \"version\": \"1.0.5\",\n  \"description\": \"美团 Passport 用户授权登录 CLI 工具\",\n  \"main\": \"dist/index.js\",\n  \"bin\": {\n    \"pt-passport\": \"dist/index.js\"\n  },\n  \"files\": [\n    \"dist/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"node build.mjs\",\n    \"clihub-build\": \"bash clihub-build.sh\",\n    \"pack\": \"npm run build && npm pack\",\n    \"publish:inner\": \"npm run build && npm publish --registry=http://r.npm.sankuai.com\",\n    \"dev\": \"node_modules/.bin/tsx src/index.ts\",\n    \"start\": \"node dist/index.js\",\n    \"lint\": \"tsc --noEmit\",\n    \"test\": \"node --test\"\n  },\n  \"publishConfig\": {\n    \"registry\": \"http://r.npm.sankuai.com\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^22.10.5\",\n    \"commander\": \"^12.1.0\",\n    \"esbuild\": \"^0.28.0\",\n    \"javascript-obfuscator\": \"^5.4.1\",\n    \"tsx\": \"^4.19.2\",\n    \"typescript\": \"^5.7.3\"\n  },\n  \"dependencies\": {\n    \"@sec/cliguard\": \"^1.3.0\"\n  },\n  \"bundleDependencies\": [\n    \"@sec/cliguard\"\n  ],\n  \"engines\": {\n    \"node\": \">=18.0.0\"\n  }\n}\n\nArchive v1.0.4: 12 files, 1406680 bytes\n\nFiles: dist/paotui.js (3655330b), dist/run.sh (268b), dist/vendor/cliguard/js/cliguard-wrapper.js (31916b), dist/vendor/cliguard/js/cliguard.js (55899b), dist/vendor/cliguard/js/package.json (43b), README.md (5690b), references/commands.md (3374b), references/errors.md (2800b), references/params.md (4940b), skill-card.md (2505b), SKILL.md (11225b), _meta.json (139b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: MT-Paotui-For-Client\ndescription: 美团跑腿下单助手，通过直接调用地址提单等接口实现用户跑腿需求。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。\n---\n\n# 美团跑腿下单 Skill\n\n> ⚠️ **输出规范**：\n> 1. **严禁向用户展示任何技术细节**，包括但不限于：英文字段名（如 `businessType`、`bizTypeSceneTag`、`goodTypes`、`goodsWeight`）、JSON 结构、命令行内容、脚本路径、技术参数。执行过程中的中间状态（构造参数、调用接口）不展示，只展示用户需要知道的结果。\n> 2. **只展示用户意图相关的信息**：地址摘要（\"从 xxx 送到 xxx\"）、物品名称、费用卡片、预计时效、操作结果。费用卡片按固定模板逐行展示（见 Step 5）。\n> 3. **所有输出必须格式化展示，严格换行**：每个字段独占一行，用空行分隔。禁止将多条信息挤在一行。\n> 4. **手机号不脱敏**：地址簿返回的脱敏号码（如 `123****4567`）原样展示，不做额外处理。\n\n> ⚠️ **强制重读**：每次会话第一次触发时，必须重新读取本文件，不得依赖历史记忆。\n\n## When to Use\n\n帮取送、帮买、餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。用户说出\"跑腿\"、\"帮我送\"、\"帮我取\"、\"同城配送\"等意图时触发。\n\n## When NOT to Use\n\n询问其他业务场景，跨城市配送或者用户明确表示不下单时。\n\n## 风险提示与免责声明：\n\n本 Skill 运行在用户自行选择的独立AI 助手环境中，由用户自行选择的大模型驱动。美团仅提供跑腿相关接口和 Skill 定义，不对 AI 助手的运行环境、大模型安全合规性承担任何责任。\n\n• 用户应确保所使用的 AI 助手已在中国大陆完成安全备案，并符合相关法律法规要求\n\n• 用户应审慎评估 AI 对需求的理解偏差风险，使用本人账号授权操作，确认订单预览后再提交\n\n• 如发现异常订单或 AI 行为异常，请立即联系美团客服处理\n---\n\n## 场景识别与分流\n\n收到用户请求后，首先判断属于以下哪种场景，后续流程按对应分支执行：\n\n- **帮取送**：从 A 地取件送到 B 地，需要取件地址 + 收件地址 + 物品信息\n- **帮买**：骑手代购商品，需要购买地址 + 收件地址 + 购买物品\n- **帮忙**（以下场景统一归为帮忙）：餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。只需一个地址，不涉及物品信息\n\n---\n\n## 安全门控\n\n> ⚠️ 跑腿下单是**真实消费、不可逆操作**：\n\n1. **强制两步确认**：先预览展示费用卡片，等用户明确回复\"确认\"后才加 `--confirm` 提交。\n2. **信息完整性**：取件地址、收件地址缺一不可。电话优先级：用户明确指定的电话 > 地址簿的 `phone` 字段 > 登录账号的手机号。\n3. **金额异常拦截**：费用 > 100 元时需额外向用户确认。\n\n---\n\n## 工作流程\n\n**Step 0：登录授权检查**（首次使用或 Token 失效时执行）\n\n1. 执行 `login` 命令检查登录状态（快速返回，不阻塞）：\n   ```bash\n   sh dist/run.sh login\n   ```\n2. 检查输出：\n   - **输出 `✅ 已登录`** → 直接进入 Step 1\n   - **输出 `AUTH_LINK`** → 未登录，需要用户授权\n   - **任何接口返回 `code: 10000`**（Token 服务端过期） → 执行 `login --force` 强制重新获取授权链接\n3. 当输出 `AUTH_LINK` 时，按以下格式展示给用户：\n\n> 需要先授权美团账号，请完成以下操作后告诉我：\n>\n> 📱 **手机端**：直接点击下方链接，跳转美团 App 完成授权\n> [点击授权]({授权链接})\n>\n> 💻 **电脑端**：将以下链接复制到手机浏览器打开，再用美团 App 完成授权（链接 10 分钟内有效）：\n> `{授权链接}`\n\n4. 用户完成授权后，执行 `confirm_auth` 完成授权：\n   ```bash\n   sh dist/run.sh confirm_auth\n   ```\n   - 输出 `✅ 授权成功` → 进入 Step 1\n   - 超时或失败 → 提示用户重新执行 `login --force`\n\n> ⚠️ **Token 服务端过期检测**：当业务接口返回 `code: 10000` 时，即使本地缓存存在也应视为 Token 已失效，必须使用 `login --force` 强制刷新。\n\n**Step 1：信息预收集**（静默，不等用户回复）\n\n从对话中提取已知信息（场景/物品/地址），判断场景分流，直接进入 Step 2，**严禁**在登录检查前追问用户任何信息。\n\n**Step 2：拉取地址簿**\n\n登录确认后立即拉取地址簿。\n\n- 用户提到具体地址 → 地址簿模糊匹配，匹配不到再调用 POI 搜索\n- 用户未提地址 → 按 `lastUseTime` 降序展示前 3 条，格式：\n\n```\n① 地址1-门牌号1\n　　王 · 123****4567\n\n② 地址2-门牌号2\n　　王 · 134****6789\n\n还有 XX 条地址，可以说关键词筛选\n```\n\n询问用户：**\"请问用哪个地址？（可以直接说序号或关键词，比如1送到2，也可以直接说新地址）\"**\n\n> ⚠️ 地址列表展示也必须格式化，每个地址独占一块（含换行），不得堆砌在一行。\n\n**Step 3：地址确认**\n\n- 选序号 → 直接使用地址簿的坐标和电话，跳过 POI 搜索\n- 说关键词 → 地址簿模糊匹配，匹配不到才调用 `search_poi`\n- 新地址 → 调用 `search_poi`，电话按以下优先级填入：用户明确说了电话 → 使用用户指定的；未说 → 使用登录账号的手机号，**不追问**\n- 用户在任意时刻明确说了取件人或收件人电话 → 覆盖已有电话，使用用户指定的\n- 两个地址均需 POI 搜索时 → **并行发起**两条 `search_poi`\n\n**帮取送场景**：需要取件地址 + 收件地址，两个地址都确认后进入 Step 4。\n\n**帮买场景**：先确认收件地址，再询问购买地址：\n- 若用户已提供购买地址 → 将该地址填入 `--sender`\n- 若用户未提供 → 询问：\"请问有指定地址购买还是就近购买？\"\n  - 用户提供地址 → 将该地址填入 `--sender`\n  - 用户说\"就近购买\" → `--sender` 传收件地址，使用 `--business-type-tag 1`\n\n**帮忙场景**：只确认一个地址（帮忙地址），取件地址和收件地址在接口层均填该地址，**不向用户说明这个逻辑**。\n\n**Step 4：物品信息与参数构造**\n\n**帮取送场景**：\n- Step 1 已收集物品信息 → 直接使用\n- 用户有模糊描述（如\"一些东西\"、\"食物\"）→ 直接根据描述匹配最接近的品类，无法匹配的按\"其他\"处理，**不追问**\n- 完全没有任何物品信息 → 追问：\"请问送什么东西？\"\n- 根据物品类型查阅 [references/params.md](references/params.md) 的「物品 JSON」章节，得到类型代码、名称和重量默认值（用户告知具体重量时以实际数值为准）\n\n**帮买场景**：\n- Step 1 已收集购买物品 → 直接使用\n- 未收集 → 追问：\"请问需要购买什么物品？\"\n- 帮买场景**不需要对应品类**，物品名称直接使用用户描述\n\n**帮忙场景**：\n- **不询问、不收集、不展示任何物品信息**\n- 将用户描述的帮忙内容（如\"帮扔垃圾\"、\"帮取号\"等）填入 `--remark` 备注字段，让骑手了解具体需求\n- 直接进入 Step 5\n\n根据场景查阅 [references/params.md](references/params.md) 的「业务参数」章节，确认服务类型对应的参数组合。**严禁使用旧格式参数。**\n\n如有特殊要求（如备注信息），填入订单备注字段。\n\n**Step 5：预览 → 确认 → 提交**\n\n调用 `preview_and_submit`（不带 `--confirm`）展示费用卡片，用户确认后加 `--confirm` 提交。\n\n**第一步：预览（只展示费用，不提交）**\n\n调用 `preview_and_submit`（不带 `--confirm`），从接口返回结果中提取实际值，按以下模板逐行展示。**所有字段的值必须来自预览接口的实际返回，严禁使用示例值或硬编码值。**\n\n> ⚠️ 模板中用 `{字段名}` 表示占位，展示时必须替换为接口返回的真实数据。\n\n---\n\n### 帮取送 预览模板\n\n🛵 **服务类型** 帮取送\n\n📦 **取件地址** {接口返回的取件地址} · {取件电话}\n\n🏠 **收件地址** {接口返回的收件地址} · {收件电话}\n\n🎁 **物品** {接口返回的物品名称}\n\n📍 **距离** {接口返回的距离}\n\n💰 **配送费** {接口返回的配送费用}\n\n🕐 **预计时效** {接口返回的预计时效}\n\n💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)\n\n---\n\n### 帮买 预览模板\n\n🛵 **服务类型** 帮买\n\n🏪 **购买地址** {用户指定了购买地址时展示接口返回的取件地址；就近购买时直接展示\"就近购买\"，不展示发件地址}\n\n🏠 **收件地址** {接口返回的收件地址} · {收件电话}\n\n🛍️ **物品** {用户描述的购买物品}\n\n📍 **距离** {接口返回的距离}\n\n💰 **配送费** {接口返回的配送费用}\n\n🕐 **预计时效** {接口返回的预计时效}\n\n💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)\n\n---\n\n### 帮忙 预览模板\n\n（适用于：餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙）\n\n🛵 **服务类型** {接口返回的服务类型，如：帮扔杂物}\n\n📍 **帮忙地址** {接口返回的帮忙地址} · {联系电话}\n\n💰 **帮忙服务费用** {接口返回的费用}\n\n🕐 **预计帮忙时间** {接口返回的预计时效}\n\n💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)\n\n---\n\n然后询问用户：**确认下单吗？**\n\n**第二步：用户确认后，不换参数，直接加确认标识重新提交**。所有参数（取件地址、收件地址、物品名称、物品重量档位、服务类型）必须与预览时完全一致，不得修改任何参数。\n\n下单成功后直接提示：📬 订单已提交！请在 15 分钟内打开美团 App → 我的订单 完成支付 💳，支付成功后骑手才会来取件 🛵\n\n> ⚠️ 费用卡片必须严格按上述模板逐行换行展示，每个字段独占一行，禁止省略或压缩到一行。\n\n---\n\n## 详细参考文档\n\n- [references/commands.md](references/commands.md) — 所有命令及参数（执行方式：`sh dist/run.sh <command>`）\n- [references/params.md](references/params.md) — 地址JSON、物品JSON、businessType、城市表\n- [references/errors.md](references/errors.md) — 错误码与异常处理\n\nFile v1.0.4:README.md\n\n# 美团跑腿下单助手\n\n通过直接调用美团跑腿接口完成下单全流程，支持帮取送、帮忙、帮买三大类场景。\n\n## 功能特性\n\n- **帮取送**：A 地取件送到 B 地，支持多种物品类型\n- **帮忙**：取号（餐厅/医院/其他）、帮搬装、帮扔杂物等\n- **帮买**：代购商品，支持指定购买地址或就近购买\n- **地址簿搜索**：自动拉取用户历史地址，按最近使用时间排序展示\n- **POI 地址搜索**：地址簿匹配不到时，通过关键词搜索补全坐标\n- **两步确认**：先预览费用，用户确认后再正式提交，防止误单\n- **订单查询**：实时查看订单状态\n\n## 触发词\n\n跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。\n\n---\n\n## 目录结构\n\n```\nMT-Paotui-For-Client/\n├── SKILL.md              # 核心技能说明（Agent 指令）\n├── README.md             # 本文件\n├── dist/\n│   ├── paotui.js         # 核心下单脚本\n│   └── run.sh            # 启动脚本（推荐使用）\n├── references/\n│   ├── commands.md       # 所有命令及参数说明\n│   ├── params.md         # 地址/物品/城市参数规范\n│   └── errors.md         # 错误码与异常处理\n```\n\n> ⚠️ 本 Skill 使用 **Node.js** 运行，需要 Node.js 18+ 环境。\n\n## 风险提示与免责声明：\n\n本 Skill 运行在用户自行选择的独立AI 助手环境中，由用户自行选择的大模型驱动。美团仅提供跑腿相关接口和 Skill 定义，不对 AI 助手的运行环境、大模型安全合规性承担任何责任。\n\n• 用户应确保所使用的 AI 助手已在中国大陆完成安全备案，并符合相关法律法规要求\n\n• 用户应审慎评估 AI 对需求的理解偏差风险，使用本人账号授权操作，确认订单预览后再提交\n\n• 如发现异常订单或 AI 行为异常，请立即联系美团客服处理\n\n---\n\n## 场景零：授权\n\n### 执行流程\n\n1. 调用业务命令时自动检测是否登录，未登录则返回授权链接\n2. 根据使用环境完成授权：\n\n📱 **手机端**：直接点击授权链接，跳转美团 App 完成授权\n\n💻 **电脑端**：将授权链接复制到手机浏览器打开，再用美团 App 完成授权（链接 5 分钟内有效）\n\n---\n\n## 场景一：拉取地址簿\n\n### 触发条件\n\n需要获取用户历史地址，或用户在地址选择阶段提供关键词筛选。\n\n### 命令\n\n```bash\n# 帮取送 / 帮忙场景\nsh dist/run.sh get_address_list --address-type 1 --business-type 1 --scene 2\n\n# 帮买场景\nsh dist/run.sh get_address_list --address-type 1 --business-type 2 --scene 2\n```\n\n### 返回字段\n\n| 字段 | 说明 |\n|---|---|\n| addressId | 地址 ID |\n| address | 完整地址（楼号已含在此字段） |\n| phone | 联系电话（服务端脱敏，下单直接用） |\n| lat / lng | 坐标（整数×1e6），**直接用于下单，无需转换** |\n| cityId | 城市 ID |\n| lastUseTime | 最近使用时间戳（用于排序） |\n\n---\n\n## 场景二：POI 地址搜索\n\n### 触发条件\n\n用户提供新地址，但地址簿中匹配不到时，调用 POI 搜索获取坐标。\n\n### 命令\n\n```bash\nsh dist/run.sh search_poi --keyword \"奥林匹克森林公园南门\" --city \"北京\" --lat 39904200 --lng 116407400\n```\n\n### 参数说明\n\n| 参数 | 说明 | 默认值 |\n|---|---|---|\n| --keyword | 搜索关键词（必填） | — |\n| --city | 城市名 | 北京 |\n| --lat / --lng | 参考坐标（整数×1e6），提升搜索精度 | 北京中心 |\n\n---\n\n## 场景三：订单预览与提交\n\n### 执行流程\n\n**第一步：预览（不带 `--confirm`）** — 只展示费用，不提交\n\n**第二步：用户回复\"确认\"后加 `--confirm` 提交** — 参数必须与预览完全一致\n\n> ⚠️ 预览和提交在同一进程内完成，分开调用会导致 orderToken 失效（code 10311）。\n\n### 命令\n\n```bash\n# 预览\nsh dist/run.sh preview_and_submit \\\n  --sender '{\"address\":\"奥林匹克森林公园南门\",\"houseNumber\":\"\",\"lat\":40011253,\"lng\":116508883,\"name\":\"\",\"phone\":\"123****4567\",\"cityId\":110100}' \\\n  --recipient '{\"address\":\"望京soho\",\"houseNumber\":\"\",\"lat\":40020135,\"lng\":116469935,\"name\":\"\",\"phone\":\"123****6789\",\"cityId\":110100}' \\\n  --goods '{\"goodsName\":\"文件\",\"goodsWeight\":1,\"goodTypes\":[4],\"goodTypeNames\":[\"文件\"]}' \\\n  --business-type 1\n\n# 确认提交（参数完全相同，仅加 --confirm）\nsh dist/run.sh preview_and_submit ... --confirm\n```\n\n### 服务类型参数\n\n| 场景 | --business-type | --biz-type-scene-tag |\n|---|---|---|\n| 帮取送 | 1 | 0（默认） |\n| 餐厅取号 | 1 | 1 |\n| 医院帮忙 | 1 | 2 |\n| 其他取号 | 1 | 3 |\n| 帮搬装 | 1 | 4 |\n| 其他帮忙 | 1 | 5 |\n| 帮扔杂物 | 1 | 6 |\n| 帮买 | 2 | 0 |\n\n> ⚠️ `--business-type` 只有 1 和 2 两个合法值，严禁传 3/4/5/6。\n\n---\n\n## 场景四：查询订单状态\n\n```bash\nsh dist/run.sh get_order_status --order-id \"<orderViewId>\"\n```\n\n---\n\n## 安全门控\n\n- **两步确认**：先预览展示费用，等用户回复\"确认\"后才加 `--confirm` 提交\n- **金额拦截**：费用超过 100 元需额外向用户确认\n- **地址完整性**：取件地址、收件地址、联系电话缺一不可\n---\n\n## 相关文档\n\n- [references/commands.md](references/commands.md) — 所有命令及参数\n- [references/params.md](references/params.md) — 地址/物品/城市规范\n- [references/errors.md](references/errors.md) — 错误码与处理方式\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn71y9yc73jym61ban40qyj59h84r5jp\",\n  \"slug\": \"mt-paotui-for-client\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1779952509782\n}\n\nFile v1.0.4:references/commands.md\n\n# 命令参考\n\n## 执行方式\n\n```bash\n# 分发包（推荐）—— 使用混淆打包版\nsh dist/run.sh <command> [args...]\n\n# 源码开发调试\nnode dist/paotui.js <command> [args...]\n```\n\n---\n\n## 命令列表\n\n### login\n检查登录状态 / 获取授权链接（快速返回，不轮询）。\n```bash\n# 检查是否已登录（有缓存 → \"已登录\"退出；无缓存 → 输出授权链接后退出）\nsh dist/run.sh login\n\n# 强制重新获取授权链接（忽略本地缓存，用于 Token 服务端过期的场景）\nsh dist/run.sh login --force\n```\n- 检查本地 Token 缓存是否存在\n  - **缓存存在且未指定 `--force`** → 直接输出 `✅ 已登录`，退出码 0（耗时 ~100ms）\n  - **缓存不存在 / 指定了 `--force`** → 获取授权链接，输出 `AUTH_LINK: <url>`，退出码 0（耗时 ~800ms）\n- **不进入轮询**，立即返回。Agent 展示链接给用户后，等用户完成授权，再调用 `confirm_auth`\n- 退出码：0 = 检查通过/链接已生成，1 = 获取链接失败\n\n> ⚠️ 当接口返回 `code: 10000`（Token 服务端过期）时，应自动执行 `login --force` 重新授权。\n\n---\n\n### confirm_auth\n用户扫码后调用，轮询 Passport 授权状态并写入 Token 缓存。\n```bash\nsh dist/run.sh confirm_auth\n```\n- 读取 `/tmp/mt_passport_session.json` 中的 auth_code（由 login 命令写入）\n- 轮询 `/api/account/userauth/check`，等待用户 App 确认（最多 600 秒）\n- 成功 → Token 写入 `~/.xiaomei-workspace/mt_passport_auth.json`，返回 `✅ 授权成功`\n- 失败（超时/风控/取消）→ 返回具体错误，Token 不写入\n\n> 标准授权流程：`login` → 展示授权链接给用户 → 用户完成授权 → `confirm_auth`\n\n---\n\n### search_poi\nPOI 地址搜索，获取地址坐标。\n```bash\nsh dist/run.sh search_poi --keyword \"融新科技中心\" --city \"北京\" --lat 39904200 --lng 116407400\n```\n- `--keyword`：搜索关键词（必填）\n- `--city`：城市名（默认北京）\n- `--lat` / `--lng`：参考坐标，提升搜索精度（整数×1e6）\n\n---\n\n### get_address_list\n获取用户地址簿（推荐，含坐标/标签/最近使用时间）。\n```bash\n# 帮送场景（默认）\nsh dist/run.sh get_address_list --address-type 1 --business-type 1 --scene 2\n\n# 帮买场景\nsh dist/run.sh get_address_list --address-type 1 --business-type 2 --scene 2\n```\n返回字段：`addressId`、`address`、`houseNumber`、`name`、`phone`（服务端脱敏，下单直接用）、`lat`/`lng`（整数×1e6，**直接用于下单**）、`cityId`、`tag`、`isDefault`、`lastUseTime`。\n\n---\n\n### preview_and_submit\n配送预览 + 提交一体化（推荐）。\n```bash\n# 第一步：预览（不带 --confirm，只展示费用，不提交）\nsh dist/run.sh preview_and_submit \\\n  --sender '<地址JSON>' \\\n  --recipient '<地址JSON>' \\\n  --goods '<物品JSON>' \\\n  --business-type 1 \\\n  [--biz-type-scene-tag 0] \\\n  [--tip-fee 0] \\\n  [--remark \"\"] \\\n  [--purchase-detail \"\"]\n\n# 第二步：用户确认后加 --confirm 提交（参数完全相同）\nsh dist/run.sh preview_and_submit ... --confirm\n```\n> ⚠️ `--confirm` 模式在同一进程内完成预览+提交，避免 orderToken 跨进程失效（code 10311）。\n\n---\n\n### get_order_status\n查询订单状态。\n```bash\nsh dist/run.sh get_order_status --order-id \"<orderViewId>\"\n```\n\nFile v1.0.4:references/errors.md\n\n# 异常处理\n\n| 错误码 / 现象 | 展示给用户 | 处理方式 |\n|---|---|---|\n| 登录失效 / `status: error` / `AUTH_REQUIRED` / `AUTH_FAILED` | Token 不存在或已失效，请重新触发登录，我会展示新的授权链接 | 执行 `login` 命令重新授权 |\n| `10000` Token 服务端过期 | 登录已过期，需要重新授权 | 本地缓存可能仍存在但服务端已失效，需强制重新授权（`login --force`） |\n| `10001` 城市未开通 | 该城市暂未开通服务，建议使用美团 App 确认是否支持 | — |\n| `10002` 未知错误 | 信息异常，请检查下单参数。帮忙类用 businessType=1，帮买用 2 | 检查参数后重试 |\n| `10112` 区域未开通 | 该地址所在区域暂未开通服务，建议更换到其他地址 | 更换地址 |\n| `10113` 城市未开通 | 该地址所在城市暂未开通服务，建议切换到其他城市 | 更换城市 |\n| `10114` 因恶劣天气/道路管制等暂无法配送 | 因恶劣天气/道路管制/疫情等原因，暂无法配送，敬请谅解，建议稍后重试 | 稍后重试 |\n| `10115` 配送距离过远 | 配送距离过远，请重新选择地址 | 缩短配送距离 |\n| `10116` 无效地址 | 请选择有效的地址，提供更精确的地址（含街道/楼号/校区名）有助于定位 | 提供更精确地址 |\n| `10309` 配送费已动态发生变化 | 配送费已变动，请重新下单（同一次对话内重新预览即可） | 重新预览 |\n| `10311` orderToken 失效 | 订单token失效，请重新下单（同进程内完成） | 使用 `preview_and_submit --confirm` 一体化命令 |\n| `10401` 配送费计算失败 | 配送费计算失败，请重试一次 | 重试 |\n| `11004~11008` 风控拒绝 | 下单信息异常，请检查地址和备注信息后重试 | 确保 `houseNumber`/`name`/`remark` 留空 |\n| POI 搜索无结果 | 未找到该地址，请提供更精确的地址（含街道/楼号） | 换更精确关键词重新搜索 |\n| 费用预览失败 | 费用预览失败，请检查地址坐标是否正确或尝试缩短距离 | 检查坐标或缩短距离 |\n| 网络超时 | 网络请求超时，请检查网络后重试 | 检查网络/VPN 后重试 |\n| `响应解析失败` | 接口响应异常，请检查网络/VPN 连接后重试 | 检查网络/VPN 连接 |\n\n## Token 失效自动检测\n\n当任何接口返回 `code: 10000` 且 `message` 为\"未知错误\"时，应视为 Token 服务端过期：\n\n1. 自动执行 `login --force` 强制重新授权\n2. 授权成功后重试原请求\n3. 若重试仍失败，按实际错误码处理\n\n> ⚠️ `login`（不带 `--force`）仅检查本地缓存文件，不验证服务端有效性。因此本地 Token 存在 ≠ 服务端有效，收到 10000 时必须使用 `login --force` 强制刷新。\n\nFile v1.0.4:references/params.md\n\n# 参数说明\n\n## 地址 JSON（--sender / --recipient）\n\n```json\n{\n  \"address\": \"北京市朝阳区融新科技中心A座\",  // 完整地址，楼号直接拼入此字段\n  \"houseNumber\": \"\",                          // 固定留空，填写会触发风控（11004~11008）\n  \"lat\": 40019368,                            // 纬度，整数×1e6\n  \"lng\": 116469191,                           // 经度，整数×1e6\n  \"name\": \"\",                                 // 固定留空，填写会触发风控\n  \"phone\": \"138xxxx5678\",                     // 联系电话（地址簿返回的脱敏号码可直接使用）\n  \"cityId\": 110100                            // 城市ID，见城市表\n}\n```\n\n> ⚠️ `houseNumber` / `name` / `remark` 必须留空，填写会触发风控（11004~11008）。\n\n**单地址场景**（取号/帮搬/帮扔/医院帮忙/其他帮忙）：`--sender` 和 `--recipient` 传同一个地址 JSON。\n\n---\n\n## 物品 JSON（--goods）\n\n```json\n{\n  \"goodsName\": \"其他\",\n  \"goodsWeight\": 1,          // 物品实际重量（公斤数），值是多少就是多少公斤，如 15 表示 15kg。重量越大配送费越贵\n  \"goodTypes\": [8],          // 物品类型数组，必须按下方映射表选择对应值，禁止直接复制此示例\n  \"goodTypeNames\": [\"其他\"]  // 物品类型名称数组（与 goodTypes 一一对应）\n}\n```\n\n> ⚠️ **严格查表规则**：`goodTypes` 数值与 `goodTypeNames` 名称必须**整行一起取**，禁止单独推断（如\"餐饮\"绝不是 `[1]`，\"鲜花\"绝不是 `[2]`）。每次都必须找到用户描述对应的那一整行，同时取出该行的 `goodTypes` 和 `goodTypeNames`，缺一不可。\n\n| 用户描述关键词 | goodTypes（数值） | goodTypeNames（名称） | goodsWeight 默认值 |\n|---|---|---|---|\n| 餐饮、外卖、食物、饭、菜、奶茶、饮料 | **`[2]`** | **`[\"餐饮\"]`** | 1 |\n| 文件、合同、资料、单据、证件、文书 | **`[4]`** | **`[\"文件\"]`** | 1 |\n| 生鲜、水果、蔬菜、肉、海鲜 | **`[3]`** | **`[\"生鲜\"]`** | 2 |\n| 蛋糕、甜品 | **`[9]`** | **`[\"蛋糕\"]`** | 2 |\n| 鲜花、花束、花 | **`[1]`** | **`[\"鲜花\"]`** | 1 |\n| 数码、手机、电脑、平板、耳机、电子产品 | **`[5]`** | **`[\"数码\"]`** | 1 |\n| 服饰、衣服、鞋、包、服装 | **`[7]`** | **`[\"服饰\"]`** | 1 |\n| 快递、包裹、箱子 | **`[8]`** | **`[\"快递\"]`** | 2 |\n| 五金、工具、零件、螺丝、管件 | **`[2]`** | **`[\"五金\"]`** | 2 |\n| 汽配、汽车配件、车零件 | **`[2]`** | **`[\"汽配\"]`** | 3 |\n| 其他、物品、东西、不明确 | **`[8]`** | **`[\"其他\"]`** | 1 |\n\n> ⚠️ `goodsWeight` 值即公斤数。如用户明确说\"15公斤\"，传 `15`；说\"5公斤左右\"，传 `5`。默认值仅供参考，**以用户实际告知为准**。\n\n---\n\n## businessType 与 bizTypeSceneTag\n\n`businessType` 只有两个合法值，**严禁传 3/4/5/6**（会导致 10002 错误）：\n\n| 用户意图 | --business-type | --biz-type-scene-tag |\n|---|---|---|\n| 帮取送文件/物品（A→B） | 1 | 0（默认） |\n| 餐厅取号 | 1 | 1 |\n| 医院帮忙 | 1 | 2 |\n| 其他取号 | 1 | 3 |\n| 帮搬装 | 1 | 4 |\n| 其他帮忙 | 1 | 5 |\n| 帮扔杂物 | 1 | 6 |\n| 帮买东西 | 2 | 0 |\n\n**purchaseGoodDetail**：帮买场景（businessType=2）**必传**，如 `\"一瓶矿泉水\"`。其他场景留空。\n\n---\n\n## businessTypeTag\n\n`businessTypeTag` 与 `bizTypeSceneTag` 是两个完全独立的参数，无关联。**仅在帮买场景（businessType=2）下生效**，用于区分购买地址来源：\n\n| 场景 | --business-type-tag | 含义 |\n|------|---------------------|------|\n| 帮买 - 用户指定购买地址 | `0` | 骑手前往 `--sender` 指定地址购买 |\n| 帮买 - 就近购买 | `1` | 骑手自行决定购买地点，`--sender` 传收件地址 |\n| 帮取送（businessType=1） | `0` | 不适用 |\n\n---\n\n## 城市表\n\n默认使用**北京**。用户提到城市时查此表获取 `cityId` 和参考坐标。\n\n| 城市 | cityId | --city | lat | lng |\n|------|--------|--------|-----|-----|\n| 北京 | 110100 | 北京 | 39904200 | 116407400 |\n| 上海 | 310100 | 上海 | 31231700 | 121472600 |\n| 广州 | 440100 | 广州 | 23129100 | 113264400 |\n| 深圳 | 440300 | 深圳 | 22543000 | 114057900 |\n| 成都 | 510100 | 成都 | 30572700 | 104066500 |\n| 杭州 | 330100 | 杭州 | 30274200 | 120153600 |\n| 武汉 | 420100 | 武汉 | 30592800 | 114305500 |\n| 南京 | 320100 | 南京 | 32060300 | 118796400 |\n| 西安 | 610100 | 西安 | 34341600 | 108939500 |\n| 重庆 | 500100 | 重庆 | 29563000 | 106551600 |\n\n> ⚠️ lat/lng 为城市中心参考坐标，仅用于 `search_poi` 提升精度，不作为下单地址坐标。不在表中的城市直接告知用户不支持。\n\n---\n\n## 坐标格式\n\n整数×1e6（如 40.019368° → 40019368）。地址簿返回的 `lat`/`lng` 已是此格式，**可直接用于下单，无需转换**。\n\nFile v1.0.4:skill-card.md\n\n## Description:\n\nHelps an agent guide Meituan errand-service ordering flows for pickup and delivery, purchasing, queueing, moving, disposal, and similar local assistance tasks.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[meituan-tech](https://clawhub.ai/user/meituan-tech)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users in supported Meituan service areas use this skill through an agent to authenticate, select addresses, preview fees, and submit local errand orders after explicit confirmation.\n\n### Deployment Geography for Use:\n\nChina mainland supported cities\n\n## Known Risks and Mitigations:\n\nRisk: The skill can submit real delivery orders that may create actual charges or operational consequences.\n\nMitigation: Keep the documented preview and explicit confirmation steps mandatory, and require an extra confirmation for fees above the documented threshold.\n\nRisk: The local Node client is opaque and requests access to Meituan authorization, saved addresses, contact details, precise coordinates, and order submission.\n\nMitigation: Install only when the publisher is trusted, review the skill before use, and prefer releases with readable source, documented endpoints, and clear privacy and retention terms.\n\nRisk: Broad automatic activation could let unrelated prompts trigger order-related workflows.\n\nMitigation: Limit activation to clear errand-ordering intent and require user-visible review before any submit action.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/meituan-tech/skills/mt-paotui-for-client)\n- [Command Reference](artifact/references/commands.md)\n- [Parameter Reference](artifact/references/params.md)\n- [Error Handling Reference](artifact/references/errors.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown responses with shell command invocations and structured command arguments.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires explicit confirmation before order submission; supports authentication, address lookup, fee preview, submission, and order status workflows.]\n\n## Skill Version(s):\n\n1.0.4 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.4:dist/vendor/cliguard/js/package.json\n\n{ \"name\": \"cliguard\", \"version\": \"1.3.1\" }\n\nArchive v1.0.3: 12 files, 1398000 bytes\n\nFiles: dist/paotui.js (3643148b), dist/run.sh (268b), dist/vendor/cliguard/js/cliguard-wrapper.js (31916b), dist/vendor/cliguard/js/cliguard.js (55899b), dist/vendor/cliguard/js/package.json (43b), README.md (5690b), references/commands.md (3497b), references/errors.md (2775b), references/params.md (4940b), skill-card.md (2328b), SKILL.md (11560b), _meta.json (139b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: MT-Paotui-For-Client\ndescription: 美团跑腿下单助手，通过直接调用地址提单等接口实现用户跑腿需求。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。\n---\n\n# 美团跑腿下单 Skill\n\n> ⚠️ **输出规范**：\n> 1. **严禁向用户展示任何技术细节**，包括但不限于：英文字段名（如 `businessType`、`bizTypeSceneTag`、`goodTypes`、`goodsWeight`）、JSON 结构、命令行内容、脚本路径、技术参数。执行过程中的中间状态（构造参数、调用接口）不展示，只展示用户需要知道的结果。\n> 2. **只展示用户意图相关的信息**：地址摘要（\"从 xxx 送到 xxx\"）、物品名称、费用卡片、预计时效、操作结果。费用卡片按固定模板逐行展示（见 Step 5）。\n> 3. **所有输出必须格式化展示，严格换行**：每个字段独占一行，用空行分隔。禁止将多条信息挤在一行。\n> 4. **手机号不脱敏**：地址簿返回的脱敏号码（如 `123****4567`）原样展示，不做额外处理。\n\n> ⚠️ **强制重读**：每次会话第一次触发时，必须重新读取本文件，不得依赖历史记忆。\n\n## When to Use\n\n帮取送、帮买、餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。用户说出\"跑腿\"、\"帮我送\"、\"帮我取\"、\"同城配送\"等意图时触发。\n\n## When NOT to Use\n\n询问其他业务场景，跨城市配送或者用户明确表示不下单时。\n\n## 风险提示与免责声明：\n\n本 Skill 运行在用户自行选择的独立AI 助手环境中，由用户自行选择的大模型驱动。美团仅提供跑腿相关接口和 Skill 定义，不对 AI 助手的运行环境、大模型安全合规性承担任何责任。\n\n• 用户应确保所使用的 AI 助手已在中国大陆完成安全备案，并符合相关法律法规要求\n\n• 用户应审慎评估 AI 对需求的理解偏差风险，使用本人账号授权操作，确认订单预览后再提交\n\n• 如发现异常订单或 AI 行为异常，请立即联系美团客服处理\n---\n\n## 场景识别与分流\n\n收到用户请求后，首先判断属于以下哪种场景，后续流程按对应分支执行：\n\n- **帮取送**：从 A 地取件送到 B 地，需要取件地址 + 收件地址 + 物品信息\n- **帮买**：骑手代购商品，需要购买地址 + 收件地址 + 购买物品\n- **帮忙**（以下场景统一归为帮忙）：餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。只需一个地址，不涉及物品信息\n\n---\n\n## 安全门控\n\n> ⚠️ 跑腿下单是**真实消费、不可逆操作**：\n\n1. **强制两步确认**：先预览展示费用卡片，等用户明确回复\"确认\"后才加 `--confirm` 提交。\n2. **信息完整性**：取件地址、收件地址缺一不可。电话优先级：用户明确指定的电话 > 地址簿的 `phone` 字段 > 登录账号的手机号。\n3. **金额异常拦截**：费用 > 100 元时需额外向用户确认。\n\n---\n\n## 工作流程\n\n**Step 0：登录授权检查**（首次使用或 Token 失效时执行）\n\n1. 执行 `login` 命令检查登录状态：\n   ```bash\n   sh dist/run.sh login\n   ```\n2. 检查结果：\n   - **返回 `✅ 已登录`** → 直接进入 Step 1\n   - **返回 `AUTH_LINK: <url>`** → 需要授权，执行下方授权流程\n   - **任何接口返回 `code: 10000`**（Token 服务端过期） → 执行 `login --force` 强制重新授权\n3. 获取授权链接后，按以下格式展示（**仅展示链接，不展示二维码**）：\n\n> 需要先授权美团账号，请完成以下操作后告诉我：\n>\n> 📱 **手机端**：直接点击下方链接，跳转美团 App 完成授权\n> [点击授权]({授权链接})\n>\n> 💻 **电脑端**：将以下链接复制到手机浏览器打开，再用美团 App 完成授权（链接 10 分钟内有效）：\n> `{授权链接}`\n\n4. 等待用户确认完成授权（用户回复\"已授权\"、\"好了\"、\"完成了\"等）\n5. 轮询授权状态：\n   ```bash\n   pt-passport auth poll-token --client_id 257c0e28178c453b8499a23c89186674\n   ```\n   - 成功 → 提示\"✅ 授权成功\"，继续进入 Step 1\n   - 超时或失败 → 提示用户重新触发，流程结束\n\n> ⚠️ **Token 服务端过期检测**：`pt-passport get-token` 仅检查本地缓存，不验证服务端有效性。当业务接口返回 `code: 10000` 时，即使本地缓存存在也应视为 Token 已失效，必须使用 `login --force` 强制刷新。\n\n> ⚠️ **依赖说明**：授权流程依赖 `pt-passport` CLI（由 `meituan-passport-user-auth` Skill 提供），需确保已安装。\n\n**Step 1：信息预收集**（静默，不等用户回复）\n\n从对话中提取已知信息（场景/物品/地址），判断场景分流，直接进入 Step 2，**严禁**在登录检查前追问用户任何信息。\n\n**Step 2：拉取地址簿**\n\n登录确认后立即拉取地址簿。\n\n- 用户提到具体地址 → 地址簿模糊匹配，匹配不到再调用 POI 搜索\n- 用户未提地址 → 按 `lastUseTime` 降序展示前 3 条，格式：\n\n```\n① 地址1-门牌号1\n　　王 · 123****4567\n\n② 地址2-门牌号2\n　　王 · 134****6789\n\n还有 XX 条地址，可以说关键词筛选\n```\n\n询问用户：**\"请问用哪个地址？（可以直接说序号或关键词，比如1送到2，也可以直接说新地址）\"**\n\n> ⚠️ 地址列表展示也必须格式化，每个地址独占一块（含换行），不得堆砌在一行。\n\n**Step 3：地址确认**\n\n- 选序号 → 直接使用地址簿的坐标和电话，跳过 POI 搜索\n- 说关键词 → 地址簿模糊匹配，匹配不到才调用 `search_poi`\n- 新地址 → 调用 `search_poi`，电话按以下优先级填入：用户明确说了电话 → 使用用户指定的；未说 → 使用登录账号的手机号，**不追问**\n- 用户在任意时刻明确说了取件人或收件人电话 → 覆盖已有电话，使用用户指定的\n- 两个地址均需 POI 搜索时 → **并行发起**两条 `search_poi`\n\n**帮取送场景**：需要取件地址 + 收件地址，两个地址都确认后进入 Step 4。\n\n**帮买场景**：先确认收件地址，再询问购买地址：\n- 若用户已提供购买地址 → 将该地址填入 `--sender`\n- 若用户未提供 → 询问：\"请问有指定地址购买还是就近购买？\"\n  - 用户提供地址 → 将该地址填入 `--sender`\n  - 用户说\"就近购买\" → `--sender` 传收件地址，使用 `--business-type-tag 1`\n\n**帮忙场景**：只确认一个地址（帮忙地址），取件地址和收件地址在接口层均填该地址，**不向用户说明这个逻辑**。\n\n**Step 4：物品信息与参数构造**\n\n**帮取送场景**：\n- Step 1 已收集物品信息 → 直接使用\n- 用户有模糊描述（如\"一些东西\"、\"食物\"）→ 直接根据描述匹配最接近的品类，无法匹配的按\"其他\"处理，**不追问**\n- 完全没有任何物品信息 → 追问：\"请问送什么东西？\"\n- 根据物品类型查阅 [references/params.md](references/params.md) 的「物品 JSON」章节，得到类型代码、名称和重量默认值（用户告知具体重量时以实际数值为准）\n\n**帮买场景**：\n- Step 1 已收集购买物品 → 直接使用\n- 未收集 → 追问：\"请问需要购买什么物品？\"\n- 帮买场景**不需要对应品类**，物品名称直接使用用户描述\n\n**帮忙场景**：\n- **不询问、不收集、不展示任何物品信息**\n- 将用户描述的帮忙内容（如\"帮扔垃圾\"、\"帮取号\"等）填入 `--remark` 备注字段，让骑手了解具体需求\n- 直接进入 Step 5\n\n根据场景查阅 [references/params.md](references/params.md) 的「业务参数」章节，确认服务类型对应的参数组合。**严禁使用旧格式参数。**\n\n如有特殊要求（如备注信息），填入订单备注字段。\n\n**Step 5：预览 → 确认 → 提交**\n\n调用 `preview_and_submit`（不带 `--confirm`）展示费用卡片，用户确认后加 `--confirm` 提交。\n\n**第一步：预览（只展示费用，不提交）**\n\n调用 `preview_and_submit`（不带 `--confirm`），从接口返回结果中提取实际值，按以下模板逐行展示。**所有字段的值必须来自预览接口的实际返回，严禁使用示例值或硬编码值。**\n\n> ⚠️ 模板中用 `{字段名}` 表示占位，展示时必须替换为接口返回的真实数据。\n\n---\n\n### 帮取送 预览模板\n\n🛵 **服务类型** 帮取送\n\n📦 **取件地址** {接口返回的取件地址} · {取件电话}\n\n🏠 **收件地址** {接口返回的收件地址} · {收件电话}\n\n🎁 **物品** {接口返回的物品名称}\n\n📍 **距离** {接口返回的距离}\n\n💰 **配送费** {接口返回的配送费用}\n\n🕐 **预计时效** {接口返回的预计时效}\n\n💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)\n\n---\n\n### 帮买 预览模板\n\n🛵 **服务类型** 帮买\n\n🏪 **购买地址** {用户指定了购买地址时展示接口返回的取件地址；就近购买时直接展示\"就近购买\"，不展示发件地址}\n\n🏠 **收件地址** {接口返回的收件地址} · {收件电话}\n\n🛍️ **物品** {用户描述的购买物品}\n\n📍 **距离** {接口返回的距离}\n\n💰 **配送费** {接口返回的配送费用}\n\n🕐 **预计时效** {接口返回的预计时效}\n\n💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)\n\n---\n\n### 帮忙 预览模板\n\n（适用于：餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙）\n\n🛵 **服务类型** {接口返回的服务类型，如：帮扔杂物}\n\n📍 **帮忙地址** {接口返回的帮忙地址} · {联系电话}\n\n💰 **帮忙服务费用** {接口返回的费用}\n\n🕐 **预计帮忙时间** {接口返回的预计时效}\n\n💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)\n\n---\n\n然后询问用户：**确认下单吗？**\n\n**第二步：用户确认后，不换参数，直接加确认标识重新提交**。所有参数（取件地址、收件地址、物品名称、物品重量档位、服务类型）必须与预览时完全一致，不得修改任何参数。\n\n下单成功后直接提示：📬 订单已提交！请在 15 分钟内打开美团 App → 我的订单 完成支付 💳，支付成功后骑手才会来取件 🛵\n\n> ⚠️ 费用卡片必须严格按上述模板逐行换行展示，每个字段独占一行，禁止省略或压缩到一行。\n\n---\n\n## 详细参考文档\n\n- [references/commands.md](references/commands.md) — 所有命令及参数（执行方式：`sh dist/run.sh <command>`）\n- [references/params.md](references/params.md) — 地址JSON、物品JSON、businessType、城市表\n- [references/errors.md](references/errors.md) — 错误码与异常处理\n\nFile v1.0.3:README.md\n\n# 美团跑腿下单助手\n\n通过直接调用美团跑腿接口完成下单全流程，支持帮取送、帮忙、帮买三大类场景。\n\n## 功能特性\n\n- **帮取送**：A 地取件送到 B 地，支持多种物品类型\n- **帮忙**：取号（餐厅/医院/其他）、帮搬装、帮扔杂物等\n- **帮买**：代购商品，支持指定购买地址或就近购买\n- **地址簿搜索**：自动拉取用户历史地址，按最近使用时间排序展示\n- **POI 地址搜索**：地址簿匹配不到时，通过关键词搜索补全坐标\n- **两步确认**：先预览费用，用户确认后再正式提交，防止误单\n- **订单查询**：实时查看订单状态\n\n## 触发词\n\n跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。\n\n---\n\n## 目录结构\n\n```\nMT-Paotui-For-Client/\n├── SKILL.md              # 核心技能说明（Agent 指令）\n├── README.md             # 本文件\n├── dist/\n│   ├── paotui.js         # 核心下单脚本\n│   └── run.sh            # 启动脚本（推荐使用）\n├── references/\n│   ├── commands.md       # 所有命令及参数说明\n│   ├── params.md         # 地址/物品/城市参数规范\n│   └── errors.md         # 错误码与异常处理\n```\n\n> ⚠️ 本 Skill 使用 **Node.js** 运行，需要 Node.js 18+ 环境。\n\n## 风险提示与免责声明：\n\n本 Skill 运行在用户自行选择的独立AI 助手环境中，由用户自行选择的大模型驱动。美团仅提供跑腿相关接口和 Skill 定义，不对 AI 助手的运行环境、大模型安全合规性承担任何责任。\n\n• 用户应确保所使用的 AI 助手已在中国大陆完成安全备案，并符合相关法律法规要求\n\n• 用户应审慎评估 AI 对需求的理解偏差风险，使用本人账号授权操作，确认订单预览后再提交\n\n• 如发现异常订单或 AI 行为异常，请立即联系美团客服处理\n\n---\n\n## 场景零：授权\n\n### 执行流程\n\n1. 调用业务命令时自动检测是否登录，未登录则返回授权链接\n2. 根据使用环境完成授权：\n\n📱 **手机端**：直接点击授权链接，跳转美团 App 完成授权\n\n💻 **电脑端**：将授权链接复制到手机浏览器打开，再用美团 App 完成授权（链接 5 分钟内有效）\n\n---\n\n## 场景一：拉取地址簿\n\n### 触发条件\n\n需要获取用户历史地址，或用户在地址选择阶段提供关键词筛选。\n\n### 命令\n\n```bash\n# 帮取送 / 帮忙场景\nsh dist/run.sh get_address_list --address-type 1 --business-type 1 --scene 2\n\n# 帮买场景\nsh dist/run.sh get_address_list --address-type 1 --business-type 2 --scene 2\n```\n\n### 返回字段\n\n| 字段 | 说明 |\n|---|---|\n| addressId | 地址 ID |\n| address | 完整地址（楼号已含在此字段） |\n| phone | 联系电话（服务端脱敏，下单直接用） |\n| lat / lng | 坐标（整数×1e6），**直接用于下单，无需转换** |\n| cityId | 城市 ID |\n| lastUseTime | 最近使用时间戳（用于排序） |\n\n---\n\n## 场景二：POI 地址搜索\n\n### 触发条件\n\n用户提供新地址，但地址簿中匹配不到时，调用 POI 搜索获取坐标。\n\n### 命令\n\n```bash\nsh dist/run.sh search_poi --keyword \"奥林匹克森林公园南门\" --city \"北京\" --lat 39904200 --lng 116407400\n```\n\n### 参数说明\n\n| 参数 | 说明 | 默认值 |\n|---|---|---|\n| --keyword | 搜索关键词（必填） | — |\n| --city | 城市名 | 北京 |\n| --lat / --lng | 参考坐标（整数×1e6），提升搜索精度 | 北京中心 |\n\n---\n\n## 场景三：订单预览与提交\n\n### 执行流程\n\n**第一步：预览（不带 `--confirm`）** — 只展示费用，不提交\n\n**第二步：用户回复\"确认\"后加 `--confirm` 提交** — 参数必须与预览完全一致\n\n> ⚠️ 预览和提交在同一进程内完成，分开调用会导致 orderToken 失效（code 10311）。\n\n### 命令\n\n```bash\n# 预览\nsh dist/run.sh preview_and_submit \\\n  --sender '{\"address\":\"奥林匹克森林公园南门\",\"houseNumber\":\"\",\"lat\":40011253,\"lng\":116508883,\"name\":\"\",\"phone\":\"123****4567\",\"cityId\":110100}' \\\n  --recipient '{\"address\":\"望京soho\",\"houseNumber\":\"\",\"lat\":40020135,\"lng\":116469935,\"name\":\"\",\"phone\":\"123****6789\",\"cityId\":110100}' \\\n  --goods '{\"goodsName\":\"文件\",\"goodsWeight\":1,\"goodTypes\":[4],\"goodTypeNames\":[\"文件\"]}' \\\n  --business-type 1\n\n# 确认提交（参数完全相同，仅加 --confirm）\nsh dist/run.sh preview_and_submit ... --confirm\n```\n\n### 服务类型参数\n\n| 场景 | --business-type | --biz-type-scene-tag |\n|---|---|---|\n| 帮取送 | 1 | 0（默认） |\n| 餐厅取号 | 1 | 1 |\n| 医院帮忙 | 1 | 2 |\n| 其他取号 | 1 | 3 |\n| 帮搬装 | 1 | 4 |\n| 其他帮忙 | 1 | 5 |\n| 帮扔杂物 | 1 | 6 |\n| 帮买 | 2 | 0 |\n\n> ⚠️ `--business-type` 只有 1 和 2 两个合法值，严禁传 3/4/5/6。\n\n---\n\n## 场景四：查询订单状态\n\n```bash\nsh dist/run.sh get_order_status --order-id \"<orderViewId>\"\n```\n\n---\n\n## 安全门控\n\n- **两步确认**：先预览展示费用，等用户回复\"确认\"后才加 `--confirm` 提交\n- **金额拦截**：费用超过 100 元需额外向用户确认\n- **地址完整性**：取件地址、收件地址、联系电话缺一不可\n---\n\n## 相关文档\n\n- [references/commands.md](references/commands.md) — 所有命令及参数\n- [references/params.md](references/params.md) — 地址/物品/城市规范\n- [references/errors.md](references/errors.md) — 错误码与处理方式\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn71y9yc73jym61ban40qyj59h84r5jp\",\n  \"slug\": \"mt-paotui-for-client\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1779873331420\n}\n\nFile v1.0.3:references/commands.md\n\n# 命令参考\n\n## 执行方式\n\n```bash\n# 分发包（推荐）—— 使用混淆打包版\nsh dist/run.sh <command> [args...]\n\n# 源码开发调试\nnode dist/paotui.js <command> [args...]\n```\n\n---\n\n## 命令列表\n\n### login\n发起授权登录流程，获取授权链接并轮询等待用户确认。整合了获取授权链接 + 轮询确认的完整流程。\n```bash\n# 正常登录（有缓存时直接复用）\nsh dist/run.sh login\n\n# 强制重新授权（忽略本地缓存，用于 Token 服务端过期的场景）\nsh dist/run.sh login --force\n```\n- 检查本地 Token 缓存是否存在且有效\n  - **缓存有效且未指定 `--force`** → 直接返回 `✅ 已登录`，无需重新授权\n  - **缓存不存在 / 已失效 / 指定了 `--force`** → 调用 `pt-passport auth get-code` 获取授权链接\n- 输出授权链接（`AUTH_LINK: <url>`），由 Skill 展示给用户\n- 用户完成授权后，自动轮询状态并写入 Token 缓存\n- 成功 → 返回 `✅ 授权成功`\n- 失败 → 返回具体错误\n\n> ⚠️ 当接口返回 `code: 10000`（Token 服务端过期）时，应自动执行 `login --force` 重新授权。\n\n**依赖**：需要系统已安装 `pt-passport` CLI（通过 `meituan-passport-user-auth` Skill 安装）。\n\n---\n\n### confirm_auth\n用户扫码授权后，轮询 Passport 授权状态并写入 Token 缓存。（推荐使用 `login` 命令代替）\n```bash\nsh dist/run.sh confirm_auth\n```\n- 读取 `/tmp/mt_passport_session.json` 中的 auth_code\n- 轮询 `/api/account/userauth/check`，等待用户 App 确认（最多 600 秒）\n- 成功 → Token 写入 `~/.xiaomei-workspace/mt_passport_auth.json`，返回 `✅ 授权成功`\n- 失败（超时/风控/取消）→ 返回具体错误，Token 不写入\n\n> ⚠️ `confirm_auth` 必须在用户扫码后立即调用，不得跳过或延迟，否则 auth_code 过期。\n\n---\n\n### search_poi\nPOI 地址搜索，获取地址坐标。\n```bash\nsh dist/run.sh search_poi --keyword \"融新科技中心\" --city \"北京\" --lat 39904200 --lng 116407400\n```\n- `--keyword`：搜索关键词（必填）\n- `--city`：城市名（默认北京）\n- `--lat` / `--lng`：参考坐标，提升搜索精度（整数×1e6）\n\n---\n\n### get_address_list\n获取用户地址簿（推荐，含坐标/标签/最近使用时间）。\n```bash\n# 帮送场景（默认）\nsh dist/run.sh get_address_list --address-type 1 --business-type 1 --scene 2\n\n# 帮买场景\nsh dist/run.sh get_address_list --address-type 1 --business-type 2 --scene 2\n```\n返回字段：`addressId`、`address`、`houseNumber`、`name`、`phone`（服务端脱敏，下单直接用）、`lat`/`lng`（整数×1e6，**直接用于下单**）、`cityId`、`tag`、`isDefault`、`lastUseTime`。\n\n---\n\n### preview_and_submit\n配送预览 + 提交一体化（推荐）。\n```bash\n# 第一步：预览（不带 --confirm，只展示费用，不提交）\nsh dist/run.sh preview_and_submit \\\n  --sender '<地址JSON>' \\\n  --recipient '<地址JSON>' \\\n  --goods '<物品JSON>' \\\n  --business-type 1 \\\n  [--biz-type-scene-tag 0] \\\n  [--tip-fee 0] \\\n  [--remark \"\"] \\\n  [--purchase-detail \"\"]\n\n# 第二步：用户确认后加 --confirm 提交（参数完全相同）\nsh dist/run.sh preview_and_submit ... --confirm\n```\n> ⚠️ `--confirm` 模式在同一进程内完成预览+提交，避免 orderToken 跨进程失效（code 10311）。\n\n---\n\n### get_order_status\n查询订单状态。\n```bash\nsh dist/run.sh get_order_status --order-id \"<orderViewId>\"\n```\n\nFile v1.0.3:references/errors.md\n\n# 异常处理\n\n| 错误码 / 现象 | 展示给用户 | 处理方式 |\n|---|---|---|\n| 登录失效 / `status: error` / `AUTH_REQUIRED` / `AUTH_FAILED` | Token 不存在或已失效，请重新触发登录，我会展示新的授权二维码 | 执行 `login` 命令重新授权 |\n| `10000` Token 服务端过期 | 登录已过期，需要重新授权 | 本地缓存可能仍存在但服务端已失效，需强制重新授权（`login --force`） |\n| `10001` 城市未开通 | 该城市暂未开通服务，建议使用美团 App 确认是否支持 | — |\n| `10002` 未知错误 | 信息异常，请检查下单参数。帮忙类用 businessType=1，帮买用 2 | 检查参数后重试 |\n| `10112` 区域未开通 | 该地址所在区域暂未开通服务，建议更换到其他地址 | 更换地址 |\n| `10113` 城市未开通 | 该地址所在城市暂未开通服务，建议切换到其他城市 | 更换城市 |\n| `10114` 因恶劣天气/道路管制等暂无法配送 | 因恶劣天气/道路管制/疫情等原因，暂无法配送，敬请谅解，建议稍后重试 | 稍后重试 |\n| `10115` 配送距离过远 | 配送距离过远，请重新选择地址 | 缩短配送距离 |\n| `10116` 无效地址 | 请选择有效的地址，提供更精确的地址（含街道/楼号/校区名）有助于定位 | 提供更精确地址 |\n| `10309` 配送费已动态发生变化 | 配送费已变动，请重新下单（同一次对话内重新预览即可） | 重新预览 |\n| `10311` orderToken 失效 | 订单token失效，请重新下单（同进程内完成） | 使用 `preview_and_submit --confirm` 一体化命令 |\n| `10401` 配送费计算失败 | 配送费计算失败，请重试一次 | 重试 |\n| `11004~11008` 风控拒绝 | 下单信息异常，请检查地址和备注信息后重试 | 确保 `houseNumber`/`name`/`remark` 留空 |\n| POI 搜索无结果 | 未找到该地址，请提供更精确的地址（含街道/楼号） | 换更精确关键词重新搜索 |\n| 费用预览失败 | 费用预览失败，请检查地址坐标是否正确或尝试缩短距离 | 检查坐标或缩短距离 |\n| 网络超时 | 网络请求超时，请检查网络后重试 | 检查网络/VPN 后重试 |\n| `响应解析失败` | 接口响应异常，请检查网络/VPN 连接后重试 | 检查网络/VPN 连接 |\n\n## Token 失效自动检测\n\n当任何接口返回 `code: 10000` 且 `message` 为\"未知错误\"时，应视为 Token 服务端过期：\n\n1. 自动执行 `login --force` 强制重新授权\n2. 授权成功后重试原请求\n3. 若重试仍失败，按实际错误码处理\n\n> ⚠️ `pt-passport get-token` 仅检查本地缓存文件，不验证服务端有效性。因此本地 Token 存在 ≠ 服务端有效，收到 10000 时必须强制刷新。\n\nFile v1.0.3:references/params.md\n\n# 参数说明\n\n## 地址 JSON（--sender / --recipient）\n\n```json\n{\n  \"address\": \"北京市朝阳区融新科技中心A座\",  // 完整地址，楼号直接拼入此字段\n  \"houseNumber\": \"\",                          // 固定留空，填写会触发风控（11004~11008）\n  \"lat\": 40019368,                            // 纬度，整数×1e6\n  \"lng\": 116469191,                           // 经度，整数×1e6\n  \"name\": \"\",                                 // 固定留空，填写会触发风控\n  \"phone\": \"138xxxx5678\",                     // 联系电话（地址簿返回的脱敏号码可直接使用）\n  \"cityId\": 110100                            // 城市ID，见城市表\n}\n```\n\n> ⚠️ `houseNumber` / `name` / `remark` 必须留空，填写会触发风控（11004~11008）。\n\n**单地址场景**（取号/帮搬/帮扔/医院帮忙/其他帮忙）：`--sender` 和 `--recipient` 传同一个地址 JSON。\n\n---\n\n## 物品 JSON（--goods）\n\n```json\n{\n  \"goodsName\": \"其他\",\n  \"goodsWeight\": 1,          // 物品实际重量（公斤数），值是多少就是多少公斤，如 15 表示 15kg。重量越大配送费越贵\n  \"goodTypes\": [8],          // 物品类型数组，必须按下方映射表选择对应值，禁止直接复制此示例\n  \"goodTypeNames\": [\"其他\"]  // 物品类型名称数组（与 goodTypes 一一对应）\n}\n```\n\n> ⚠️ **严格查表规则**：`goodTypes` 数值与 `goodTypeNames` 名称必须**整行一起取**，禁止单独推断（如\"餐饮\"绝不是 `[1]`，\"鲜花\"绝不是 `[2]`）。每次都必须找到用户描述对应的那一整行，同时取出该行的 `goodTypes` 和 `goodTypeNames`，缺一不可。\n\n| 用户描述关键词 | goodTypes（数值） | goodTypeNames（名称） | goodsWeight 默认值 |\n|---|---|---|---|\n| 餐饮、外卖、食物、饭、菜、奶茶、饮料 | **`[2]`** | **`[\"餐饮\"]`** | 1 |\n| 文件、合同、资料、单据、证件、文书 | **`[4]`** | **`[\"文件\"]`** | 1 |\n| 生鲜、水果、蔬菜、肉、海鲜 | **`[3]`** | **`[\"生鲜\"]`** | 2 |\n| 蛋糕、甜品 | **`[9]`** | **`[\"蛋糕\"]`** | 2 |\n| 鲜花、花束、花 | **`[1]`** | **`[\"鲜花\"]`** | 1 |\n| 数码、手机、电脑、平板、耳机、电子产品 | **`[5]`** | **`[\"数码\"]`** | 1 |\n| 服饰、衣服、鞋、包、服装 | **`[7]`** | **`[\"服饰\"]`** | 1 |\n| 快递、包裹、箱子 | **`[8]`** | **`[\"快递\"]`** | 2 |\n| 五金、工具、零件、螺丝、管件 | **`[2]`** | **`[\"五金\"]`** | 2 |\n| 汽配、汽车配件、车零件 | **`[2]`** | **`[\"汽配\"]`** | 3 |\n| 其他、物品、东西、不明确 | **`[8]`** | **`[\"其他\"]`** | 1 |\n\n> ⚠️ `goodsWeight` 值即公斤数。如用户明确说\"15公斤\"，传 `15`；说\"5公斤左右\"，传 `5`。默认值仅供参考，**以用户实际告知为准**。\n\n---\n\n## businessType 与 bizTypeSceneTag\n\n`businessType` 只有两个合法值，**严禁传 3/4/5/6**（会导致 10002 错误）：\n\n| 用户意图 | --business-type | --biz-type-scene-tag |\n|---|---|---|\n| 帮取送文件/物品（A→B） | 1 | 0（默认） |\n| 餐厅取号 | 1 | 1 |\n| 医院帮忙 | 1 | 2 |\n| 其他取号 | 1 | 3 |\n| 帮搬装 | 1 | 4 |\n| 其他帮忙 | 1 | 5 |\n| 帮扔杂物 | 1 | 6 |\n| 帮买东西 | 2 | 0 |\n\n**purchaseGoodDetail**：帮买场景（businessType=2）**必传**，如 `\"一瓶矿泉水\"`。其他场景留空。\n\n---\n\n## businessTypeTag\n\n`businessTypeTag` 与 `bizTypeSceneTag` 是两个完全独立的参数，无关联。**仅在帮买场景（businessType=2）下生效**，用于区分购买地址来源：\n\n| 场景 | --business-type-tag | 含义 |\n|------|---------------------|------|\n| 帮买 - 用户指定购买地址 | `0` | 骑手前往 `--sender` 指定地址购买 |\n| 帮买 - 就近购买 | `1` | 骑手自行决定购买地点，`--sender` 传收件地址 |\n| 帮取送（businessType=1） | `0` | 不适用 |\n\n---\n\n## 城市表\n\n默认使用**北京**。用户提到城市时查此表获取 `cityId` 和参考坐标。\n\n| 城市 | cityId | --city | lat | lng |\n|------|--------|--------|-----|-----|\n| 北京 | 110100 | 北京 | 39904200 | 116407400 |\n| 上海 | 310100 | 上海 | 31231700 | 121472600 |\n| 广州 | 440100 | 广州 | 23129100 | 113264400 |\n| 深圳 | 440300 | 深圳 | 22543000 | 114057900 |\n| 成都 | 510100 | 成都 | 30572700 | 104066500 |\n| 杭州 | 330100 | 杭州 | 30274200 | 120153600 |\n| 武汉 | 420100 | 武汉 | 30592800 | 114305500 |\n| 南京 | 320100 | 南京 | 32060300 | 118796400 |\n| 西安 | 610100 | 西安 | 34341600 | 108939500 |\n| 重庆 | 500100 | 重庆 | 29563000 | 106551600 |\n\n> ⚠️ lat/lng 为城市中心参考坐标，仅用于 `search_poi` 提升精度，不作为下单地址坐标。不在表中的城市直接告知用户不支持。\n\n---\n\n## 坐标格式\n\n整数×1e6（如 40.019368° → 40019368）。地址簿返回的 `lat`/`lng` 已是此格式，**可直接用于下单，无需转换**。\n\nFile v1.0.3:skill-card.md\n\n## Description: <br>\nMT-Paotui-For-Client helps an agent prepare, preview, and submit Meituan Paotui courier, purchasing, queueing, moving, disposal, and other errand orders. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[meituan-tech](https://clawhub.ai/user/meituan-tech) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users with a Meituan account use this skill to prepare local errand orders, choose addresses, preview fees and timing, and submit orders only after confirmation. <br>\n\n### Deployment Geography for Use: <br>\nMainland China <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The security evidence marks the release suspicious because opaque executable code handles Meituan authorization, address book details, phone information, persistence, remote update behavior, and order submission. <br>\nMitigation: Install only if you trust the publisher, consider running it in a contained environment, and verify every address, phone number, fee, and preview before confirming an order. <br>\nRisk: The skill can initiate real paid delivery or errand orders after user confirmation. <br>\nMitigation: Use the documented two-step preview and confirmation flow, require extra confirmation for fees over 100 RMB, and stop if the preview does not match the user's intent. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/meituan-tech/mt-paotui-for-client) <br>\n- [Command reference](references/commands.md) <br>\n- [Parameter reference](references/params.md) <br>\n- [Error reference](references/errors.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, guidance] <br>\n**Output Format:** [Markdown status messages, order previews, confirmation prompts, and shell command invocations] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires Node.js 18+ and a Meituan authorization flow through the pt-passport CLI.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.0.3:dist/vendor/cliguard/js/package.json\n\n{ \"name\": \"cliguard\", \"version\": \"1.3.1\" }\n\nArchive v1.0.2: 11 files, 1921311 bytes\n\nFiles: _meta.json (139b), dist/paotui.js (5178485b), dist/run.sh (285b), dist/vendor/cliguard/js/cliguard-wrapper.js (31916b), dist/vendor/cliguard/js/cliguard.js (55899b), dist/vendor/cliguard/js/package.json (43b), README.md (5690b), references/commands.md (2468b), references/errors.md (1731b), references/params.md (4441b), SKILL.md (10508b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: MT-Paotui-For-Client\ndescription: 美团跑腿下单助手，通过直接调用地址提单等接口实现用户跑腿需求。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。\n---\n\n# 美团跑腿下单 Skill\n\n> ⚠️ **输出规范**：\n> 1. **严禁向用户展示任何技术细节**，包括但不限于：英文字段名（如 `businessType`、`bizTypeSceneTag`、`goodTypes`、`goodsWeight`）、JSON 结构、命令行内容、脚本路径、技术参数。执行过程中的中间状态（构造参数、调用接口）不展示，只展示用户需要知道的结果。\n> 2. **只展示用户意图相关的信息**：地址摘要（\"从 xxx 送到 xxx\"）、物品名称、费用卡片、预计时效、操作结果。费用卡片按固定模板逐行展示（见 Step 5）。\n> 3. **所有输出必须格式化展示，严格换行**：每个字段独占一行，用空行分隔。禁止将多条信息挤在一行。\n> 4. **手机号不脱敏**：地址簿返回的脱敏号码（如 `123****4567`）原样展示，不做额外处理。\n\n> ⚠️ **强制重读**：每次会话第一次触发时，必须重新读取本文件，不得依赖历史记忆。\n\n## When to Use\n\n帮取送、帮买、餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。用户说出\"跑腿\"、\"帮我送\"、\"帮我取\"、\"同城配送\"等意图时触发。\n\n## When NOT to Use\n\n询问其他业务场景，跨城市配送或者用户明确表示不下单时。\n\n## 风险提示与免责声明：\n\n本 Skill 运行在用户自行选择的独立AI 助手环境中，由用户自行选择的大模型驱动。美团仅提供跑腿相关接口和 Skill 定义，不对 AI 助手的运行环境、大模型安全合规性承担任何责任。\n\n• 用户应确保所使用的 AI 助手已在中国大陆完成安全备案，并符合相关法律法规要求\n\n• 用户应审慎评估 AI 对需求的理解偏差风险，使用本人账号授权操作，确认订单预览后再提交\n\n• 如发现异常订单或 AI 行为异常，请立即联系美团客服处理\n---\n\n## 场景识别与分流\n\n收到用户请求后，首先判断属于以下哪种场景，后续流程按对应分支执行：\n\n- **帮取送**：从 A 地取件送到 B 地，需要取件地址 + 收件地址 + 物品信息\n- **帮买**：骑手代购商品，需要购买地址 + 收件地址 + 购买物品\n- **帮忙**（以下场景统一归为帮忙）：餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。只需一个地址，不涉及物品信息\n\n---\n\n## 安全门控\n\n> ⚠️ 跑腿下单是**真实消费、不可逆操作**：\n\n1. **强制两步确认**：先预览展示费用卡片，等用户明确回复\"确认\"后才加 `--confirm` 提交。\n2. **信息完整性**：取件地址、收件地址缺一不可。电话优先级：用户明确指定的电话 > 地址簿的 `phone` 字段 > 登录账号的手机号。\n3. **金额异常拦截**：费用 > 100 元时需额外向用户确认。\n\n---\n\n## 工作流程\n\n**Step 0：登录授权检查**（首次使用或 Token 失效时执行）\n\n1. 调用接口检查 Token 是否有效\n2. 检查结果：\n   - **Token 有效** → 直接进入 Step 1\n   - **需要授权** → 执行下方授权流程\n3. 获取授权链接后，按以下格式展示（**不展示二维码**）：\n\n> 需要先授权美团账号，请完成以下操作后告诉我：\n>\n> 📱 **手机端**：直接点击下方链接，跳转美团 App 完成授权\n> [点击授权]({授权链接})\n>\n> 💻 **电脑端**：将以下链接复制到手机浏览器打开，再用美团 App 完成授权（链接 5 分钟内有效）：\n> `{授权链接}`\n\n4. 等待用户确认完成授权（用户回复\"已授权\"、\"好了\"、\"完成了\"等）\n5. 轮询授权状态\n   - 成功 → 提示\"✅ 授权成功\"，继续进入 Step 1\n   - 超时或失败 → 提示用户重新触发，流程结束\n\n> ⚠️ 授权轮询等待时间约 3~10 秒（取决于用户操作速度），无需人工干预。授权码有效期 600 秒。\n\n**Step 1：信息预收集**（静默，不等用户回复）\n\n从对话中提取已知信息（场景/物品/地址），判断场景分流，直接进入 Step 2，**严禁**在登录检查前追问用户任何信息。\n\n**Step 2：拉取地址簿**\n\n登录确认后立即拉取地址簿。\n\n- 用户提到具体地址 → 地址簿模糊匹配，匹配不到再调用 POI 搜索\n- 用户未提地址 → 按 `lastUseTime` 降序展示前 3 条，格式：\n\n```\n① 地址1-门牌号1\n　　王 · 123****4567\n\n② 地址2-门牌号2\n　　王 · 134****6789\n\n还有 XX 条地址，可以说关键词筛选\n```\n\n询问用户：**\"请问用哪个地址？（可以直接说序号或关键词，比如1送到2，也可以直接说新地址）\"**\n\n> ⚠️ 地址列表展示也必须格式化，每个地址独占一块（含换行），不得堆砌在一行。\n\n**Step 3：地址确认**\n\n- 选序号 → 直接使用地址簿的坐标和电话，跳过 POI 搜索\n- 说关键词 → 地址簿模糊匹配，匹配不到才调用 `search_poi`\n- 新地址 → 调用 `search_poi`，电话按以下优先级填入：用户明确说了电话 → 使用用户指定的；未说 → 使用登录账号的手机号，**不追问**\n- 用户在任意时刻明确说了取件人或收件人电话 → 覆盖已有电话，使用用户指定的\n- 两个地址均需 POI 搜索时 → **并行发起**两条 `search_poi`\n\n**帮取送场景**：需要取件地址 + 收件地址，两个地址都确认后进入 Step 4。\n\n**帮买场景**：先确认收件地址，再询问购买地址：\n- 若用户已提供购买地址 → 将该地址填入取件地址\n- 若用户未提供 → 询问：\"请问有指定地址购买还是就近购买？\"\n  - 用户提供地址 → 将该地址填入取件地址\n  - 用户说\"就近购买\" → 取件地址填收件地址\n\n**帮忙场景**：只确认一个地址（帮忙地址），取件地址和收件地址在接口层均填该地址，**不向用户说明这个逻辑**。\n\n**Step 4：物品信息与参数构造**\n\n**帮取送场景**：\n- Step 1 已收集物品信息 → 直接使用\n- 用户有模糊描述（如\"一些东西\"、\"食物\"）→ 直接根据描述匹配最接近的品类，无法匹配的按\"其他\"处理，**不追问**\n- 完全没有任何物品信息 → 追问：\"请问送什么东西？\"\n- 根据物品类型查阅 [references/params.md](references/params.md) 的「物品 JSON」章节，得到类型代码、名称和重量默认值（用户告知具体重量时以实际数值为准）\n\n**帮买场景**：\n- Step 1 已收集购买物品 → 直接使用\n- 未收集 → 追问：\"请问需要购买什么物品？\"\n- 帮买场景**不需要对应品类**，物品名称直接使用用户描述\n\n**帮忙场景**：\n- **不询问、不收集、不展示任何物品信息**，直接进入 Step 5\n\n根据场景查阅 [references/params.md](references/params.md) 的「业务参数」章节，确认服务类型对应的参数组合。**严禁使用旧格式参数。**\n\n如有特殊要求（如备注信息），填入订单备注字段。\n\n**Step 5：预览 → 确认 → 提交**\n\n调用 `preview_and_submit`（不带 `--confirm`）展示费用卡片，用户确认后加 `--confirm` 提交。\n\n**第一步：预览（只展示费用，不提交）**\n\n返回后按以下模板逐行展示，**不展示任何命令或字段名**，每行之间用空行分隔：\n\n---\n\n### 帮取送 预览模板\n\n🛵 **服务类型** 帮取送\n\n📦 **取件地址** 完整地址 · 取件电话\n\n🏠 **收件地址** 完整地址 · 收件人 收件电话\n\n🎁 **物品** 查询匹配的标准品类\n\n📍 **距离** 如 `4.6公里`\n\n💰 **配送费** 如 `14.0 元`\n\n🕐 **预计时效** 如 `预计 1 分钟内有骑手接单，21:16 送达`\n\n💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)\n\n---\n\n### 帮买 预览模板\n\n🛵 **服务类型** 帮买\n\n🏪 **购买地址** xxx地址 / 就近购买\n\n🏠 **收件地址** 完整地址 · 收件人 收件电话\n\n🛍️ **物品** 用户描述的购买物品\n\n📍 **距离** 如 `4.6公里`\n\n💰 **配送费** 如 `14.0 元`\n\n🕐 **预计时效** 如 `预计 1 分钟内有骑手接单，21:16 送达`\n\n💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)\n\n---\n\n### 帮忙 预览模板\n\n（适用于：餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙）\n\n🛵 **服务类型** 餐厅取号 / 医院帮忙 / 其他取号 / 帮搬装 / 帮扔杂物 / 其他帮忙（根据实际场景选择对应类型填写）\n\n📍 **帮忙地址** 完整地址 · 联系电话\n\n💰 **配送费** 如 `14.0 元`\n\n🕐 **预计时效** 如 `预计 1 分钟内有骑手接单，21:16 送达`\n\n💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)\n\n---\n\n然后询问用户：**确认下单吗？**\n\n**第二步：用户确认后，不换参数，直接加确认标识重新提交**。所有参数（取件地址、收件地址、物品名称、物品重量档位、服务类型）必须与预览时完全一致，不得修改任何参数。\n\n下单成功后直接提示：📬 订单已提交！请在 15 分钟内打开美团 App → 我的订单 完成支付 💳，支付成功后骑手才会来取件 🛵\n\n> ⚠️ 费用卡片必须严格按上述模板逐行换行展示，每个字段独占一行，禁止省略或压缩到一行。\n\n---\n\n## 详细参考文档\n\n- [references/commands.md](references/commands.md) — 所有命令及参数（执行方式：`node scripts/paotui.js <command>`）\n- [references/params.md](references/params.md) — 地址JSON、物品JSON、businessType、城市表\n- [references/errors.md](references/errors.md) — 错误码与异常处理\n\nFile v1.0.2:README.md\n\n# 美团跑腿下单助手\n\n通过直接调用美团跑腿接口完成下单全流程，支持帮取送、帮忙、帮买三大类场景。\n\n## 功能特性\n\n- **帮取送**：A 地取件送到 B 地，支持多种物品类型\n- **帮忙**：取号（餐厅/医院/其他）、帮搬装、帮扔杂物等\n- **帮买**：代购商品，支持指定购买地址或就近购买\n- **地址簿搜索**：自动拉取用户历史地址，按最近使用时间排序展示\n- **POI 地址搜索**：地址簿匹配不到时，通过关键词搜索补全坐标\n- **两步确认**：先预览费用，用户确认后再正式提交，防止误单\n- **订单查询**：实时查看订单状态\n\n## 触发词\n\n跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。\n\n---\n\n## 目录结构\n\n```\nMT-Paotui-For-Client/\n├── SKILL.md              # 核心技能说明（Agent 指令）\n├── README.md             # 本文件\n├── dist/\n│   ├── paotui.js         # 核心下单脚本\n│   └── run.sh            # 启动脚本（推荐使用）\n├── references/\n│   ├── commands.md       # 所有命令及参数说明\n│   ├── params.md         # 地址/物品/城市参数规范\n│   └── errors.md         # 错误码与异常处理\n```\n\n> ⚠️ 本 Skill 使用 **Node.js** 运行，需要 Node.js 18+ 环境。\n\n## 风险提示与免责声明：\n\n本 Skill 运行在用户自行选择的独立AI 助手环境中，由用户自行选择的大模型驱动。美团仅提供跑腿相关接口和 Skill 定义，不对 AI 助手的运行环境、大模型安全合规性承担任何责任。\n\n• 用户应确保所使用的 AI 助手已在中国大陆完成安全备案，并符合相关法律法规要求\n\n• 用户应审慎评估 AI 对需求的理解偏差风险，使用本人账号授权操作，确认订单预览后再提交\n\n• 如发现异常订单或 AI 行为异常，请立即联系美团客服处理\n\n---\n\n## 场景零：授权\n\n### 执行流程\n\n1. 调用业务命令时自动检测是否登录，未登录则返回授权链接\n2. 根据使用环境完成授权：\n\n📱 **手机端**：直接点击授权链接，跳转美团 App 完成授权\n\n💻 **电脑端**：将授权链接复制到手机浏览器打开，再用美团 App 完成授权（链接 5 分钟内有效）\n\n---\n\n## 场景一：拉取地址簿\n\n### 触发条件\n\n需要获取用户历史地址，或用户在地址选择阶段提供关键词筛选。\n\n### 命令\n\n```bash\n# 帮取送 / 帮忙场景\nsh dist/run.sh get_address_list --address-type 1 --business-type 1 --scene 2\n\n# 帮买场景\nsh dist/run.sh get_address_list --address-type 1 --business-type 2 --scene 2\n```\n\n### 返回字段\n\n| 字段 | 说明 |\n|---|---|\n| addressId | 地址 ID |\n| address | 完整地址（楼号已含在此字段） |\n| phone | 联系电话（服务端脱敏，下单直接用） |\n| lat / lng | 坐标（整数×1e6），**直接用于下单，无需转换** |\n| cityId | 城市 ID |\n| lastUseTime | 最近使用时间戳（用于排序） |\n\n---\n\n## 场景二：POI 地址搜索\n\n### 触发条件\n\n用户提供新地址，但地址簿中匹配不到时，调用 POI 搜索获取坐标。\n\n### 命令\n\n```bash\nsh dist/run.sh search_poi --keyword \"奥林匹克森林公园南门\" --city \"北京\" --lat 39904200 --lng 116407400\n```\n\n### 参数说明\n\n| 参数 | 说明 | 默认值 |\n|---|---|---|\n| --keyword | 搜索关键词（必填） | — |\n| --city | 城市名 | 北京 |\n| --lat / --lng | 参考坐标（整数×1e6），提升搜索精度 | 北京中心 |\n\n---\n\n## 场景三：订单预览与提交\n\n### 执行流程\n\n**第一步：预览（不带 `--confirm`）** — 只展示费用，不提交\n\n**第二步：用户回复\"确认\"后加 `--confirm` 提交** — 参数必须与预览完全一致\n\n> ⚠️ 预览和提交在同一进程内完成，分开调用会导致 orderToken 失效（code 10311）。\n\n### 命令\n\n```bash\n# 预览\nsh dist/run.sh preview_and_submit \\\n  --sender '{\"address\":\"奥林匹克森林公园南门\",\"houseNumber\":\"\",\"lat\":40011253,\"lng\":116508883,\"name\":\"\",\"phone\":\"123****4567\",\"cityId\":110100}' \\\n  --recipient '{\"address\":\"望京soho\",\"houseNumber\":\"\",\"lat\":40020135,\"lng\":116469935,\"name\":\"\",\"phone\":\"123****6789\",\"cityId\":110100}' \\\n  --goods '{\"goodsName\":\"文件\",\"goodsWeight\":1,\"goodTypes\":[4],\"goodTypeNames\":[\"文件\"]}' \\\n  --business-type 1\n\n# 确认提交（参数完全相同，仅加 --confirm）\nsh dist/run.sh preview_and_submit ... --confirm\n```\n\n### 服务类型参数\n\n| 场景 | --business-type | --biz-type-scene-tag |\n|---|---|---|\n| 帮取送 | 1 | 0（默认） |\n| 餐厅取号 | 1 | 1 |\n| 医院帮忙 | 1 | 2 |\n| 其他取号 | 1 | 3 |\n| 帮搬装 | 1 | 4 |\n| 其他帮忙 | 1 | 5 |\n| 帮扔杂物 | 1 | 6 |\n| 帮买 | 2 | 0 |\n\n> ⚠️ `--business-type` 只有 1 和 2 两个合法值，严禁传 3/4/5/6。\n\n---\n\n## 场景四：查询订单状态\n\n```bash\nsh dist/run.sh get_order_status --order-id \"<orderViewId>\"\n```\n\n---\n\n## 安全门控\n\n- **两步确认**：先预览展示费用，等用户回复\"确认\"后才加 `--confirm` 提交\n- **金额拦截**：费用超过 100 元需额外向用户确认\n- **地址完整性**：取件地址、收件地址、联系电话缺一不可\n---\n\n## 相关文档\n\n- [references/commands.md](references/commands.md) — 所有命令及参数\n- [references/params.md](references/params.md) — 地址/物品/城市规范\n- [references/errors.md](references/errors.md) — 错误码与处理方式\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn71y9yc73jym61ban40qyj59h84r5jp\",\n  \"slug\": \"mt-paotui-for-client\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1779416507345\n}\n\nFile v1.0.2:references/commands.md\n\n# 命令参考\n\n## 执行方式\n\n```bash\n# 分发包（推荐）—— 使用混淆打包版\nsh dist/run.sh <command> [args...]\n\n# 源码开发调试\nnode scripts/paotui.js <command> [args...]\n```\n\n---\n\n## 命令列表\n\n### confirm_auth\n用户扫码授权后，轮询 Passport 授权状态并写入 Token 缓存。\n```bash\nnode scripts/paotui.js confirm_auth\n```\n- 读取 `/tmp/mt_passport_session.json` 中的 auth_code\n- 轮询 `/api/account/userauth/check`，等待用户 App 确认（最多 600 秒）\n- 成功 → Token 写入 `~/.xiaomei-workspace/mt_passport_auth.json`，返回 `✅ 授权成功`\n- 失败（超时/风控/取消）→ 返回具体错误，Token 不写入\n\n> ⚠️ `confirm_auth` 必须在用户扫码后立即调用，不得跳过或延迟，否则 auth_code 过期。\n\n---\n\n### search_poi\nPOI 地址搜索，获取地址坐标。\n```bash\nnode scripts/paotui.js search_poi --keyword \"融新科技中心\" --city \"北京\" --lat 39904200 --lng 116407400\n```\n- `--keyword`：搜索关键词（必填）\n- `--city`：城市名（默认北京）\n- `--lat` / `--lng`：参考坐标，提升搜索精度（整数×1e6）\n\n---\n\n### get_address_list\n获取用户地址簿（推荐，含坐标/标签/最近使用时间）。\n```bash\n# 帮送场景（默认）\nnode scripts/paotui.js get_address_list --address-type 1 --business-type 1 --scene 2\n\n# 帮买场景\nnode scripts/paotui.js get_address_list --address-type 1 --business-type 2 --scene 2\n```\n返回字段：`addressId`、`address`、`houseNumber`、`name`、`phone`（服务端脱敏，下单直接用）、`lat`/`lng`（整数×1e6，**直接用于下单**）、`cityId`、`tag`、`isDefault`、`lastUseTime`。\n\n---\n\n### preview_and_submit\n配送预览 + 提交一体化（推荐）。\n```bash\n# 第一步：预览（不带 --confirm，只展示费用，不提交）\nnode scripts/paotui.js preview_and_submit \\\n  --sender '<地址JSON>' \\\n  --recipient '<地址JSON>' \\\n  --goods '<物品JSON>' \\\n  --business-type 1 \\\n  [--biz-type-scene-tag 0] \\\n  [--tip-fee 0] \\\n  [--remark \"\"] \\\n  [--purchase-detail \"\"]\n\n# 第二步：用户确认后加 --confirm 提交（参数完全相同）\nnode scripts/paotui.js preview_and_submit ... --confirm\n```\n> ⚠️ `--confirm` 模式在同一进程内完成预览+提交，避免 orderToken 跨进程失效（code 10311）。\n\n---\n\n### get_order_status\n查询订单状态。\n```bash\nnode scripts/paotui.js get_order_status --order-id \"<orderViewId>\"\n```\n\nFile v1.0.2:references/errors.md\n\n# 异常处理\n\n| 错误码 / 现象 | 展示给用户 |\n|---|---|\n| 登录失效 / `status: error` / `AUTH_REQUIRED` / `AUTH_FAILED` | Token 不存在或已失效，请重新触发登录，我会展示新的授权二维码 |\n| `10001` 城市未开通 | 该城市暂未开通服务，建议使用美团 App 确认是否支持 |\n| `10002` 未知错误 | 信息异常，请检查下单参数。帮忙类用 businessType=1，帮买用 2 |\n| `10112` 区域未开通 | 该地址所在区域暂未开通服务，建议更换到其他地址 |\n| `10113` 城市未开通 | 该地址所在城市暂未开通服务，建议切换到其他城市 |\n| `10114` 因恶劣天气/道路管制等暂无法配送 | 因恶劣天气/道路管制/疫情等原因，暂无法配送，敬请谅解，建议稍后重试 |\n| `10115` 配送距离过远 | 配送距离过远，请重新选择地址 |\n| `10116` 无效地址 | 请选择有效的地址，提供更精确的地址（含街道/楼号/校区名）有助于定位 |\n| `10309` 配送费已动态发生变化 | 配送费已变动，请重新下单（同一次对话内重新预览即可） |\n| `10311` orderToken 失效 | 订单token失效，请重新下单（同进程内完成） |\n| `10401` 配送费计算失败 | 配送费计算失败，请重试一次 |\n| `11004~11008` 风控拒绝 | 下单信息异常，请检查地址和备注信息后重试 |\n| POI 搜索无结果 | 未找到该地址，请提供更精确的地址（含街道/楼号） |\n| 费用预览失败 | 费用预览失败，请检查地址坐标是否正确或尝试缩短距离 |\n| 网络超时 | 网络请求超时，请检查网络后重试 |\n| `响应解析失败` | 接口响应异常，请检查网络/VPN 连接后重试 |\n\nFile v1.0.2:references/params.md\n\n# 参数说明\n\n## 地址 JSON（--sender / --recipient）\n\n```json\n{\n  \"address\": \"北京市朝阳区融新科技中心A座\",  // 完整地址，楼号直接拼入此字段\n  \"houseNumber\": \"\",                          // 固定留空，填写会触发风控（11004~11008）\n  \"lat\": 40019368,                            // 纬度，整数×1e6\n  \"lng\": 116469191,                           // 经度，整数×1e6\n  \"name\": \"\",                                 // 固定留空，填写会触发风控\n  \"phone\": \"138xxxx5678\",                     // 联系电话（地址簿返回的脱敏号码可直接使用）\n  \"cityId\": 110100                            // 城市ID，见城市表\n}\n```\n\n> ⚠️ `houseNumber` / `name` / `remark` 必须留空，填写会触发风控（11004~11008）。\n\n**单地址场景**（取号/帮搬/帮扔/医院帮忙/其他帮忙）：`--sender` 和 `--recipient` 传同一个地址 JSON。\n\n---\n\n## 物品 JSON（--goods）\n\n```json\n{\n  \"goodsName\": \"文件\",\n  \"goodsWeight\": 1,          // 物品实际重量（公斤数），值是多少就是多少公斤，如 15 表示 15kg。重量越大配送费越贵\n  \"goodTypes\": [4],          // 物品类型数组\n  \"goodTypeNames\": [\"文件\"]  // 物品类型名称数组（与 goodTypes 一一对应）\n}\n```\n\n| 用户描述关键词 | goodTypes | goodTypeNames | goodsWeight 默认值 |\n|---|---|---|---|\n| 餐饮、外卖、食物、饭、菜、奶茶、饮料 | `[2]` | `[\"餐饮\"]` | 1 |\n| 文件、合同、资料、单据、证件、文书 | `[4]` | `[\"文件\"]` | 1 |\n| 生鲜、水果、蔬菜、肉、海鲜 | `[3]` | `[\"生鲜\"]` | 2 |\n| 蛋糕、甜品 | `[9]` | `[\"蛋糕\"]` | 2 |\n| 鲜花、花束、花 | `[1]` | `[\"鲜花\"]` | 1 |\n| 数码、手机、电脑、平板、耳机、电子产品 | `[5]` | `[\"数码\"]` | 1 |\n| 服饰、衣服、鞋、包、服装 | `[7]` | `[\"服饰\"]` | 1 |\n| 快递、包裹、箱子 | `[8]` | `[\"快递\"]` | 2 |\n| 五金、工具、零件、螺丝、管件 | `[2]` | `[\"五金\"]` | 2 |\n| 汽配、汽车配件、车零件 | `[2]` | `[\"汽配\"]` | 3 |\n| 其他、物品、东西、不明确 | `[8]` | `[\"其他\"]` | 1 |\n\n> ⚠️ `goodsWeight` 值即公斤数。如用户明确说\"15公斤\"，传 `15`；说\"5公斤左右\"，传 `5`。默认值仅供参考，**以用户实际告知为准**。\n\n---\n\n## businessType 与 bizTypeSceneTag\n\n`businessType` 只有两个合法值，**严禁传 3/4/5/6**（会导致 10002 错误）：\n\n| 用户意图 | --business-type | --biz-type-scene-tag |\n|---|---|---|\n| 帮取送文件/物品（A→B） | 1 | 0（默认） |\n| 餐厅取号 | 1 | 1 |\n| 医院帮忙 | 1 | 2 |\n| 其他取号 | 1 | 3 |\n| 帮搬装 | 1 | 4 |\n| 其他帮忙 | 1 | 5 |\n| 帮扔杂物 | 1 | 6 |\n| 帮买东西 | 2 | 0 |\n\n**purchaseGoodDetail**：帮买场景（businessType=2）**必传**，如 `\"一瓶矿泉水\"`。其他场景留空。\n\n---\n\n## businessTypeTag\n\n`businessTypeTag` 与 `bizTypeSceneTag` 是两个完全独立的参数，无关联。**仅在帮买场景（businessType=2）下生效**，用于区分购买地址来源：\n\n| 场景 | --business-type-tag | 含义 |\n|------|---------------------|------|\n| 帮买 - 用户指定购买地址 | `0` | 骑手前往 `--sender` 指定地址购买 |\n| 帮买 - 就近购买 | `1` | 骑手自行决定购买地点，`--sender` 传收件地址 |\n| 帮取送（businessType=1） | `0` | 不适用 |\n\n---\n\n## 城市表\n\n默认使用**北京**。用户提到城市时查此表获取 `cityId` 和参考坐标。\n\n| 城市 | cityId | --city | lat | lng |\n|------|--------|--------|-----|-----|\n| 北京 | 110100 | 北京 | 39904200 | 116407400 |\n| 上海 | 310100 | 上海 | 31231700 | 121472600 |\n| 广州 | 440100 | 广州 | 23129100 | 113264400 |\n| 深圳 | 440300 | 深圳 | 22543000 | 114057900 |\n| 成都 | 510100 | 成都 | 30572700 | 104066500 |\n| 杭州 | 330100 | 杭州 | 30274200 | 120153600 |\n| 武汉 | 420100 | 武汉 | 30592800 | 114305500 |\n| 南京 | 320100 | 南京 | 32060300 | 118796400 |\n| 西安 | 610100 | 西安 | 34341600 | 108939500 |\n| 重庆 | 500100 | 重庆 | 29563000 | 106551600 |\n\n> ⚠️ lat/lng 为城市中心参考坐标，仅用于 `search_poi` 提升精度，不作为下单地址坐标。不在表中的城市直接告知用户不支持。\n\n---\n\n## 坐标格式\n\n整数×1e6（如 40.019368° → 40019368）。地址簿返回的 `lat`/`lng` 已是此格式，**可直接用于下单，无需转换**。\n\nFile v1.0.2:dist/vendor/cliguard/js/package.json\n\n{ \"name\": \"cliguard\", \"version\": \"1.3.1\" }\n\nArchive v1.0.1: 11 files, 1920262 bytes\n\nFiles: dist/paotui.js (5178485b), dist/run.sh (285b), dist/vendor/cliguard/js/cliguard-wrapper.js (31916b), dist/vendor/cliguard/js/cliguard.js (55899b), dist/vendor/cliguard/js/package.json (43b), README.md (5142b), references/commands.md (2468b), references/errors.md (1731b), references/params.md (4441b), SKILL.md (7665b), _meta.json (139b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: meituan-paotui\ndescription: 美团跑腿下单助手。通过直接调用下单接口完成跑腿全流程，支持帮取送、帮买等场景。适用于工作场景：寄送合同/文件/设备、同城取件、办公室间物品转运、紧急采购等。触发词：帮我下跑腿、跑腿下单、美团跑腿、帮我送东西、跑腿订单、帮我取号、帮我搬、帮我买、寄文件、送合同、取快递、同城配送。\n---\n\n## [MANDATORY] SKILLHUB_METRIC_REPORTER_START\n执行本 Skill 的任何操作之前，必须先执行 Skill：`skill-metric-reporter`。\n按照 `skill-metric-reporter` 的要求完成 `skill_start` 上报后，才可继续本 Skill 正文。\n本 Skill 全部操作完成后，同样按照 `skill-metric-reporter` 的要求完成 `skill_end` 上报。\n## [MANDATORY] SKILLHUB_METRIC_REPORTER_END\n\n# 美团跑腿下单 Skill\n\n> ⚠️ **输出规范**：\n> 1. **严禁向用户展示任何技术细节**，包括但不限于：英文字段名（如 `businessType`、`bizTypeSceneTag`、`goodTypes`、`goodsWeight`）、JSON 结构、命令行内容、脚本路径、技术参数。执行过程中的中间状态（构造参数、调用接口）不展示，只展示用户需要知道的结果。\n> 2. **只展示用户意图相关的信息**：地址摘要（\"从 xxx 送到 xxx\"）、物品名称、费用卡片、预计时效、操作结果。费用卡片按固定模板逐行展示（见 Step 5）。\n> 3. **所有输出必须格式化展示，严格换行**：每个字段独占一行，用空行分隔。禁止将多条信息挤在一行。\n> 4. **手机号不脱敏**：地址簿返回的脱敏号码（如 `123****4567`）原样展示，不做额外处理。\n\n> ⚠️ **强制重读**：每次会话第一次触发时，必须重新读取本文件，不得依赖历史记忆。\n\n## When to Use\n\n帮取送、帮买、餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。用户说出\"跑腿\"、\"帮我送\"、\"帮我取\"、\"同城配送\"等意图时触发。\n\n## When NOT to Use\n\n仅询问价格/政策、跨城市配送、需要快递面单、用户明确表示不下单。\n\n---\n\n## 安全门控\n\n> ⚠️ 跑腿下单是**真实消费、不可逆操作**：\n\n1. **强制两步确认**：先预览展示费用卡片，等用户明确回复\"确认\"后才加 `--confirm` 提交。\n2. **信息完整性**：取件地址、收件地址、联系电话缺一不可，地址簿的 `phone` 字段直接使用。\n3. **金额异常拦截**：费用 > 100 元时需额外向用户确认。\n\n---\n\n## 工作流程\n\n**Step 0：登录授权检查**（首次使用或 Token 失效时执行）\n\n1. 调用接口检查 Token 是否有效\n2. 检查结果：\n   - **Token 有效** → 直接进入 Step 1\n   - **需要授权** → 执行下方授权流程\n3. 获取授权链接后，按以下格式展示（**不展示二维码**）：\n\n> 需要先授权美团账号，请完成以下操作后告诉我：\n>\n> 📱 **手机端**：直接点击下方链接，跳转美团 App 完成授权\n> [点击授权]({授权链接})\n>\n> 💻 **电脑端**：将以下链接复制到手机浏览器打开，再用美团 App 完成授权（链接 5 分钟内有效）：\n> `{授权链接}`\n\n4. 等待用户确认完成授权（用户回复\"已授权\"、\"好了\"、\"完成了\"等）\n5. 轮询授权状态\n   - 成功 → 提示\"✅ 授权成功\"，继续进入 Step 1\n   - 超时或失败 → 提示用户重新触发，流程结束\n\n> ⚠️ 授权轮询等待时间约 3~10 秒（取决于用户操作速度），无需人工干预。授权码有效期 600 秒。\n\n**Step 1：信息预收集**（静默，不等用户回复）\n\n从对话中提取已知信息（物品/场景/地址），直接进入 Step 2，**严禁**在登录检查前追问用户任何信息。\n\n> ⚠️ **帮买场景额外判断**：用户表达帮买意图时，Step 1 额外记录\"是否提供了购买地址\"。未提供则进入 Step 3 后主动询问。\n\n**Step 2：拉取地址簿**\n\n登录确认后立即拉取地址簿。\n\n- 用户提到具体地址 → 地址簿模糊匹配，匹配不到再调用 POI 搜索\n- 用户未提地址 → 按 `lastUseTime` 降序展示前 3 条，格式：\n\n```\n① 地址1-门牌号1\n　　王 · 123****4567\n\n② 地址2-门牌号2\n　　王 · 134****6789\n\n还有 XX 条地址，可以说关键词筛选\n```\n\n询问用户：**\"请问用哪个地址？（可以直接说序号或关键词，比如1送到2，也可以直接说新地址）\"**\n\n> ⚠️ 地址列表展示也必须格式化，每个地址独占一块（含换行），不得堆砌在一行。\n\n**Step 3：地址确认**\n\n- 选序号 → 直接使用地址簿的坐标和电话，跳过 POI 搜索\n- 说关键词 → 地址簿模糊匹配，匹配不到才调用 `search_poi`\n- 新地址 → 调用 `search_poi`，确认后询问联系电话\n- 单地址场景（取号/帮搬/帮扔等）→ 取件和收件用同一地址\n- 两个地址均需 POI 搜索时 → **并行发起**两条 `search_poi`\n- **帮买场景**：收件地址确认后，若 Step 1 未明确用户提供购买地址 → 询问\"在哪里买？\"\n  - 用户提供地址 → 将该地址填入取件地址\n  - 用户说\"就近购买\" → 取件地址填收件地址\n\n**Step 4：物品信息与参数构造**\n\nStep 1 已收集则直接使用，否则追问：\"请问送什么东西？\"\n\n根据用户描述的物品类型和场景，查阅 [references/params.md](references/params.md)：\n\n- 查「物品 JSON」章节：根据物品关键词得到类型代码、名称和重量默认值（用户告知具体重量时以实际数值为准）\n- 查「业务参数」章节：确认服务类型（帮取送/帮买/帮搬等）对应的参数组合\n- **帮买场景**：确认购买地址来源（用户指定 or 就近购买）\n- **严禁使用旧格式参数**\n\n**Step 5：预览 → 确认 → 提交**\n\n调用 `preview_and_submit`（不带 `--confirm`）展示费用卡片，用户确认后加 `--confirm` 提交。展示格式（每行一个字段，严格换行，不得压缩）：\n\n**第一步：预览（只展示费用，不提交）**\n\n返回后按以下模板逐行展示，**不展示任何命令或字段名**，每行之间用空行分隔：\n\n🛵 **服务类型** 帮取送 / 帮买 / 帮搬装 / …\n\n📦 **取件地址** 完整地址 · 取件电话\n\n🏠 **收件地址** 完整地址 · 收件人 收件电话\n\n🎁 **物品** 用户描述的物品名称\n\n📍 **距离** 如 `4.6公里`\n\n💰 **配送费** 如 `14.0 元`\n\n🕐 **预计时效** 如 `预计 1 分钟内有骑手接单，21:16 送达`\n\n💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)\n\n然后询问用户：**确认下单吗？**\n\n**第二步：用户确认后，不换参数，直接加确认标识重新提交**。所有参数（取件地址、收件地址、物品名称、物品重量档位、服务类型）必须与预览时完全一致，不得修改任何参数。\n\n下单成功后直接提示：📬 订单已提交！请在 15 分钟内打开美团 App → 我的订单 完成支付 💳，支付成功后骑手才会来取件 🛵\n\n> ⚠️ 费用卡片必须严格按上述模板逐行换行展示，每个字段独占一行，禁止省略或压缩到一行。\n\n---\n\n## 详细参考文档\n\n- [references/commands.md](references/commands.md) — 所有命令及参数（执行方式：`node scripts/paotui.js <command>`）\n- [references/params.md](references/params.md) — 地址JSON、物品JSON、businessType、城市表\n- [references/errors.md](references/errors.md) — 错误码与异常处理\n\nFile v1.0.1:README.md\n\n# 美团跑腿下单助手\n\n通过直接调用美团跑腿接口完成下单全流程，支持帮取送、帮忙、帮买三大类场景。适用于工作场景：寄送合同/文件/设备、同城取件、办公室间物品转运、紧急采购等。\n\n## 功能特性\n\n- **帮取送**：A 地取件送到 B 地，支持多种物品类型\n- **帮忙**：取号（餐厅/医院/其他）、帮搬装、帮扔杂物等\n- **帮买**：代购商品，支持指定购买地址或就近购买\n- **地址簿搜索**：自动拉取用户历史地址，按最近使用时间排序展示\n- **POI 地址搜索**：地址簿匹配不到时，通过关键词搜索补全坐标\n- **两步确认**：先预览费用，用户确认后再正式提交，防止误单\n- **订单查询**：实时查看订单状态\n\n## 触发词\n\n帮我下跑腿、跑腿下单、美团跑腿、帮我送东西、跑腿订单、帮我取号、帮我搬、帮我买、寄文件、送合同、取快递、同城配送\n\n---\n\n## 目录结构\n\n```\nMT-Paotui-For-Client/\n├── SKILL.md              # 核心技能说明（Agent 指令）\n├── README.md             # 本文件\n├── dist/\n│   ├── paotui.js         # 核心下单脚本\n│   └── run.sh            # 启动脚本（推荐使用）\n├── references/\n│   ├── commands.md       # 所有命令及参数说明\n│   ├── params.md         # 地址/物品/城市参数规范\n│   └── errors.md         # 错误码与异常处理\n```\n\n> ⚠️ 本 Skill 使用 **Node.js** 运行，需要 Node.js 18+ 环境。\n\n---\n\n## 场景零：授权\n\n### 执行流程\n\n1. 调用业务命令时自动检测是否登录，未登录则返回授权链接\n2. 根据使用环境完成授权：\n\n📱 **手机端**：直接点击授权链接，跳转美团 App 完成授权\n\n💻 **电脑端**：将授权链接复制到手机浏览器打开，再用美团 App 完成授权（链接 5 分钟内有效）\n\n---\n\n## 场景一：拉取地址簿\n\n### 触发条件\n\n需要获取用户历史地址，或用户在地址选择阶段提供关键词筛选。\n\n### 命令\n\n```bash\n# 帮取送 / 帮忙场景\nsh dist/run.sh get_address_list --address-type 1 --business-type 1 --scene 2\n\n# 帮买场景\nsh dist/run.sh get_address_list --address-type 1 --business-type 2 --scene 2\n```\n\n### 返回字段\n\n| 字段 | 说明 |\n|---|---|\n| addressId | 地址 ID |\n| address | 完整地址（楼号已含在此字段） |\n| phone | 联系电话（服务端脱敏，下单直接用） |\n| lat / lng | 坐标（整数×1e6），**直接用于下单，无需转换** |\n| cityId | 城市 ID |\n| lastUseTime | 最近使用时间戳（用于排序） |\n\n---\n\n## 场景二：POI 地址搜索\n\n### 触发条件\n\n用户提供新地址，但地址簿中匹配不到时，调用 POI 搜索获取坐标。\n\n### 命令\n\n```bash\nsh dist/run.sh search_poi --keyword \"奥林匹克森林公园南门\" --city \"北京\" --lat 39904200 --lng 116407400\n```\n\n### 参数说明\n\n| 参数 | 说明 | 默认值 |\n|---|---|---|\n| --keyword | 搜索关键词（必填） | — |\n| --city | 城市名 | 北京 |\n| --lat / --lng | 参考坐标（整数×1e6），提升搜索精度 | 北京中心 |\n\n---\n\n## 场景三：订单预览与提交\n\n### 执行流程\n\n**第一步：预览（不带 `--confirm`）** — 只展示费用，不提交\n\n**第二步：用户回复\"确认\"后加 `--confirm` 提交** — 参数必须与预览完全一致\n\n> ⚠️ 预览和提交在同一进程内完成，分开调用会导致 orderToken 失效（code 10311）。\n\n### 命令\n\n```bash\n# 预览\nsh dist/run.sh preview_and_submit \\\n  --sender '{\"address\":\"奥林匹克森林公园南门\",\"houseNumber\":\"\",\"lat\":40011253,\"lng\":116508883,\"name\":\"\",\"phone\":\"123****4567\",\"cityId\":110100}' \\\n  --recipient '{\"address\":\"望京soho\",\"houseNumber\":\"\",\"lat\":40020135,\"lng\":116469935,\"name\":\"\",\"phone\":\"123****6789\",\"cityId\":110100}' \\\n  --goods '{\"goodsName\":\"文件\",\"goodsWeight\":1,\"goodTypes\":[4],\"goodTypeNames\":[\"文件\"]}' \\\n  --business-type 1\n\n# 确认提交（参数完全相同，仅加 --confirm）\nsh dist/run.sh preview_and_submit ... --confirm\n```\n\n### 服务类型参数\n\n| 场景 | --business-type | --biz-type-scene-tag |\n|---|---|---|\n| 帮取送 | 1 | 0（默认） |\n| 餐厅取号 | 1 | 1 |\n| 医院帮忙 | 1 | 2 |\n| 其他取号 | 1 | 3 |\n| 帮搬装 | 1 | 4 |\n| 其他帮忙 | 1 | 5 |\n| 帮扔杂物 | 1 | 6 |\n| 帮买 | 2 | 0 |\n\n> ⚠️ `--business-type` 只有 1 和 2 两个合法值，严禁传 3/4/5/6。\n\n---\n\n## 场景四：查询订单状态\n\n```bash\nsh dist/run.sh get_order_status --order-id \"<orderViewId>\"\n```\n\n---\n\n## 安全门控\n\n- **两步确认**：先预览展示费用，等用户回复\"确认\"后才加 `--confirm` 提交\n- **金额拦截**：费用超过 100 元需额外向用户确认\n- **地址完整性**：取件地址、收件地址、联系电话缺一不可\n---\n\n## 相关文档\n\n- [references/commands.md](references/commands.md) — 所有命令及参数\n- [references/params.md](references/params.md) — 地址/物品/城市规范\n- [references/errors.md](references/errors.md) — 错误码与处理方式\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn71y9yc73jym61ban40qyj59h84r5jp\",\n  \"slug\": \"mt-paotui-for-client\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1778124837454\n}\n\nFile v1.0.1:references/commands.md\n\n# 命令参考\n\n## 执行方式\n\n```bash\n# 分发包（推荐）—— 使用混淆打包版\nsh dist/run.sh <command> [args...]\n\n# 源码开发调试\nnode scripts/paotui.js <command> [args...]\n```\n\n---\n\n## 命令列表\n\n### confirm_auth\n用户扫码授权后，轮询 Passport 授权状态并写入 Token 缓存。\n```bash\nnode scripts/paotui.js confirm_auth\n```\n- 读取 `/tmp/mt_passport_session.json` 中的 auth_code\n- 轮询 `/api/account/userauth/check`，等待用户 App 确认（最多 600 秒）\n- 成功 → Token 写入 `~/.xiaomei-workspace/mt_passport_auth.json`，返回 `✅ 授权成功`\n- 失败（超时/风控/取消）→ 返回具体错误，Token 不写入\n\n> ⚠️ `confirm_auth` 必须在用户扫码后立即调用，不得跳过或延迟，否则 auth_code 过期。\n\n---\n\n### search_poi\nPOI 地址搜索，获取地址坐标。\n```bash\nnode scripts/paotui.js search_poi --keyword \"融新科技中心\" --city \"北京\" --lat 39904200 --lng 116407400\n```\n- `--keyword`：搜索关键词（必填）\n- `--city`：城市名（默认北京）\n- `--lat` / `--lng`：参考坐标，提升搜索精度（整数×1e6）\n\n---\n\n### get_address_list\n获取用户地址簿（推荐，含坐标/标签/最近使用时间）。\n```bash\n# 帮送场景（默认）\nnode scripts/paotui.js get_address_list --address-type 1 --business-type 1 --scene 2\n\n# 帮买场景\nnode scripts/paotui.js get_address_list --address-type 1 --business-type 2 --scene 2\n```\n返回字段：`addressId`、`address`、`houseNumber`、`name`、`phone`（服务端脱敏，下单直接用）、`lat`/`lng`（整数×1e6，**直接用于下单**）、`cityId`、`tag`、`isDefault`、`lastUseTime`。\n\n---\n\n### preview_and_submit\n配送预览 + 提交一体化（推荐）。\n```bash\n# 第一步：预览（不带 --confirm，只展示费用，不提交）\nnode scripts/paotui.js preview_and_submit \\\n  --sender '<地址JSON>' \\\n  --recipient '<地址JSON>' \\\n  --goods '<物品JSON>' \\\n  --business-type 1 \\\n  [--biz-type-scene-tag 0] \\\n  [--tip-fee 0] \\\n  [--remark \"\"] \\\n  [--purchase-detail \"\"]\n\n# 第二步：用户确认后加 --confirm 提交（参数完全相同）\nnode scripts/paotui.js preview_and_submit ... --confirm\n```\n> ⚠️ `--confirm` 模式在同一进程内完成预览+提交，避免 orderToken 跨进程失效（code 10311）。\n\n---\n\n### get_order_status\n查询订单状态。\n```bash\nnode scripts/paotui.js get_order_status --order-id \"<orderViewId>\"\n```\n\nFile v1.0.1:references/errors.md\n\n# 异常处理\n\n| 错误码 / 现象 | 展示给用户 |\n|---|---|\n| 登录失效 / `status: error` / `AUTH_REQUIRED` / `AUTH_FAILED` | Token 不存在或已失效，请重新触发登录，我会展示新的授权二维码 |\n| `10001` 城市未开通 | 该城市暂未开通服务，建议使用美团 App 确认是否支持 |\n| `10002` 未知错误 | 信息异常，请检查下单参数。帮忙类用 businessType=1，帮买用 2 |\n| `10112` 区域未开通 | 该地址所在区域暂未开通服务，建议更换到其他地址 |\n| `10113` 城市未开通 | 该地址所在城市暂未开通服务，建议切换到其他城市 |\n| `10114` 因恶劣天气/道路管制等暂无法配送 | 因恶劣天气/道路管制/疫情等原因，暂无法配送，敬请谅解，建议稍后重试 |\n| `10115` 配送距离过远 | 配送距离过远，请重新选择地址 |\n| `10116` 无效地址 | 请选择有效的地址，提供更精确的地址（含街道/楼号/校区名）有助于定位 |\n| `10309` 配送费已动态发生变化 | 配送费已变动，请重新下单（同一次对话内重新预览即可） |\n| `10311` orderToken 失效 | 订单token失效，请重新下单（同进程内完成） |\n| `10401` 配送费计算失败 | 配送费计算失败，请重试一次 |\n| `11004~11008` 风控拒绝 | 下单信息异常，请检查地址和备注信息后重试 |\n| POI 搜索无结果 | 未找到该地址，请提供更精确的地址（含街道/楼号） |\n| 费用预览失败 | 费用预览失败，请检查地址坐标是否正确或尝试缩短距离 |\n| 网络超时 | 网络请求超时，请检查网络后重试 |\n| `响应解析失败` | 接口响应异常，请检查网络/VPN 连接后重试 |\n\nFile v1.0.1:references/params.md\n\n# 参数说明\n\n## 地址 JSON（--sender / --recipient）\n\n```json\n{\n  \"address\": \"北京市朝阳区融新科技中心A座\",  // 完整地址，楼号直接拼入此字段\n  \"houseNumber\": \"\",                          // 固定留空，填写会触发风控（11004~11008）\n  \"lat\": 40019368,                            // 纬度，整数×1e6\n  \"lng\": 116469191,                           // 经度，整数×1e6\n  \"name\": \"\",                                 // 固定留空，填写会触发风控\n  \"phone\": \"138xxxx5678\",                     // 联系电话（地址簿返回的脱敏号码可直接使用）\n  \"cityId\": 110100                            // 城市ID，见城市表\n}\n```\n\n> ⚠️ `houseNumber` / `name` / `remark` 必须留空，填写会触发风控（11004~11008）。\n\n**单地址场景**（取号/帮搬/帮扔/医院帮忙/其他帮忙）：`--sender` 和 `--recipient` 传同一个地址 JSON。\n\n---\n\n## 物品 JSON（--goods）\n\n```json\n{\n  \"goodsName\": \"文件\",\n  \"goodsWeight\": 1,          // 物品实际重量（公斤数），值是多少就是多少公斤，如 15 表示 15kg。重量越大配送费越贵\n  \"goodTypes\": [4],          // 物品类型数组\n  \"goodTypeNames\": [\"文件\"]  // 物品类型名称数组（与 goodTypes 一一对应）\n}\n```\n\n| 用户描述关键词 | goodTypes | goodTypeNames | goodsWeight 默认值 |\n|---|---|---|---|\n| 餐饮、外卖、食物、饭、菜、奶茶、饮料 | `[2]` | `[\"餐饮\"]` | 1 |\n| 文件、合同、资料、单据、证件、文书 | `[4]` | `[\"文件\"]` | 1 |\n| 生鲜、水果、蔬菜、肉、海鲜 | `[3]` | `[\"生鲜\"]` | 2 |\n| 蛋糕、甜品 | `[9]` | `[\"蛋糕\"]` | 2 |\n| 鲜花、花束、花 | `[1]` | `[\"鲜花\"]` | 1 |\n| 数码、手机、电脑、平板、耳机、电子产品 | `[5]` | `[\"数码\"]` | 1 |\n| 服饰、衣服、鞋、包、服装 | `[7]` | `[\"服饰\"]` | 1 |\n| 快递、包裹、箱子 | `[8]` | `[\"快递\"]` | 2 |\n| 五金、工具、零件、螺丝、管件 | `[2]` | `[\"五金\"]` | 2 |\n| 汽配、汽车配件、车零件 | `[2]` | `[\"汽配\"]` | 3 |\n| 其他、物品、东西、不明确 | `[8]` | `[\"其他\"]` | 1 |\n\n> ⚠️ `goodsWeight` 值即公斤数。如用户明确说\"15公斤\"，传 `15`；说\"5公斤左右\"，传 `5`。默认值仅供参考，**以用户实际告知为准**。\n\n---\n\n## businessType 与 bizTypeSceneTag\n\n`businessType` 只有两个合法值，**严禁传 3/4/5/6**（会导致 10002 错误）：\n\n| 用户意图 | --business-type | --biz-type-scene-tag |\n|---|---|---|\n| 帮取送文件/物品（A→B） | 1 | 0（默认） |\n| 餐厅取号 | 1 | 1 |\n| 医院帮忙 | 1 | 2 |\n| 其他取号 | 1 | 3 |\n| 帮搬装 | 1 | 4 |\n| 其他帮忙 | 1 | 5 |\n| 帮扔杂物 | 1 | 6 |\n| 帮买东西 | 2 | 0 |\n\n**purchaseGoodDetail**：帮买场景（businessType=2）**必传**，如 `\"一瓶矿泉水\"`。其他场景留空。\n\n---\n\n## businessTypeTag\n\n`businessTypeTag` 与 `bizTypeSceneTag` 是两个完全独立的参数，无关联。**仅在帮买场景（businessType=2）下生效**，用于区分购买地址来源：\n\n| 场景 | --business-type-tag | 含义 |\n|------|---------------------|------|\n| 帮买 - 用户指定购买地址 | `0` | 骑手前往 `--sender` 指定地址购买 |\n| 帮买 - 就近购买 | `1` | 骑手自行决定购买地点，`--sender` 传收件地址 |\n| 帮取送（businessType=1） | `0` | 不适用 |\n\n---\n\n## 城市表\n\n默认使用**北京**。用户提到城市时查此表获取 `cityId` 和参考坐标。\n\n| 城市 | cityId | --city | lat | lng |\n|------|--------|--------|-----|-----|\n| 北京 | 110100 | 北京 | 39904200 | 116407400 |\n| 上海 | 310100 | 上海 | 31231700 | 121472600 |\n| 广州 | 440100 | 广州 | 23129100 | 113264400 |\n| 深圳 | 440300 | 深圳 | 22543000 | 114057900 |\n| 成都 | 510100 | 成都 | 30572700 | 104066500 |\n| 杭州 | 330100 | 杭州 | 30274200 | 120153600 |\n| 武汉 | 420100 | 武汉 | 30592800 | 114305500 |\n| 南京 | 320100 | 南京 | 32060300 | 118796400 |\n| 西安 | 610100 | 西安 | 34341600 | 108939500 |\n| 重庆 | 500100 | 重庆 | 29563000 | 106551600 |\n\n> ⚠️ lat/lng 为城市中心参考坐标，仅用于 `search_poi` 提升精度，不作为下单地址坐标。不在表中的城市直接告知用户不支持。\n\n---\n\n## 坐标格式\n\n整数×1e6（如 40.019368° → 40019368）。地址簿返回的 `lat`/`lng` 已是此格式，**可直接用于下单，无需转换**。\n\nFile v1.0.1:dist/vendor/cliguard/js/package.json\n\n{ \"name\": \"cliguard\", \"version\": \"1.3.1\" }\n\nArchive v1.0.0: 11 files, 1920261 bytes\n\nFiles: dist/paotui.js (5178485b), dist/run.sh (285b), dist/vendor/cliguard/js/cliguard-wrapper.js (31916b), dist/vendor/cliguard/js/cliguard.js (55899b), dist/vendor/cliguard/js/package.json (43b), README.md (5142b), references/commands.md (2468b), references/errors.md (1731b), references/params.md (4441b), SKILL.md (7665b), _meta.json (139b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: meituan-paotui\ndescription: 美团跑腿下单助手。通过直接调用下单接口完成跑腿全流程，支持帮取送、帮买等场景。适用于工作场景：寄送合同/文件/设备、同城取件、办公室间物品转运、紧急采购等。触发词：帮我下跑腿、跑腿下单、美团跑腿、帮我送东西、跑腿订单、帮我取号、帮我搬、帮我买、寄文件、送合同、取快递、同城配送。\n---\n\n## [MANDATORY] SKILLHUB_METRIC_REPORTER_START\n执行本 Skill 的任何操作之前，必须先执行 Skill：`skill-metric-reporter`。\n按照 `skill-metric-reporter` 的要求完成 `skill_start` 上报后，才可继续本 Skill 正文。\n本 Skill 全部操作完成后，同样按照 `skill-metric-reporter` 的要求完成 `skill_end` 上报。\n## [MANDATORY] SKILLHUB_METRIC_REPORTER_END\n\n# 美团跑腿下单 Skill\n\n> ⚠️ **输出规范**：\n> 1. **严禁向用户展示任何技术细节**，包括但不限于：英文字段名（如 `businessType`、`bizTypeSceneTag`、`goodTypes`、`goodsWeight`）、JSON 结构、命令行内容、脚本路径、技术参数。执行过程中的中间状态（构造参数、调用接口）不展示，只展示用户需要知道的结果。\n> 2. **只展示用户意图相关的信息**：地址摘要（\"从 xxx 送到 xxx\"）、物品名称、费用卡片、预计时效、操作结果。费用卡片按固定模板逐行展示（见 Step 5）。\n> 3. **所有输出必须格式化展示，严格换行**：每个字段独占一行，用空行分隔。禁止将多条信息挤在一行。\n> 4. **手机号不脱敏**：地址簿返回的脱敏号码（如 `123****4567`）原样展示，不做额外处理。\n\n> ⚠️ **强制重读**：每次会话第一次触发时，必须重新读取本文件，不得依赖历史记忆。\n\n## When to Use\n\n帮取送、帮买、餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。用户说出\"跑腿\"、\"帮我送\"、\"帮我取\"、\"同城配送\"等意图时触发。\n\n## When NOT to Use\n\n仅询问价格/政策、跨城市配送、需要快递面单、用户明确表示不下单。\n\n---\n\n## 安全门控\n\n> ⚠️ 跑腿下单是**真实消费、不可逆操作**：\n\n1. **强制两步确认**：先预览展示费用卡片，等用户明确回复\"确认\"后才加 `--confirm` 提交。\n2. **信息完整性**：取件地址、收件地址、联系电话缺一不可，地址簿的 `phone` 字段直接使用。\n3. **金额异常拦截**：费用 > 100 元时需额外向用户确认。\n\n---\n\n## 工作流程\n\n**Step 0：登录授权检查**（首次使用或 Token 失效时执行）\n\n1. 调用接口检查 Token 是否有效\n2. 检查结果：\n   - **Token 有效** → 直接进入 Step 1\n   - **需要授权** → 执行下方授权流程\n3. 获取授权链接后，按以下格式展示（**不展示二维码**）：\n\n> 需要先授权美团账号，请完成以下操作后告诉我：\n>\n> 📱 **手机端**：直接点击下方链接，跳转美团 App 完成授权\n> [点击授权]({授权链接})\n>\n> 💻 **电脑端**：将以下链接复制到手机浏览器打开，再用美团 App 完成授权（链接 5 分钟内有效）：\n> `{授权链接}`\n\n4. 等待用户确认完成授权（用户回复\"已授权\"、\"好了\"、\"完成了\"等）\n5. 轮询授权状态\n   - 成功 → 提示\"✅ 授权成功\"，继续进入 Step 1\n   - 超时或失败 → 提示用户重新触发，流程结束\n\n> ⚠️ 授权轮询等待时间约 3~10 秒（取决于用户操作速度），无需人工干预。授权码有效期 600 秒。\n\n**Step 1：信息预收集**（静默，不等用户回复）\n\n从对话中提取已知信息（物品/场景/地址），直接进入 Step 2，**严禁**在登录检查前追问用户任何信息。\n\n> ⚠️ **帮买场景额外判断**：用户表达帮买意图时，Step 1 额外记录\"是否提供了购买地址\"。未提供则进入 Step 3 后主动询问。\n\n**Step 2：拉取地址簿**\n\n登录确认后立即拉取地址簿。\n\n- 用户提到具体地址 → 地址簿模糊匹配，匹配不到再调用 POI 搜索\n- 用户未提地址 → 按 `lastUseTime` 降序展示前 3 条，格式：\n\n```\n① 地址1-门牌号1\n　　王 · 123****4567\n\n② 地址2-门牌号2\n　　王 · 134****6789\n\n还有 XX 条地址，可以说关键词筛选\n```\n\n询问用户：**\"请问用哪个地址？（可以直接说序号或关键词，比如1送到2，也可以直接说新地址）\"**\n\n> ⚠️ 地址列表展示也必须格式化，每个地址独占一块（含换行），不得堆砌在一行。\n\n**Step 3：地址确认**\n\n- 选序号 → 直接使用地址簿的坐标和电话，跳过 POI 搜索\n- 说关键词 → 地址簿模糊匹配，匹配不到才调用 `search_poi`\n- 新地址 → 调用 `search_poi`，确认后询问联系电话\n- 单地址场景（取号/帮搬/帮扔等）→ 取件和收件用同一地址\n- 两个地址均需 POI 搜索时 → **并行发起**两条 `search_poi`\n- **帮买场景**：收件地址确认后，若 Step 1 未明确用户提供购买地址 → 询问\"在哪里买？\"\n  - 用户提供地址 → 将该地址填入取件地址\n  - 用户说\"就近购买\" → 取件地址填收件地址\n\n**Step 4：物品信息与参数构造**\n\nStep 1 已收集则直接使用，否则追问：\"请问送什么东西？\"\n\n根据用户描述的物品类型和场景，查阅 [references/params.md](references/params.md)：\n\n- 查「物品 JSON」章节：根据物品关键词得到类型代码、名称和重量默认值（用户告知具体重量时以实际数值为准）\n- 查「业务参数」章节：确认服务类型（帮取送/帮买/帮搬等）对应的参数组合\n- **帮买场景**：确认购买地址来源（用户指定 or 就近购买）\n- **严禁使用旧格式参数**\n\n**Step 5：预览 → 确认 → 提交**\n\n调用 `preview_and_submit`（不带 `--confirm`）展示费用卡片，用户确认后加 `--confirm` 提交。展示格式（每行一个字段，严格换行，不得压缩）：\n\n**第一步：预览（只展示费用，不提交）**\n\n返回后按以下模板逐行展示，**不展示任何命令或字段名**，每行之间用空行分隔：\n\n🛵 **服务类型** 帮取送 / 帮买 / 帮搬装 / …\n\n📦 **取件地址** 完整地址 · 取件电话\n\n🏠 **收件地址** 完整地址 · 收件人 收件电话\n\n🎁 **物品** 用户描述的物品名称\n\n📍 **距离** 如 `4.6公里`\n\n💰 **配送费** 如 `14.0 元`\n\n🕐 **预计时效** 如 `预计 1 分钟内有骑手接单，21:16 送达`\n\n💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)\n\n然后询问用户：**确认下单吗？**\n\n**第二步：用户确认后，不换参数，直接加确认标识重新提交**。所有参数（取件地址、收件地址、物品名称、物品重量档位、服务类型）必须与预览时完全一致，不得修改任何参数。\n\n下单成功后直接提示：📬 订单已提交！请在 15 分钟内打开美团 App → 我的订单 完成支付 💳，支付成功后骑手才会来取件 🛵\n\n> ⚠️ 费用卡片必须严格按上述模板逐行换行展示，每个字段独占一行，禁止省略或压缩到一行。\n\n---\n\n## 详细参考文档\n\n- [references/commands.md](references/commands.md) — 所有命令及参数（执行方式：`node scripts/paotui.js <command>`）\n- [references/params.md](references/params.md) — 地址JSON、物品JSON、businessType、城市表\n- [references/errors.md](references/errors.md) — 错误码与异常处理\n\nFile v1.0.0:README.md\n\n# 美团跑腿下单助手\n\n通过直接调用美团跑腿接口完成下单全流程，支持帮取送、帮忙、帮买三大类场景。适用于工作场景：寄送合同/文件/设备、同城取件、办公室间物品转运、紧急采购等。\n\n## 功能特性\n\n- **帮取送**：A 地取件送到 B 地，支持多种物品类型\n- **帮忙**：取号（餐厅/医院/其他）、帮搬装、帮扔杂物等\n- **帮买**：代购商品，支持指定购买地址或就近购买\n- **地址簿搜索**：自动拉取用户历史地址，按最近使用时间排序展示\n- **POI 地址搜索**：地址簿匹配不到时，通过关键词搜索补全坐标\n- **两步确认**：先预览费用，用户确认后再正式提交，防止误单\n- **订单查询**：实时查看订单状态\n\n## 触发词\n\n帮我下跑腿、跑腿下单、美团跑腿、帮我送东西、跑腿订单、帮我取号、帮我搬、帮我买、寄文件、送合同、取快递、同城配送\n\n---\n\n## 目录结构\n\n```\nMT-Paotui-For-Client/\n├── SKILL.md              # 核心技能说明（Agent 指令）\n├── README.md             # 本文件\n├── dist/\n│   ├── paotui.js         # 核心下单脚本\n│   └── run.sh            # 启动脚本（推荐使用）\n├── references/\n│   ├── commands.md       # 所有命令及参数说明\n│   ├── params.md         # 地址/物品/城市参数规范\n│   └── errors.md         # 错误码与异常处理\n```\n\n> ⚠️ 本 Skill 使用 **Node.js** 运行，需要 Node.js 18+ 环境。\n\n---\n\n## 场景零：授权\n\n### 执行流程\n\n1. 调用业务命令时自动检测是否登录，未登录则返回授权链接\n2. 根据使用环境完成授权：\n\n📱 **手机端**：直接点击授权链接，跳转美团 App 完成授权\n\n💻 **电脑端**：将授权链接复制到手机浏览器打开，再用美团 App 完成授权（链接 5 分钟内有效）\n\n---\n\n## 场景一：拉取地址簿\n\n### 触发条件\n\n需要获取用户历史地址，或用户在地址选择阶段提供关键词筛选。\n\n### 命令\n\n```bash\n# 帮取送 / 帮忙场景\nsh dist/run.sh get_address_list --address-type 1 --business-type 1 --scene 2\n\n# 帮买场景\nsh dist/run.sh get_address_list --address-type 1 --business-type 2 --scene 2\n```\n\n### 返回字段\n\n| 字段 | 说明 |\n|---|---|\n| addressId | 地址 ID |\n| address | 完整地址（楼号已含在此字段） |\n| phone | 联系电话（服务端脱敏，下单直接用） |\n| lat / lng | 坐标（整数×1e6），**直接用于下单，无需转换** |\n| cityId | 城市 ID |\n| lastUseTime | 最近使用时间戳（用于排序） |\n\n---\n\n## 场景二：POI 地址搜索\n\n### 触发条件\n\n用户提供新地址，但地址簿中匹配不到时，调用 POI 搜索获取坐标。\n\n### 命令\n\n```bash\nsh dist/run.sh search_poi --keyword \"奥林匹克森林公园南门\" --city \"北京\" --lat 39904200 --lng 116407400\n```\n\n### 参数说明\n\n| 参数 | 说明 | 默认值 |\n|---|---|---|\n| --keyword | 搜索关键词（必填） | — |\n| --city | 城市名 | 北京 |\n| --lat / --lng | 参考坐标（整数×1e6），提升搜索精度 | 北京中心 |\n\n---\n\n## 场景三：订单预览与提交\n\n### 执行流程\n\n**第一步：预览（不带 `--confirm`）** — 只展示费用，不提交\n\n**第二步：用户回复\"确认\"后加 `--confirm` 提交** — 参数必须与预览完全一致\n\n> ⚠️ 预览和提交在同一进程内完成，分开调用会导致 orderToken 失效（code 10311）。\n\n### 命令\n\n```bash\n# 预览\nsh dist/run.sh preview_and_submit \\\n  --sender '{\"address\":\"奥林匹克森林公园南门\",\"houseNumber\":\"\",\"lat\":40011253,\"lng\":116508883,\"name\":\"\",\"phone\":\"123****4567\",\"cityId\":110100}' \\\n  --recipient '{\"address\":\"望京soho\",\"houseNumber\":\"\",\"lat\":40020135,\"lng\":116469935,\"name\":\"\",\"phone\":\"123****6789\",\"cityId\":110100}' \\\n  --goods '{\"goodsName\":\"文件\",\"goodsWeight\":1,\"goodTypes\":[4],\"goodTypeNames\":[\"文件\"]}' \\\n  --business-type 1\n\n# 确认提交（参数完全相同，仅加 --confirm）\nsh dist/run.sh preview_and_submit ... --confirm\n```\n\n### 服务类型参数\n\n| 场景 | --business-type | --biz-type-scene-tag |\n|---|---|---|\n| 帮取送 | 1 | 0（默认） |\n| 餐厅取号 | 1 | 1 |\n| 医院帮忙 | 1 | 2 |\n| 其他取号 | 1 | 3 |\n| 帮搬装 | 1 | 4 |\n| 其他帮忙 | 1 | 5 |\n| 帮扔杂物 | 1 | 6 |\n| 帮买 | 2 | 0 |\n\n> ⚠️ `--business-type` 只有 1 和 2 两个合法值，严禁传 3/4/5/6。\n\n---\n\n## 场景四：查询订单状态\n\n```bash\nsh dist/run.sh get_order_status --order-id \"<orderViewId>\"\n```\n\n---\n\n## 安全门控\n\n- **两步确认**：先预览展示费用，等用户回复\"确认\"后才加 `--confirm` 提交\n- **金额拦截**：费用超过 100 元需额外向用户确认\n- **地址完整性**：取件地址、收件地址、联系电话缺一不可\n---\n\n## 相关文档\n\n- [references/commands.md](references/commands.md) — 所有命令及参数\n- [references/params.md](references/params.md) — 地址/物品/城市规范\n- [references/errors.md](references/errors.md) — 错误码与处理方式\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn71y9yc73jym61ban40qyj59h84r5jp\",\n  \"slug\": \"mt-paotui-for-client\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1778124499205\n}\n\nFile v1.0.0:references/commands.md\n\n# 命令参考\n\n## 执行方式\n\n```bash\n# 分发包（推荐）—— 使用混淆打包版\nsh dist/run.sh <command> [args...]\n\n# 源码开发调试\nnode scripts/paotui.js <command> [args...]\n```\n\n---\n\n## 命令列表\n\n### confirm_auth\n用户扫码授权后，轮询 Passport 授权状态并写入 Token 缓存。\n```bash\nnode scripts/paotui.js confirm_auth\n```\n- 读取 `/tmp/mt_passport_session.json` 中的 auth_code\n- 轮询 `/api/account/userauth/check`，等待用户 App 确认（最多 600 秒）\n- 成功 → Token 写入 `~/.xiaomei-workspace/mt_passport_auth.json`，返回 `✅ 授权成功`\n- 失败（超时/风控/取消）→ 返回具体错误，Token 不写入\n\n> ⚠️ `confirm_auth` 必须在用户扫码后立即调用，不得跳过或延迟，否则 auth_code 过期。\n\n---\n\n### search_poi\nPOI 地址搜索，获取地址坐标。\n```bash\nnode scripts/paotui.js search_poi --keyword \"融新科技中心\" --city \"北京\" --lat 39904200 --lng 116407400\n```\n- `--keyword`：搜索关键词（必填）\n- `--city`：城市名（默认北京）\n- `--lat` / `--lng`：参考坐标，提升搜索精度（整数×1e6）\n\n---\n\n### get_address_list\n获取用户地址簿（推荐，含坐标/标签/最近使用时间）。\n```bash\n# 帮送场景（默认）\nnode scripts/paotui.js get_address_list --address-type 1 --business-type 1 --scene 2\n\n# 帮买场景\nnode scripts/paotui.js get_address_list --address-type 1 --business-type 2 --scene 2\n```\n返回字段：`addressId`、`address`、`houseNumber`、`name`、`phone`（服务端脱敏，下单直接用）、`lat`/`lng`（整数×1e6，**直接用于下单**）、`cityId`、`tag`、`isDefault`、`lastUseTime`。\n\n---\n\n### preview_and_submit\n配送预览 + 提交一体化（推荐）。\n```bash\n# 第一步：预览（不带 --confirm，只展示费用，不提交）\nnode scripts/paotui.js preview_and_submit \\\n  --sender '<地址JSON>' \\\n  --recipient '<地址JSON>' \\\n  --goods '<物品JSON>' \\\n  --business-type 1 \\\n  [--biz-type-scene-tag 0] \\\n  [--tip-fee 0] \\\n  [--remark \"\"] \\\n  [--purchase-detail \"\"]\n\n# 第二步：用户确认后加 --confirm 提交（参数完全相同）\nnode scripts/paotui.js preview_and_submit ... --confirm\n```\n> ⚠️ `--confirm` 模式在同一进程内完成预览+提交，避免 orderToken 跨进程失效（code 10311）。\n\n---\n\n### get_order_status\n查询订单状态。\n```bash\nnode scripts/paotui.js get_order_status --order-id \"<orderViewId>\"\n```\n\nFile v1.0.0:references/errors.md\n\n# 异常处理\n\n| 错误码 / 现象 | 展示给用户 |\n|---|---|\n| 登录失效 / `status: error` / `AUTH_REQUIRED` / `AUTH_FAILED` | Token 不存在或已失效，请重新触发登录，我会展示新的授权二维码 |\n| `10001` 城市未开通 | 该城市暂未开通服务，建议使用美团 App 确认是否支持 |\n| `10002` 未知错误 | 信息异常，请检查下单参数。帮忙类用 businessType=1，帮买用 2 |\n| `10112` 区域未开通 | 该地址所在区域暂未开通服务，建议更换到其他地址 |\n| `10113` 城市未开通 | 该地址所在城市暂未开通服务，建议切换到其他城市 |\n| `10114` 因恶劣天气/道路管制等暂无法配送 | 因恶劣天气/道路管制/疫情等原因，暂无法配送，敬请谅解，建议稍后重试 |\n| `10115` 配送距离过远 | 配送距离过远，请重新选择地址 |\n| `10116` 无效地址 | 请选择有效的地址，提供更精确的地址（含街道/楼号/校区名）有助于定位 |\n| `10309` 配送费已动态发生变化 | 配送费已变动，请重新下单（同一次对话内重新预览即可） |\n| `10311` orderToken 失效 | 订单token失效，请重新下单（同进程内完成） |\n| `10401` 配送费计算失败 | 配送费计算失败，请重试一次 |\n| `11004~11008` 风控拒绝 | 下单信息异常，请检查地址和备注信息后重试 |\n| POI 搜索无结果 | 未找到该地址，请提供更精确的地址（含街道/楼号） |\n| 费用预览失败 | 费用预览失败，请检查地址坐标是否正确或尝试缩短距离 |\n| 网络超时 | 网络请求超时，请检查网络后重试 |\n| `响应解析失败` | 接口响应异常，请检查网络/VPN 连接后重试 |\n\nFile v1.0.0:references/params.md\n\n# 参数说明\n\n## 地址 JSON（--sender / --recipient）\n\n```json\n{\n  \"address\": \"北京市朝阳区融新科技中心A座\",  // 完整地址，楼号直接拼入此字段\n  \"houseNumber\": \"\",                          // 固定留空，填写会触发风控（11004~11008）\n  \"lat\": 40019368,                            // 纬度，整数×1e6\n  \"lng\": 116469191,                           // 经度，整数×1e6\n  \"name\": \"\",                                 // 固定留空，填写会触发风控\n  \"phone\": \"138xxxx5678\",                     // 联系电话（地址簿返回的脱敏号码可直接使用）\n  \"cityId\": 110100                            // 城市ID，见城市表\n}\n```\n\n> ⚠️ `houseNumber` / `name` / `remark` 必须留空，填写会触发风控（11004~11008）。\n\n**单地址场景**（取号/帮搬/帮扔/医院帮忙/其他帮忙）：`--sender` 和 `--recipient` 传同一个地址 JSON。\n\n---\n\n## 物品 JSON（--goods）\n\n```json\n{\n  \"goodsName\": \"文件\",\n  \"goodsWeight\": 1,          // 物品实际重量（公斤数），值是多少就是多少公斤，如 15 表示 15kg。重量越大配送费越贵\n  \"goodTypes\": [4],          // 物品类型数组\n  \"goodTypeNames\": [\"文件\"]  // 物品类型名称数组（与 goodTypes 一一对应）\n}\n```\n\n| 用户描述关键词 | goodTypes | goodTypeNames | goodsWeight 默认值 |\n|---|---|---|---|\n| 餐饮、外卖、食物、饭、菜、奶茶、饮料 | `[2]` | `[\"餐饮\"]` | 1 |\n| 文件、合同、资料、单据、证件、文书 | `[4]` | `[\"文件\"]` | 1 |\n| 生鲜、水果、蔬菜、肉、海鲜 | `[3]` | `[\"生鲜\"]` | 2 |\n| 蛋糕、甜品 | `[9]` | `[\"蛋糕\"]` | 2 |\n| 鲜花、花束、花 | `[1]` | `[\"鲜花\"]` | 1 |\n| 数码、手机、电脑、平板、耳机、电子产品 | `[5]` | `[\"数码\"]` | 1 |\n| 服饰、衣服、鞋、包、服装 | `[7]` | `[\"服饰\"]` | 1 |\n| 快递、包裹、箱子 | `[8]` | `[\"快递\"]` | 2 |\n| 五金、工具、零件、螺丝、管件 | `[2]` | `[\"五金\"]` | 2 |\n| 汽配、汽车配件、车零件 | `[2]` | `[\"汽配\"]` | 3 |\n| 其他、物品、东西、不明确 | `[8]` | `[\"其他\"]` | 1 |\n\n> ⚠️ `goodsWeight` 值即公斤数。如用户明确说\"15公斤\"，传 `15`；说\"5公斤左右\"，传 `5`。默认值仅供参考，**以用户实际告知为准**。\n\n---\n\n## businessType 与 bizTypeSceneTag\n\n`businessType` 只有两个合法值，**严禁传 3/4/5/6**（会导致 10002 错误）：\n\n| 用户意图 | --business-type | --biz-type-scene-tag |\n|---|---|---|\n| 帮取送文件/物品（A→B） | 1 | 0（默认） |\n| 餐厅取号 | 1 | 1 |\n| 医院帮忙 | 1 | 2 |\n| 其他取号 | 1 | 3 |\n| 帮搬装 | 1 | 4 |\n| 其他帮忙 | 1 | 5 |\n| 帮扔杂物 | 1 | 6 |\n| 帮买东西 | 2 | 0 |\n\n**purchaseGoodDetail**：帮买场景（businessType=2）**必传**，如 `\"一瓶矿泉水\"`。其他场景留空。\n\n---\n\n## businessTypeTag\n\n`businessTypeTag` 与 `bizTypeSceneTag` 是两个完全独立的参数，无关联。**仅在帮买场景（businessType=2）下生效**，用于区分购买地址来源：\n\n| 场景 | --business-type-tag | 含义 |\n|------|---------------------|------|\n| 帮买 - 用户指定购买地址 | `0` | 骑手前往 `--sender` 指定地址购买 |\n| 帮买 - 就近购买 | `1` | 骑手自行决定购买地点，`--sender` 传收件地址 |\n| 帮取送（businessType=1） | `0` | 不适用 |\n\n---\n\n## 城市表\n\n默认使用**北京**。用户提到城市时查此表获取 `cityId` 和参考坐标。\n\n| 城市 | cityId | --city | lat | lng |\n|------|--------|--------|-----|-----|\n| 北京 | 110100 | 北京 | 39904200 | 116407400 |\n| 上海 | 310100 | 上海 | 31231700 | 121472600 |\n| 广州 | 440100 | 广州 | 23129100 | 113264400 |\n| 深圳 | 440300 | 深圳 | 22543000 | 114057900 |\n| 成都 | 510100 | 成都 | 30572700 | 104066500 |\n| 杭州 | 330100 | 杭州 | 30274200 | 120153600 |\n| 武汉 | 420100 | 武汉 | 30592800 | 114305500 |\n| 南京 | 320100 | 南京 | 32060300 | 118796400 |\n| 西安 | 610100 | 西安 | 34341600 | 108939500 |\n| 重庆 | 500100 | 重庆 | 29563000 | 106551600 |\n\n> ⚠️ lat/lng 为城市中心参考坐标，仅用于 `search_poi` 提升精度，不作为下单地址坐标。不在表中的城市直接告知用户不支持。\n\n---\n\n## 坐标格式\n\n整数×1e6（如 40.019368° → 40019368）。地址簿返回的 `lat`/`lng` 已是此格式，**可直接用于下单，无需转换**。\n\nFile v1.0.0:dist/vendor/cliguard/js/package.json\n\n{ \"name\": \"cliguard\", \"version\": \"1.3.1\" }","readmeExcerpt":"Skill: 美团跑腿 Owner: meituan-tech Summary: 美团跑腿下单助手。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。 Tags: latest:1.0.5 Version history: v1.0.5 | 2026-09-20T08:19:23.002Z | user **mt-paotui-for-client 1.0.5 Change Summary** - Rebuilt project with dist/和passport-auth环境准备、鉴权、ru","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"bash \"$(dirname \"$0\")/../passport-auth/scripts/install.sh\""},{"language":"bash","snippet":"pt-passport get-token --client_id ac76c22d257c4c6d9164719eea64ed4b > /dev/null 2>&1\necho $?"},{"language":"bash","snippet":"TOKEN=$(pt-passport get-token --client_id ac76c22d257c4c6d9164719eea64ed4b)\n  MCP_ACCESS_TOKEN=\"$TOKEN\" sh run.sh login"},{"language":"bash","snippet":"pt-passport auth get-code --client_id ac76c22d257c4c6d9164719eea64ed4b"},{"language":"bash","snippet":"bash \"<SKILL_DIR>/passport-auth/scripts/qrcode-image.sh\" \"<AUTH_LINK>\" \"ac76c22d257c4c6d9164719eea64ed4b\""},{"language":"bash","snippet":"pt-passport auth poll-token --client_id ac76c22d257c4c6d9164719eea64ed4b"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: MT-Paotui-For-Client\ndescription: 美团跑腿下单助手。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。\n---\n# 美团跑腿下单 Skill\n\n> ⚠️ **输出规范**：\n> 1. **严禁向用户展示任何技术细节**，包括但不限于：英文字段名、JSON 结构、命令行内容、脚本路径、技术参数。执行过程中的中间状态不展示，只展示用户需要知道的结果。\n> 2. **只展示用户意图相关的信息**：地址摘要（\"从 xxx 送到 xxx\"）、物品名称、费用卡片、预计时效、操作结果。费用卡片按固定模板逐行展示（见 Step 5）。\n> 3. **所有输出必须格式化展示，严格换行**：每个字段独占一行，用空行分隔。禁止将多条信息挤在一行。\n> 4. **手机号必须真实**：脱敏号码（含 `****`）严禁传入下单接口，真实号码获取规则详见 Step 3。\n>\n> 5. **严禁在回复任何位置展示内部过程描述**（开头、中间、结尾均禁止）。如\"地址簿拉取成功\"\"POI搜索到了多个结果\"\"匹配不到地址簿\"\"同时还需要确认\"\"一起问\"\"已匹配该地址\"等均属内部过程，严禁出现。用户只需要看到问题、选项和结果，不需要知道后台做了什么操作。\n\n> ⚠️ **强制重读**：每次会话第一次触发时，必须重新读取本文件，不得依赖历史记忆。\n\n## When to Use\n\n帮取送、帮买、餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。用户说出\"跑腿\"、\"帮我送\"、\"帮我取\"、\"帮忙\"等意图时触发。\n\n## When NOT to Use\n\n询问其他非跑腿业务场景，跨城远距离配送或者用户明确表示不下单时。\n\n## 风险提示与免责声明\n\n本 Skill 通过开放平台接口实现跑腿下单功能。\n\n• 调用方应确保所使用的 AI 助手已在中国大陆完成安全备案，并符合相关法律法规要求\n\n• 调用方应审慎评估 AI 对需求的理解偏差风险，使用本人账号授权操作，确认订单预览后再提交\n\n• 如发现异常订单或 AI 行为异常，请立即联系美团客服处理\n\n---\n\n## 场景识别与分流\n\n收到用户请求后，首先判断属于以下哪种场景，后续流程按对应分支执行：\n\n- **帮取送**：从 A 地取件送到 B 地，需要取件地址 + 收件地址 + 取送物品信息\n- **帮买**：骑手代购商品，需要购买方式 + 收件地址 + 购买物品信息\n- **帮忙**（以下场景统一归为帮忙）：餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。只需一个地址，不涉及物品信息\n\n---\n\n## 安全门控\n\n> ⚠️ 跑腿下单是**真实消费、不可逆操作**：\n\n1. **强制两步确认**：先预览展示费用卡片，等用户明确回复\"确认\"后才提交。\n2. **信息完整性**（按场景区分必填项）：\n   - **帮取送**：取件地址、收件地址、取件电话、收件电话、物品信息（需查 `params.md` 品类表映射 goodTypes/goodTypeNames/goodsWeight）（5 项）\n   - **帮买**：送达地址 + 电话 + 购买方式（指定购买地址 or 就近购买）+ 物品信息（`--purchase-detail`）（4 项）\n   - **帮忙**：帮忙地址 + 电话（2 项）\n\n   缺失任何必填项**不允许询价和提单**。电话获取规则详见 Step 3。\n3. **金额异常拦截**：费用 > 100 元时需额外向用户确认。\n\n---\n\n## 工作流程\n\n**Step 0：鉴权检查（自包含授权）**\n\n本 Skill 内置了 `pt-passport` 授权工具，无需依赖外部 Skill。\n\n**0.1 安装 pt-passport CLI（每次会话执行一次）**\n\n```bash\nbash \"$(dirname \"$0\")/../passport-auth/scripts/install.sh\"\n```\n\n> 若无法定位路径，用 `glob_file_search` 搜索 `passport-auth/scripts/install.sh` 找到绝对路径后执行。安装成功或已是最新则继续。\n\n**0.2 检查缓存的授权 Token**\n\n```bash\npt-passport get-token --client_id ac76c22d257c4c6d9164719eea64ed4b > /dev/null 2>&1\necho $?\n```\n\n- 退出码 `0`（缓存命中）→ 取出 Token 执行 `login` 验证：\n  ```bash\n  TOKEN=$(pt-passport get-token --client_id ac76c22d257c4c6d9164719eea64ed4b)\n  MCP_ACCESS_TOKEN=\"$TOKEN\" sh run.sh login\n  ```\n  - **已登录** → 直接进入 Step 1\n  - **AUTH_FAILED** → 走下方授权流程\n- 退出码 `1`（无缓存）→ 走下方授权流程\n\n**0.3 发起授权（无缓存或缓存失效时）**\n\n```bash\npt-passport auth get-code --client_id ac76c22d257c4c6d9164719eea64ed4b\n```\n\n解析输出：\n- `AUTH_LINK: <url>` → 生成二维码并展示给用户：\n  ```bash\n  bash \"<SKILL_DIR>/passport-auth/scripts/qrcode-image.sh\" \"<AUTH_LINK>\" \"ac76c22d257c4c6d9164719eea64ed4b\"\n  ```\n  读取输出的 `QRCODE_IMAGE:<path>` 图片路径，用 `![二维码](<path>)` 内联渲染。\n\n  按以下格式展示授权信息：\n\n  📱 请用美团 App 扫码授权，或点击链接确认：\n\n  👉 [点击授权](<AUTH_LINK>)\n\n  > ⏱ 链接有效期 10 分钟，授权完成后告诉我一声。\n\n  > ⚠️ 只展示 `AUTH_LINK`，不要展示 `DIRECT_AUTH_LINK`。\n\n  展示完链接后等待用户确认授权，在此期间不执行任何需要 Token 的操作（包括拉取地址簿、POI 搜索等），不追问业务信息（包括购买地址、收件地址、物品信息等）。\n\n- 输出 `Token:` 开头 → 授权已有效，取出 Token 继续\n- 输出 `❌` → 按错误码提示用户\n\n**0.4 用户确认授权后获取 Token**\n\n当用户回复\"已授权\"或表示"},{"path":"node_modules/@sec/cliguard/README.md","content":"# openclaw-cliguard\n\n集成验签和设备指纹\n\n\n## 接入文档\n\n**https://km.sankuai.com/collabpage/2755803958**\n\n\n## CLI配置\n\n**需要Node环境**\n\n\n## changelog\n    ### v1.4.0\n        1.新增发码功能\n    ### v1.3.3\n        1.为websocket upgrade请求过滤公参注入等逻辑，避免影响长链建立。\n    ### v1.3.2\n        1.修复CLI导出 --help 提示不对的问题\n    ### v1.3.0\n        1.自动patch为网络请求添加mtgsig（包括验签值d1&设备指纹a6）\n        2.启动守护进程进行自升级检查"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn71y9yc73jym61ban40qyj59h84r5jp\",\n  \"slug\": \"mt-paotui-for-client\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1789892363002\n}"},{"path":"references/commands.md","content":"# 命令与参数\n\n## 命令总览\n\n| 命令 | 说明 | 必填参数 |\n|------|------|---------|\n| `login` | 检查鉴权状态 | 无（可选 `--force`） |\n| `logout` | 登出（清除本地 Token） | 无 |\n| `confirm_auth` | 检查鉴权有效性 | 无 |\n| `search_poi` | POI 地址搜索 | `--keyword` |\n| `get_address_list` | 获取用户地址簿 | 无 |\n| `get_address_info` | 根据地址 ID 获取真实手机号 | `--address-id` |\n| `delivery_preview` | 配送预览（查询费用/时效） | `--sender --recipient --goods` |\n| `submit_order` | 提交订单 | `--order-token --sender --recipient --goods --delivery-fee` |\n| `get_order_status` | 查询订单状态 | `--order-id` |\n| `get_last_preview` | 查看上一次预览结果（缓存） | 无 |\n\n## 详细参数\n\n### search_poi\n```\n--keyword <string>     搜索关键词（必填）\n--city <string>        城市名（默认\"北京\"）\n--lat <number>         纬度（E6整数或小数）\n--lng <number>         经度（E6整数或小数）\n```\n\n### get_address_list\n```\n--address-type <int>   地址类型（默认 1）\n--business-type <int>  业务类型（默认 1）\n--scene <int>          场景（默认 2）\n```\n返回字段：`addressId`、`address`、`houseNumber`、`name`、`phone`（服务端脱敏）、`lat`/`lng`、`cityId`、`tag`、`isDefault`、`lastUseTime`。\n\n> ⚠️ `phone` 是脱敏号码（如 `187****0436`），仅供展示，**不能直接用于下单**。需通过 `get_address_info` 获取真实号码。\n\n---\n\n### get_address_info\n根据地址 ID 获取真实手机号。`get_address_list` 返回的 phone 是脱敏号码，不能直接用于下单，**必须通过此命令获取真实号码**。其余地址信息（address、houseNumber、name、坐标等）仍使用 `get_address_list` 返回的。\n```\n--address-id <string>  地址 ID（必填，来自 get_address_list 返回的 addressId）\n```\n返回字段：`addressId`、`phone`（**真实号码**）。\n\n---\n\n### delivery_preview\n配送预览命令，返回费用、时效、orderToken 等信息，不提交订单。结果会自动缓存，可通过 `get_last_preview` 查看。\n```\n--sender <JSON>              发件人地址对象（必填）\n--recipient <JSON>           收件人地址对象（必填）\n--goods <JSON>               物品信息对象（必填）\n--business-type <string>     业务类型: 1=帮取送/帮忙, 2=帮买（默认 1）\n--biz-type-scene-tag <string> 场景标签（默认 0，仅帮取送体系使用，详见 params.md；帮买不传，帮买用 --business-type-tag）\n--service-type <string>       服务类型，仅帮取送/帮忙使用（帮取送 1003=普通送/4033=1v1急送，帮忙固定 4033）；帮买不传\n--tip-fee <int>              小费（分，默认 0）\n--purchase-detail <string>   帮买物品明细（businessType=2 时使用）\n```\n\n返回字段中需要关注的：`orderToken`（提交订单时必传）、`_deliveryFee`（提交订单时必传配送费原价）、`_couponViewId`（有优惠券时传入提交）。\n\n**帮买场景参数组合**（businessType=2，与帮取送/帮忙的关键差异）：\n\n> ⚠️ `--business-type-tag` **未列入 CLI usage 帮助文本**（工具方遗漏），功能正常，照常传。另注意与 `--biz-type-scene-tag` 严禁互串：帮买用 `--business-type-tag`，帮取送体系用 `--biz-type-scene-tag`，误传会静默错单。\n\n- `--business-type 2`\n- `--business-type-tag`：指定购买地址传 `0`，就近购买传 `1`\n- `--sender`：指定购买地址时传商家地址；就近购买时传收件地址（和 `--recipient` 相同）\n- `--purchase-detail`：必传，填写购买物品明细\n- 不传 `--service-type`（帮买专用参数组合，与其他场景的关键差异）\n\n就近购买示例：\n```\n--sender '{\"lat\":40020135,\"lng\":116469935,\"address\":\"朝来科技产业园西区-1号楼\",\"name\":\"j\",\"phone\":\"13552069166\"}' \\\n--recipient '{\"lat\":40020135,\"lng\":116469935,\"address\":\"朝来科技产业园西区-1号楼\",\"name\":\"j\",\"phone\":\"13552069166\"}' \\\n--goods '{\"goodsName\":\"猫粮\"}' --business-type 2 --business-type-tag 1 --purchase-detail \"购买一包猫粮\"\n```\n\n**帮取送/帮忙场景**：businessType=1，需按场景传 `--service-type`（详见上表），不传 `--business-type-tag`/`--purchase-detail`。\n\n---\n\n### submit_order\n提交订单命令。需要先通过 `delivery_preview` 获取 `orderToken` 和 `_deliveryFee`，再传入提交。\n```\n--order-token <string>       配送令牌（必填，来自预览返回的 orderToken）\n--sender <JSON"},{"path":"references/errors.md","content":"# 异常处理\n\n| 异常错误 | 含义 | 处理类型 | 处理方式 |\n|---|---|---|---|\n| 登录失效 / `status: error` / `AUTH_REQUIRED` / `AUTH_FAILED` | Token 不存在或已失效 | 重试 | 执行 `login` 命令重新授权 |\n| `10000` | 登录态失效 | 重新登录 | 先执行 `login --force` 强制刷新并重试，仍失败则提示用户重新登录。详见下方 Token 失效自动检测 |\n| `10001` | 必填参数校验未通过 | 校验补全 | 检查手机号是否为脱敏号码(含\\*\\*\\*\\*)或缺失，按优先级自动填写真实号码：用户明确提供的真实电话 > get_address_info返回的真实号码 > 登录账号的手机号，严禁使用脱敏号码下单，补全后重新提交 |\n| `10002` | goodTypes与goodTypeNames不匹配 | 校验补全 | 检查goodTypes/goodTypeNames映射是否一致并修改 |\n| `10003` | 服务器偶发异常/超时 | 透传 | 提示用户：「服务器暂时开小差啦，请稍后重试。」 |\n| `10309` | 配送费已动态变化 | 二次确认 | 重新询价和预览订单，展示并提示用户「配送费发生动态变化，请重新确认下单」 |\n| `10310` | 账号被风控限制 | 透传 | 提示用户：「系统检测到您的账号存在异常行为，已被限制下单。如有疑问请前往美团app或小程序咨询客服」不重试 |\n| `10311` | orderToken失效 | 重试 | 重新询价并再次下单 |\n| `10392` | 帮买场景误传了 service-type（如 4033） | 校验修正 | 帮买场景不传 `--service-type`，去掉该参数后重新询价并下单 |\n| `10112` | 取件/购买地址所在区域未开通服务 | 透传 | 提示用户：「该地址所在区域暂未开通跑腿服务，请重新选择地址。」 |\n| `10113` | 地址所在城市未开通服务 | 透传 | 提示用户：「该地址所在城市暂未开通跑腿服务，请更换为已开通服务的城市。」 |\n| `10114` | 交通管制等特殊原因无法配送 | 透传 | 提示用户：「因临时交通管制，该地址暂时无法配送，请稍后重试。」 |\n| `10115` | 配送距离超出最大范围 | 透传 | 提示用户：「收发件地址距离过远，超出配送范围，请选择更近的地址。」 |\n| `10116` | 无效地址 | 透传 | 提示用户：请提供更精确的地址 |\n| `11000` | 提单内容包含不规范内容 | 透传 | 提示用户：「订单内容包含不规范内容，请修改后重新下单。」 |\n| `11003` | 商品信息不符合平台规范 | 透传 | 提示商品信息不符合平台规范，包含违禁物品或敏感词，请修改后重新下单。 |\n| `11004` | 备注内容不符合规范 | 透传 | 提示用户：「备注内容不符合规范，请修改后重新下单。」 |\n| `11005` | 发件人姓名包含不规范内容 | 透传 | 提示用户：「发件人姓名包含不规范内容，请修改后重试。」 |\n| `11006` | 发件地址包含不规范内容 | 透传 | 提示用户：「发件地址包含不规范内容，请修改后重试。」 |\n| `11007` | 收件人姓名包含不规范内容 | 透传 | 提示用户：「收件人姓名包含不规范内容，请修改后重试。」 |\n| `11008` | 收件地址包含不规范内容 | 透传 | 提示用户：「收件地址包含不规范内容，请修改后重试。」 |\n| `11016` | 物品描述不符合规范 | 透传 | 提示用户：「配送物品描述不符合规范，请修改后重新下单。」 |\n| `40001` | 不支持代购药品/医疗器械 | 透传 | 提示用户：「跑腿不支持代购药品和医疗器械，请选择其他品类。」 |\n| `10401` | 配送费计算失败 | 重试 | 重新询价并再次下单 |\n| POI 搜索无结果 | POI搜索无结果 | 透传 | 提示用户提供更精确的地址（含街道/楼号） |\n| 费用预览失败 | 费用预览失败 | 重试 | 检查地址坐标是否正确或尝试缩短距离 |\n| 网络超时 | 网络超时 | 重试 | 提示用户：网络问题超时，请检查网络/VPN后重试 |\n| 响应解析失败 | 接口响应异常 | 重试 | 提示用户：接口异常，请检查网络/VPN连接后重试 |\n\n## Token 失效自动检测\n\n当任何接口返回 `code: 10000` 且 `message` 为\"未知错误\"时，应视为 Token 服务端过期：\n\n1. 自动执行 `login --force` 强制重新授权\n2. 授权成功后重试原请求\n3. 若重试仍失败，按实际错误码处理\n\n> ⚠️ `login`（不带 `--force`）仅检查本地缓存文件，不验证服务端有效性。因此本地 Token 存在 ≠ 服务端有效，收到 10000 时必须使用 `login --force` 强制刷新。"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"美团跑腿下单助手。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。 Skill: 美团跑腿 Owner: meituan-tech Summary: 美团跑腿下单助手。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。 Tags: latest:1.0.5 Version history: v1.0.5 | 2026-09-20T08:19:23.002Z | user **mt-paotui-for-client 1.0.5 Change Summary** - Rebuilt project with dist/和passport-auth环境准备、鉴权、ru","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":744,"uniquenessScore":60,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T13:09:00.904Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T13:09:00.904Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T15:52:50.532Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}