Workflow & Automation

TravelPlanner

AusertDream/TravelPlanner · ★ 3

AusertDream

旅行规划师:DeepSeek Harness (DSH) 的旅行规划 agent——实时查高铁/机票/酒店与真实路线,交付单文件 HTML 路书

License
MIT
Added
2026-10-30
Maintenance
active
Install kind
github
npm
dsh-travel-planner
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-10-30T09:38:46.032Z
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add 'github:AusertDream/TravelPlanner#b13bdae368f760b50be79cd5c609b27269e373a8'

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. What it is
  2. 🎬 Video
  3. Why not just ask a chatbot
  4. Gallery
  5. Quick start
  6. Option 1: DSH desktop "Add plugin" (recommended)
  7. Option 2: the plugin market
  8. Option 3: clone and run the installer
  9. API keys
  10. The skills work on their own
  11. Ground rules
  12. Compatibility
  13. DeepSeek, dressed for the trip
  14. License

What it is

TravelPlanner (旅行规划助手, "trip-planning assistant") is a Chinese-language trip-planning agent preset for DeepSeek Harness (DSH), built for trips within mainland China.

Tell it "3 days in Chengdu from Shanghai over the National Day holiday, 2 people, ¥6,000". It queries live data — 12306 train availability, flight and hotel prices from Fliggy and Tuniu, real transit routes from Amap — checks closing days, ticket-release windows and the weather, then hands you a single HTML file that works offline: a day-by-day timeline, draggable maps with real routes, three hotel price tiers, an itemized budget and navigation links for every stop.

[!IMPORTANT] It plans and looks things up. It never books or pays for anything. Every price is a reference price at query time.

🎬 Video

Why not just ask a chatbot

Plain chat TravelPlanner
Trains, fares, room rates From memory, often stale or invented Queried live from 12306 / Fliggy / Tuniu, with source and query date
Getting around "About 30 minutes by metro" Real Amap routes: which lines, transfers, minutes, fare
Closures, reservations, last trains Often missed Hard constraints first (closing days, ticket release, ID-capped entry, last cable car), then the itinerary
Where to stay A vague district Chosen by where your days actually go; three tiers, always including whole rooms under ¥200 and under ¥400, with room photos
Deliverable A wall of chat text One HTML file: images inlined, mobile-friendly, works offline
Quality check You find the bugs A delivery gate: static checks, layout checks at desktop and phone widths, and a screenshot review

Full example: 👉 open the Chengdu 3-day itinerary online (works on phones; the online copy uses static maps). The source file is examples/成都3天2晚路书.html; download it to view offline.

Quick start

Prerequisites: Node.js ≥ 22, Python 3, Git, Chrome or Edge. The data-source CLIs (Fliggy, Amap, Tuniu) can wait: on its first run the agent tells you what is missing and can install it for you if you agree.

  1. Sidebar Plugins → Add plugin, paste the repository URL and click Install:

    https://github.com/AusertDream/TravelPlanner
    
  2. Quit DSH completely and reopen it (right-click the tray icon → Quit; closing the window is not enough). On first start the plugin copies its tool scripts and skills into ~/.dsh.

  3. Start a new session, pick the 旅行规划助手 mode and describe your trip.

Option 2: the plugin market

It has been submitted to and is under review (). Once it is listed, you can search for "TravelPlanner" in the dsh-market plugin market (Settings → Plugin Market) and install it in one click. Restart DSH afterwards. Until then, Option 1 installs exactly the same thing.

Option 3: clone and run the installer

npm install -g @fly-ai/flyai-cli @amap-lbs/amap-gui tuniu-cli
python -m pip install pillow

git clone https://github.com/AusertDream/TravelPlanner.git
cd TravelPlanner
node scripts/install.mjs

The installer sets up the tool scripts, the skills and the 12306 MCP server, registers the repository as a DSH bundle, and finishes with an environment check. Options, upgrades, uninstalling and troubleshooting: docs/INSTALL.md (Chinese).

API keys

All keys live in one file, ~/.dsh/preset-assets/travel-planner/.env, created on first install. Every key is free to apply for; step-by-step guide in docs/KEYS.md (Chinese).

Key For Without it
AMAP_KEY + AMAP_SECURITY_KEY Required Amap POIs, in-city routes, real routes on the map No coordinates or in-city transit
FLYAI_API_KEY Required Live Fliggy flight, hotel and ticket prices "Trial mode": hotel prices are masked
GOOGLE_MAPS_API_KEY Optional Interactive Google Maps inside the roadbook Falls back to keyless embed / Amap tiles / static image
UNSPLASH_ACCESS_KEY Optional Photos Falls back to Wikimedia (no key)
TUNIU_API_KEY Optional Tuniu as a second source Usually not needed; use tuniu auth login instead

Changes take effect as soon as you save; no restart needed. Check anytime with:

node ~/.dsh/preset-assets/travel-planner/doctor.mjs

The skills work on their own

The planning method, transport, hotels, maps and roadbook rules are standalone skills in the standard SKILL.md format. Install them for other DSH agents, or for Claude Code and other agents that read skills:

node scripts/install.mjs --skills-only                                # all DSH agents (~/.dsh/skills)
node scripts/install.mjs --skills-only --skills-dir ~/.agents/skills  # shared agents directory
node scripts/install.mjs --skills-only --skills-dir ~/.claude/skills  # Claude Code
Skill Covers
travel-planning Orchestrator: principles, intake, itinerary skeleton, day planning, self-review; tells the agent which module to load at each step
travel-constraints Hard constraints: closing days, reservations, capped entry, timed tickets, last departures, weather windows, altitude
travel-transport Plane vs. train by door-to-door time; every in-city leg
travel-hotels Location, three price tiers, room photos
travel-maps The map-widget.py component, real Amap routes
travel-roadbook Page skeleton, sourcing, charts, the delivery gate
train-booking · flyai-cli · amap-cli-skill How to use 12306 / Fliggy / Amap, and the pitfalls found in testing

Ground rules

  • No booking or payment, no submitting ID details, no confirming prices on your behalf.
  • No made-up data: times, prices and opening hours come from live queries and cite their source.
  • No scraping Xiaohongshu: paste the note text or a screenshot instead.
  • Keys live only in .env. The one exception is the Google Maps key, which is embedded in the roadbook HTML because the browser needs it; restrict it as described in docs/KEYS.md.

Compatibility

Status
DeepSeek Harness 0.2.0-rc.2 desktop, tested
OS Tested on Windows; macOS / Linux paths are handled but not tested end to end
Runtime Node.js ≥ 22, Python 3 + Pillow, Chrome or Edge
Destinations Mainland China first; all times in Beijing time

DeepSeek, dressed for the trip

The guide in the video is DeepSeek in travel gear: a straw hat, a camera, a little whale crossbody bag, and the tail comes along too. It is fan art of the whale that Chinese users affectionately call 「大肥鱼」 ("big fat fish"). The three-view lives in photos/ and the promo video's build scripts and art in video-src/.

License

MIT © Tianyi Jiang. Third-party components and services: NOTICE.md.