# Travel Planner

> 旅行规划助手 —— **唯一交付物 = 单文件 HTML 部署到 GitHub Pages 的 URL**（手机/电脑浏览器直接看）。通过高德地图 MCP（路线/POI/酒店/天气/POI 详情）、**小红书 skill Step 1.5 目的地攻略** + Round 3 店级避雷、美团攻略 WebFetch（编辑过的好店清单）三件套，**零装零扫码**生成含酒店、每日行程、餐厅候选的单文件 HTML 旅行方案。大众点评 OpenCLI 降级为"深度档"（必吃榜 + 评价数才用）。支持多轮对话、**v1.5.0 三阶段分轮筛检**（Round1结构→Round2时空→Round3体验，每轮筛不同维度）、增量修改。**v2.3.0**：Step 1.5 必做小红书目的地攻略后再分组排线。**v1.5.0 硬约束**：AI 必跑 MCP + 必部署 GitHub Pages。适用场景：用户…

- **Type:** Skill
- **Install:** `agentstack add skill-squirrelsong5-travel-planner-skill-travel-planner-skill`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [SquirrelSong5](https://agentstack.voostack.com/s/squirrelsong5)
- **Installs:** 0
- **Category:** [Developer Tools](https://agentstack.voostack.com/c/developer-tools)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [SquirrelSong5](https://github.com/SquirrelSong5)
- **Source:** https://github.com/SquirrelSong5/travel-planner-skill

## Install

```sh
agentstack add skill-squirrelsong5-travel-planner-skill-travel-planner-skill
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# travel-planner

## 🔴 v1.5.0 硬约束：唯一交付物 + 必跑 MCP

> **v1.5.0 起明确写入 SKILL.md 顶部**，作为 AI 必须遵守的硬规则：

### 硬约束 1：唯一交付物是【HTML 部署到 GitHub Pages 的 URL】

- ❌ **不允许** AI 把 PDF / Word / Markdown / 长图作为"输出"——**PDF / Word / Markdown 是 chat 里的中间产物，HTML URL 才是交付物**
- ❌ **不允许** AI 写"用浏览器 Cmd+P 打印为 PDF"——**这是用户的**后续操作**，不是 AI 的输出**
- ✅ **必须**走 `gh repo create` + `gh repo push` + 返回 `https://USERNAME.github.io/REPO/`
- ✅ **必须**：手机 / 电脑打开 URL 直接看（响应式 HTML）

### 硬约束 2：必跑高德实时数据（不能凭 LLM 记忆）

- ❌ **不允许** AI 凭训练数据**写** POI 名称 / 地址 / 营业时间 / 评分 / 路线 / 通勤时间 / 餐厅推荐 / 酒店信息——**这些数据必须实时查询**
- ✅ **必须**调高德 MCP `maps_text_search` / `maps_search_detail` / `maps_geo` 拿 POI 真实数据
- ✅ **路线时间/费用**：调 MCP `maps_direction_walking/driving/bicycling/transit_integrated`（或 REST 兜底），写 `duration_min`、`fare`、`description`
- ✅ `transports[].source` 写 `"amap-mcp"` 或 `"amap-rest-api"`——**不是** `"ai-fallback"` / 空
- ❌ **不允许** AI 凭训练数据写通勤时间——`scripts/validate.py` **V8 阻断**
- ⚠️ **MCP 整站不可用**（v2.0.0 P23 三层探针失败）：POI/天气等走 **REST API 全量降级**（详见 `references/amap-mcp-usage.md` §P23–P25）

### 硬约束 3：增量修改后必重跑 V1-V6 + V8 + V9 受影响项 + 重渲 HTML + 重部署

- ❌ **不允许** AI 自报告"修改完成"但没重渲 HTML / 没重部署 GitHub Pages
- ✅ **必须**：`python scripts/validate.py` → 渲染 HTML → `gh repo push` → 返回新 URL

### 为什么 v1.5.0 要写硬约束

> 之前 v1.1 / v1.2 / v1.3 / v1.4 都没用——AI 看到 SKILL.md 顶部只是"这是什么" / "客户端适配层"这种"软描述"，**没有强提示"这是硬规则、违反就阻断"**。
> 实际使用中：
> 1. 用户问"我在手机怎么看" → AI 推论"PDF"（错，应该是 GitHub Pages URL）
> 2. AI 凭训练数据写 POI / 路线 / 餐厅 → 数据不准 / 过期 / 凭空编
> 3. AI 报告"✅ 全通过"但 V2 是 LLM 记忆算的
>
> **v1.5.0 修复**：硬约束文字放 SKILL.md **顶部**（AI 必看）+ `scripts/validate.py` **V8 阻断**（代码层校验）+ `template.html` JS 校验（用户可查）。

---

## 这是什么

一个**客户端无关**的旅行规划 Skill（兼容 Claude Code CLI / Hermes desktop GUI / 其他支持 MCP 的客户端）。输入：用户的旅行需求（目的地、日期、人数、偏好、禁忌）。
输出：一个**单文件 HTML**（卡片化、无外部依赖、可直接手机打开分享）+ 多轮对话里的方案迭代。

定位：**生成出发前的参考坐标，不是假装旅行会逐小时照做的执行脚本**。
（参考项目 trip-map-builder 的核心理念，本 skill 沿用。）

---

## 客户端适配层（v1.4.0 重构：覆盖 7 个客户端）

> **v1.1 → v1.4.0 重大扩展**：原版只覆盖 Claude Code CLI + Hermes desktop GUI 两个客户端。**v1.4.0 起扩展到 7 个客户端**：Claude Code / Hermes / Cursor / Codex CLI / Google Cloud Code / Trae / CodeBuddy——基本覆盖国内用户能接触到的所有 AI coding 客户端。
>
> **核心原则**：
> 1. **MCP tool 名字是跨客户端统一的**（`mcp__amap__maps_direction_walking` 在 7 个客户端里都叫这个）—— 这是 MCP 协议的设计目标，**AI 不用管客户端，只看自己工具列表**
> 2. **MCP 装/卸命令**和**配置位置**因客户端而异——AI 按探测到的客户端走对应命令
> 3. **Shell 执行方式**有 3 种：`!cmd` 前缀（CC）/ 终端工具（Hermes/Cursor/Cloud Code/CodeBuddy）/ 直接 shell（Codex CLI）
> 4. **重启策略**也分：必须重启（CC / Cursor / Cloud Code / Trae / CodeBuddy）/ 不需要（Hermes）/ 项目级 config 改动热加载（Codex）
>
> 本节给出一套**客户端感知**的工作流，**同一份 skill 在 7 个客户端跑出来的体验一致**。

### 7 个客户端速查

| 客户端 | 平台 | 探测方式 | MCP 安装方式 | 配置位置 | Shell 执行 | MCP 重启 |
|--------|------|---------|------------|---------|----------|---------|
| **Claude Code CLI** | Mac/Linux/Windows 终端 | `which claude` 存在 | `claude mcp add ...` | `~/.claude.json` | 用户输入 `!cmd` 前缀 | **必须**：完全退出 CC 重开 |
| **Hermes desktop GUI** | Mac 桌面 app | `which hermes` 存在 / 工具列表有 `terminal()` | `hermes mcp add ...` | `~/.hermes/config.yaml` | AI 用 `terminal()` 工具直接跑 | **不需要**（下次启动自动加载）|
| **Cursor** | Mac/Win/Linux IDE | `which cursor` 存在 / 工具列表有 `run_terminal_cmd` | 编辑 `~/.cursor/mcp.json` 或 IDE 设置面板 | `~/.cursor/mcp.json`（全局）/ `.cursor/mcp.json`（项目）| AI 用 `terminal` / `run_terminal_cmd` 工具 | **必须**：Cmd+Shift+P → Reload Window |
| **Codex CLI** (OpenAI) | 终端 | `which codex` 存在 | `codex mcp add ...` | `~/.codex/config.toml`（全局）/ `.codex/config.toml`（项目）| 直接 shell（Codex 自己跑）| **自动**（项目级 config 改动热加载；全局 config 需重启会话）|
| **Google Cloud Code** | 浏览器 / VS Code 扩展 | 在 Cloud Shell 终端 / VS Code 扩展里跑 AI | 编辑 `~/.cloudshell_cloudsdk_mcp.json` 或 VS Code 设置 | `~/.cloudshell_cloudsdk_mcp.json` | AI 用 `terminal` 工具 | **必须**：重开会话 |
| **Trae** (字节) | Mac/Win IDE | `which trae` 存在 | IDE 内 MCP 设置面板 | Trae 内部配置 | AI 用终端工具 | **必须**：重启 IDE |
| **CodeBuddy** (腾讯) | Mac/Win IDE | `which codebuddy` 存在 | IDE 内 MCP 设置面板 | CodeBuddy 内部配置 | AI 用终端工具 | **必须**：重启 IDE |

> **AI 怎么自检自己跑在哪个客户端**（4 选 1）：
> 1. `which claude` / `which hermes` / `which cursor` / `which codex` / `which trae` / `which codebuddy` 哪个存在 → 那个客户端
> 2. 工具列表里有没有 `terminal()` / `run_terminal_cmd` 工具 → 大概率是 GUI 客户端（Hermes / Cursor / Cloud Code / Trae / CodeBuddy）
> 3. 工具列表里的 `mcp__amap__*` 等前缀都在 → 客户端已加载 MCP（CC / Hermes / Cursor / Codex 都有可能）
> 4. 都探测不到 → **直接问用户一次**："你用的是哪个 AI 客户端？Claude Code / Hermes / Cursor / Codex / Cloud Code / Trae / CodeBuddy？"
>
> **建议路径**：先用 `which` 命令探（3 秒完成），探不到再问用户。

### 7 个客户端命令映射表

> **AI 在执行任何 shell 命令前，先按本表翻译**。**不要硬编码 tool 数量或具体 tool 名字**——`mcp__amap__maps_direction_walking` 这种 AI 应该看自己工具列表里实际加载的（如 CHANGELOG v1.0.1「动态探查原则」所述）。本表只列**命令结构**。

| 操作 | Claude Code | Hermes | Cursor | Codex CLI | Cloud Code | Trae / CodeBuddy |
|------|------------|--------|--------|----------|-----------|------------------|
| **加 MCP server** | `claude mcp add  ` | `hermes mcp add  ` | 编辑 `~/.cursor/mcp.json` + Cmd+Shift+P Reload | `codex mcp add  ` | 编辑 `~/.cloudshell_cloudsdk_mcp.json` | IDE 内 MCP 设置面板 |
| **加 HTTP MCP** | `claude mcp add --transport http  ` | `hermes mcp add  --transport http --url ` | JSON `"type": "http"` + `"url": "..."` | `codex mcp add  --url ` | JSON `"httpUrl": "..."` | IDE 表单 |
| **列 MCP** | `claude mcp list` | `hermes mcp list` / `hermes mcp ls` | 看 `~/.cursor/mcp.json` 文件 | `codex mcp list` | 看配置 JSON | 看 IDE 设置面板 |
| **删 MCP** | `claude mcp remove ` | `hermes mcp remove ` / `hermes mcp rm ` | 编辑 `~/.cursor/mcp.json` 删条目 | `codex mcp remove ` | 编辑 JSON 删条目 | IDE 设置面板删 |
| **跑 shell** | 用户输入 `!cmd` 前缀 | AI 用 `terminal()` 工具 | AI 用 `terminal` / `run_terminal_cmd` 工具 | AI 自己跑 shell | AI 用 `terminal` 工具 | AI 用 IDE 终端工具 |
| **配置位置** | `~/.claude.json` | `~/.hermes/config.yaml` | `~/.cursor/mcp.json` | `~/.codex/config.toml` | `~/.cloudshell_cloudsdk_mcp.json` | IDE 内部 |
| **MCP 生效** | **必须**完全退出重开 | **自动**（下次启动）| Cmd+Shift+P → Reload | 项目级 config 自动 / 全局需重启 | **必须**重开会话 | **必须**重启 IDE |
| **客户端命令** | `claude` | `hermes` | `cursor` | `codex` | —（Cloud Shell）| `trae` / `codebuddy` |

### 给 AI 看的 7 客户端决策树

**Step 0 开头必做**（1-3 步搞定客户端识别）：

```
1. 跑探测命令（哪个返回非空就选哪个）:
   - !which claude   (CC)
   - !which hermes   (Hermes)
   - !which cursor   (Cursor)
   - !which codex    (Codex)
   - !which trae     (Trae)
   - !which codebuddy (CodeBuddy)
   备注：Cloud Code 通常在 Cloud Shell 终端里 / VS Code Cloud Code 扩展里

2. 看工具列表：
   - 有 terminal() / run_terminal_cmd → GUI 客户端（4 个候选）
   - 没 → CC / Codex CLI（命令行客户端）

3. 探测不到任何 → 直接问用户一次
```

**当且仅当探测到客户端 X**（X ∈ {CC, Hermes, Cursor, Codex, Cloud Code, Trae, CodeBuddy}）：

- ✅ 用 X 客户端的 `mcp add/list/remove` 命令（参见上表）
- ✅ 用 X 客户端对应的 shell 执行方式（`!cmd` / `terminal()` / `run_terminal_cmd` / IDE 终端）
- ✅ 写配置到 X 客户端的配置文件（`~/.claude.json` / `~/.hermes/config.yaml` / `~/.cursor/mcp.json` / `~/.codex/config.toml` / IDE 内部）
- ✅ 按 X 客户端的重启策略提醒用户
- ❌ **不要**把 CC 的 `claude mcp add` 用到 Hermes / Cursor / Codex（**命令不通用**）

**两套都不确定时**：
- 直接问用户一次（最多 1 个问题），确认后整份 skill 走对应分支

> **为什么不让 AI 在多个客户端用同一套命令**：CC / Hermes / Cursor / Codex / Trae / CodeBuddy 的 `mcp add` 语法**不通用**（subcommand 结构、flag 命名、配置位置、配置格式都不同），AI 强行混用会出现"看起来在跑实际不生效"的 silent failure，调试成本更高。
>
> **跨客户端统一的部分**（**AI 不用管的**）：
> - ✅ **MCP tool 名字**：所有客户端里 `mcp__amap__maps_direction_walking` 都叫这个——MCP 协议的设计
> - ✅ **MCP server 内部行为**：高德 MCP server 在 7 个客户端里跑出来的结果**完全一致**（同一份 npm 包，同一份代码）
> - ✅ **输出 JSON 结构**：MCP tool 名字跨客户端一致；路线类 MCP 常只返回 `duration`/`distance`，无结果时 REST 兜底（§2）
>
> **所以 v1.3.0 的真实路径渲染 / v1.2.0 的餐厅调研 / v1.1.0 的代码级验证 / 等等，**所有"AI 调 MCP tool"的部分都是跨客户端一致的**——**只有"装 MCP + 跑 shell + 重启"这三件事是客户端相关的**。

### 多客户端场景实战

**场景 A：用户在 Cursor 触发**

```
🟢 AI: 我跑探测命令… which cursor 返回 /usr/local/bin/cursor
      ├─ 客户端：Cursor
      ├─ 工具列表：有 terminal 工具（我直接跑 shell）
      └─ 配置位置：~/.cursor/mcp.json

      [编辑 ~/.cursor/mcp.json，加高德 MCP 条目]
      [Cmd+Shift+P → Reload Window（AI 不能做，必须用户）]
      🔴 AI: 请按 Cmd+Shift+P，输入 Reload Window，回车。
            完事告诉我「reload 好了」。

用户: reload 好了

🟢 AI: [tool: mcp__amap__maps_direction_walking origin=... destination=...]
      ✅ 通了。
```

**场景 B：用户在 Cloud Code（Cloud Shell 终端里）触发**

```
🟢 AI: 客户端是 Google Cloud Code（Cloud Shell 终端 / VS Code Cloud Code 扩展）
      配置位置：~/.cloudshell_cloudsdk_mcp.json

      [编辑 ~/.cloudshell_cloudsdk_mcp.json，加高德 MCP 条目]
      🔴 AI: Cloud Code 改完配置必须重开会话才能加载。
            请在 Cloud Shell / Cloud Code 扩展里开新会话。
            完事告诉我「新会话好了」。
```

**场景 C：用户在 Codex CLI 触发**

```
🟢 AI: which codex 返回 /usr/local/bin/codex → 客户端是 Codex CLI

      [tool: codex mcp add amap --url https://mcp.amap.com/mcp?key=... ]
      ✅ 项目级 config 自动加载（不需要重启）
      
      [tool: mcp__amap__maps_geo address=东京]
      ✅ 通了。
```

**场景 D：用户在 Trae / CodeBuddy 触发**

```
🟢 AI: which trae 返回 /usr/local/bin/trae → 客户端是 Trae IDE

      🔴 AI: Trae 的 MCP 装在 IDE 设置面板里，AI 改不了配置。
            请你打开 Trae → Settings → MCP → 加 server:
            - Name: amap
            - URL: https://mcp.amap.com/mcp?key=YOUR_KEY
            加完告诉我「加好了」。
      
      🔴 AI: 加完需要重启 Trae 加载 MCP。
            完全退出 Trae，重开。
            完事告诉我「重启好了」。
```

### ⚠️ 已知坑（v1.4.0 新增）

1. **Cursor 的 MCP 配置在 IDE 设置面板里改的不写盘**——必须编辑 `~/.cursor/mcp.json` 文件才持久化
2. **Cloud Code 浏览器端**（不是 VS Code 扩展）改完 `~/.cloudshell_cloudsdk_mcp.json` **必须重开会话**才生效
3. **Codex CLI 项目级 `mcp_servers` 用 TOML 格式**，全局用 `~/.codex/config.toml`——格式不同，**AI 跑 `codex mcp add` 是统一入口**，不需要手写 TOML
4. **Trae / CodeBuddy 的 MCP 配置不暴露在文件系统**——必须 IDE 操作
5. **`hermes mcp add` 实际可能需要 `--` 分隔符**（如 `hermes mcp add playwright -- npx @playwright/mcp@latest`）——AI 跑前用 `hermes mcp add --help` 确认
6. **CC 的 `--transport http` flag** 和 Hermes 的 `--transport http` flag **位置不同**（CC: `--transport http  `；Hermes: ` --transport http --url `）——按本表走对应命令

---

## 数据源 & MCP 依赖

> **v1.2.0 重构**：餐厅数据从"主推 opencli 深度档"改为"**高德 POI + 美团攻略 WebFetch + 小红书**"三件套，**零装零扫码**。opencli 降级为"深度档"（非要必吃榜 + 评价数才用）。
>
> **国内优先**：所有数据源都按"国内地点"优化选型与降级。

| 数据源 | 形态 | 用途 | 缺失降级 |
|--------|------|------|----------|
| **高德地图** | 官方 MCP `https://mcp.amap.com/mcp?key=YOUR_KEY` | POI 搜索、路线规划、地理编码、距离测量、天气、**POI 详情（评分/营业时间/类型/人均/坐标）** | 提示申请 Key，降级为通用知识 |
| **美团攻略** 🆕 | WebFetch `guide.meituan.com`（零装） | **国内 8 大热门城市**（沪/京/蓉/穗/深/杭/渝/汉）的**编辑过的好店清单**（数据来源 = 大众点评公开数据 + 媒体评测） | 高德 `text_search` 按菜系搜兜底 |
| **小红书** | Python skill `autoclaw-cc/xiaohongshu-skills`（`python scripts/cli.py ...`）| **Step 1.5 目的地攻略**（必去/避雷/分区）+ Round 3 店级氛围/排队软信号 | WebFetch `xiaohongshu.com` M 站 |
| **大众点评**（深度档）| OpenCLI + Chrome Browser Bridge 扩展（**可选，非必需**）| 必吃榜入选 + 真实评价数 + 排队实况 + 踩雷关键词 | 主轨方案已够用，**不需要装** |

> **小红书数据源（v1.0.2 唯一方案）**：用 `autoclaw-cc/xiaohongshu-skills`（Python CLI + Chrome 扩展）。详见 `references/setup-guide.md` §2 / `references/xhs-research.md`。
>
> **餐厅调研 v1.2.0 主推组合**：高德 POI 详情（坐标/营业/评分）+ 美团攻略（候选池）+ 小红书（软信号）= **零装零扫码**。详见 `references/dianping-research.md`（已重构） / `references/meituan-guide-research.md`（新增）。

详见 `references/amap-mcp-usage.md` / `xhs-research.md` / `dianping-research.md` / `meituan-guide-research.md`。

---

## 主流程（7 步 + 3 轮迭代 + 增量修改）

```
Step 0：环境自检 + 引导（每次启动必做）
  ↓
Step 1：抽硬约束（Re-ground + 一次性问关键信息）
  ↓
Step 1.5：小红书目的地攻略（必做，决策输入）← v2.3.0
  ↓
Step 2：清单分组 + 酒店候选（受 Step 1.5 约束）
  ↓
Step 3：【3 轮分阶段筛检】（v1.5.0 核心）
   Round 1 结构筛 → Round 2 时空筛 → Round 3 体验筛
   每轮筛不同维度 + validate.py --round N
  ↓
Step 4：确认餐饮（Round 3 已补则跳过重复调研）
  ↓
Step 5：补票务 / 跨城交通
  ↓
Step 6：写参考文档（结构化输出）
  ↓
Step 7：渲染 HTML（assets/template.html + demo 数据 schema）
  ↓
【任何时候】用户说"改..." → 走增量修改路径（见 references/multi-turn-protocol.md）
```

---

## Step 0：环境自检 + 引导（小白友好）

> **目标**：零基础用户触发 skill 后，能在 5 分钟内跑起来。

### 0.1 自动检测

每次启动都做（不写 state.json，每次重新检测以反映真实状态）。**先按「客户端适配层」确认客户端**，再用本节的多源探测逻辑。

| 检测项 | 怎么检（**客户端感知**） | 必需 |
|--------|--------|------|
| **客户端类型** | 见「客户端适配层」探测三选一 | 🔒 **必先做** |
| **Playwright MCP** | 工具列表里有 `mcp__playwright__*`？**或** 客户端配置里有 `playwright`（按客户端走对应命令探：`claude mcp list` / `hermes mcp list` / 看 `~/.cursor/mcp.json` / `codex mcp list` / 看 IDE 设置） | 🔒 **强制前置**（未装必须先装，详见 §0.3 情况 D） |
| **高德 MCP** | 工具列表里有 `mcp__amap__*`？**或** 客户端配置里有 `amap` server？**或** 环境变量 `AMAP_KEY` 非空？ | ✅ 必需 |
| **小红书 Skill** | `python ~/xhs-skill/scripts/cli.py check-login` 能跑通 | ⚠️ 推荐 |
| **大众点评**（深度档）| `which opencli` + Chrome 远程调试端口 9223 | 💡 可选（v1.2.0 起**默认不推荐装**）|

> **🔒 强制前置是什么意思**：Playwright MCP 未装时，**AI 不得进入 Step 1**。必须先引导用户装好（或用户显式说"降级 / 跳过"）才能继续。详见 §0.3 情况 D。
> 
> **为什么改"客户端感知"**：原版只检工具列表，Hermes 里 AI 看不到 CC 的 `mcp__*` 工具名（命名空间不同），单源检测在跨客户端会 false negative。多源 = 至少一个能命中就视为已就绪，更稳。

### 0.2 对话开头第一句话：自检结果展示

**完整格式（AI 自己探出来啥就写啥，**不要照抄下面的数字 / tool 名**）**：

> **🔍 探查方法（AI 必须自己跑）**：
> - **MCP tool 类**：看当前工具列表（系统自动注入），扫一遍 `mcp__*` 前缀工具；tool 数用**按客户端对应的命令**拿（CC: `claude mcp list` / Hermes: `hermes mcp list` / Cursor: 看 `~/.cursor/mcp.json` / Codex: `codex mcp list` / 其他: 看 IDE 设置）
> - **CLI 类**：用 `which ` / ` --version` / ` ` 试探
> - **小红书**：跑 `python ~/xhs-skill/scripts/cli.py check-login`，返回"已登录"即 OK
>
> **展示原则**：自检报告**只列 AI 实际探到的内容**——"13 个 tool" 这种数字、AI 报告"已就绪（可查 POI/路线/距离/天气）"这种功能列举，**都是 AI 跑出来才写的，不是文档里抄的**。

**模板**（AI 填实际值）：

```
🔍 环境自检（AI 探查）
├─ ✅/❌ ：（）
├─ ...
```

**示例**（仅供参考，AI 不得照抄）：

```
🔍 环境自检
├─ ✅ Playwright MCP：已就绪（按客户端命令探到 mcp__playwright__* 14 个 tool，**CC 走 `claude mcp list` / Hermes 走 `hermes mcp list` / Cursor 看 `~/.cursor/mcp.json` / Codex 走 `codex mcp list` / Trae-CodeBuddy 看 IDE 设置**）
├─ ✅ 高德地图 MCP：已就绪
├─ ✅ 小红书：已就绪（`python ~/xhs-skill/scripts/cli.py check-login` 返回"已登录"）
└─ ⏭️ 大众点评：未配置（v1.2.0 起**非必需**，主轨用"高德 POI + 美团攻略 WebFetch"）
```

**小红书识别**（**v1.0.2 起只有 B 方案**）：
- `python ~/xhs-skill/scripts/cli.py check-login` 能跑 → 走 **B 方案**（autoclaw-cc/xiaohongshu-skills）
- 跑不通 → 推装 B 方案，或降级为 WebFetch

**状态分支**（**不依赖任何具体 tool 名**，只看"探到了几个 mcp_*_ 前缀"）：

- **Playwright 不在**（其他有几个无所谓）：🔒 不进 Step 1。强制走 §0.3 情况 D（推装 Playwright）
- **Playwright 在 + 至少高德也在**：直接进 Step 1，一句话带过自检
- **Playwright 在 + 高德缺**：AI 主动推装高德（必需项）
- **Playwright 在 + 仅高德（小红书/点评都缺）**：告知影响 + 提供「先配还是先用 demo」二选一

### 0.3 缺失时的引导流程

**情况 A：完全没配过（小白的第一次）**

**Re-ground**："travel-planner Step 0，环境自检。先把数据源配好才能查 POI / 路线。"

**Simplify**："5 分钟搞定，主要是注册一个高德账号拿 Key，复制一行命令就行。"

**Recommend**："我带你一步一步走，配完就能查东京的任意景点。"

**Options**：
- A. 跟着我一步步配（5 分钟）
- B. 先用 demo 演示（看成都示例，先不配）
- C. 我已经配过了

**根据选择**：

- 选 A → AI **主导**走 `references/setup-guide.md` 的"高德（必需）+ 小红书（推荐，B 方案唯一）+ 大众点评（v1.2.0 起**非必需**）"流程，前提是用户已装 [Playwright MCP](https://github.com/microsoft/playwright-mcp)（**按客户端走对应安装命令**：CC `claude mcp add playwright npx @playwright/mcp@latest` / Hermes `hermes mcp install playwright` / Cursor 编辑 `~/.cursor/mcp.json` / Codex `codex mcp add playwright -- npx @playwright/mcp@latest` / Trae-CodeBuddy IDE 设置面板）。整个过程用户只介入 2-3 次（收短信、扫码、**按客户端重启方式让 MCP 生效**）。**大众点评深度档只在用户明确要求"必吃榜 + 评价数"时才装**
- 选 B → 渲染 `examples/chengdu-2026-09-18.json`（默认国内示例）让用户看效果，结尾再问"效果 OK 吗？OK 的话花 5 分钟配一下，以后就是做自己的行程了"
- 选 C → 重新检测，确认就绪后进 Step 1

> **没有 Playwright MCP 的退化**：退到"半自动"模式，shell 步骤 AI 跑，浏览器步骤给命令用户手点（见 [references/multi-turn-protocol.md](references/multi-turn-protocol.md) §场景六·退路）。

**情况 B：已有部分 MCP，只缺某一项**

直接触发对应章节的引导，跳过已配置的。

**情况 C：用户中途说"不配了 / 跳过"**

尊重选择，明确告知降级影响（哪类数据不准），继续走流程。后续可在 Step 1 末再次询问"要不要回头配一下"。

**情况 D：Playwright MCP 未装（🔒 强制前置，必须先处理）**

> **关键规则**：Playwright MCP 是 AI 主导配置的唯一入口。**未装时 AI 不得自作主张降级、不得直接进 Step 1**。必须先推荐安装，等用户做出选择（装 / 显式降级）才能继续。

**Re-ground**："travel-planner Step 0，环境自检。Playwright MCP 没装，整个配置流程都得你来手动开浏览器。我强烈推荐先装，1 分钟换后面全自动化。"

**Simplify**："装一个 Microsoft 官方的 Playwright MCP 就行。**先告诉我你在哪个客户端**，我给你对应命令："

**按客户端走对应命令**（**AI 跑前必须先按 §客户端适配层 探测到客户端 X，再选 X 对应的命令**）：

```bash
# Claude Code CLI（用户输入 ! 让 AI 跑，或 AI 用 terminal tool）
!claude mcp add playwright npx @playwright/mcp@latest

# Hermes desktop GUI（AI 用 terminal() 工具跑）
hermes mcp install playwright   # 优先用 catalog 方式（一键）
# 或 catalog 里没有时：
hermes mcp add playwright -- npx @playwright/mcp@latest

# Cursor（AI 编辑 ~/.cursor/mcp.json，然后引导用户 Cmd+Shift+P Reload Window）
# 编辑 mcpServers.playwright = { "command": "npx", "args": ["@playwright/mcp@latest"] }

# Codex CLI（AI 自己跑）
codex mcp add playwright -- npx @playwright/mcp@latest

# Cloud Code（AI 编辑 ~/.cloudshell_cloudsdk_mcp.json，引导用户重开会话）
# 编辑 mcpServers.playwright = { "command": "npx", "args": ["@playwright/mcp@latest"] }

# Trae / CodeBuddy（AI 改不了配置，引导用户 IDE 内加 + 重启 IDE）
```

**Recomm

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [SquirrelSong5](https://github.com/SquirrelSong5)
- **Source:** [SquirrelSong5/travel-planner-skill](https://github.com/SquirrelSong5/travel-planner-skill)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-squirrelsong5-travel-planner-skill-travel-planner-skill
- Seller: https://agentstack.voostack.com/s/squirrelsong5
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
