Skip to main content
Glama

🧭 指南针 — 俄罗斯境内旅行的谈判式旅行代理

一个代理,叶卡捷琳堡的一个家庭用一句话就能向它描述需求:

“想去海边,三人共45,000预算,带小孩,不要长时间转机”

——而它能自动发现预算与转机之间的矛盾,直接在时间线上展示岔路口,询问用户愿意牺牲什么,记住用户的回答,并为路线中每个脆弱的环节准备好B计划

该项目为图图MCP AI黑客马拉松而建,时间为2026年8月18日至21日。基于 Tutu MCP 运行(涵盖飞机、火车、电气火车、巴士、酒店)。

岔路口:预算与“不坐火车”之间的权衡——代理询问用户愿意牺牲什么

启动画面:显示到邻近城市价格的地图

点击城市:最近的航班和价格,无需消耗任何LLM令牌

环节故障:“之前 → 之后”,B计划立即应用

同一个代理作为MCP应用:Claude聊天中的交互式小部件

从左到右:启动探索地图(点击城市不消耗令牌——仅使用Tutu MCP);城市卡片,显示航班和±天数;故障后切换到B计划;MCP小部件(SEP-1865)。

这与“又一个机票搜索”有何不同

普通搜索

指南针

有十个字段的表单

一句自然语言描述

“未找到任何结果”

“预算转机时间 < 1小时同时满足不了——您愿意牺牲什么?”

按公式计算的最佳方案

诚实的权衡岔路口,并记住您的选择

票售完了——从头再来

B计划已提前计算好,切换即时

快速开始

git clone https://github.com/svyatrunov/tutu-compass.git && cd tutu-compass
npm install
cp deploy/.env.example apps/server/.env

apps/server/.env 中填写 OPENROUTER_API_KEY 并运行:

npm run dev

前端 — http://localhost:5173,API — http://localhost:8787(Vite代理 /api)。

无需互联网和密钥的演示——基于录制的固定数据:

DEMO_MODE=replay npm run dev

完整生产环境在Docker中:

cd deploy && cp .env.example .env && docker compose up -d --build

指南针作为MCP服务器

同一个代理可作为MCP工具 plan_trip 使用——一次调用即可替代手动编排16个原始Tutu工具。端点:http://localhost:8787/mcp,在 npm run dev 之后(Streamable HTTP;在您自己的服务器上 — https://<域名>/mcp)。快速查看小部件而无需MCP主机:http://localhost:8787/api/dev/widget-preview。在支持MCP应用的主机(Claude、Claude Desktop、VS Code Copilot、Goose)中,结果会以交互式时间线的形式直接渲染在聊天中(SEP-1865);其他MCP客户端则接收文本 + 结构化JSON。对话记忆通过工具参数中的 sessionId 实现。Web版本是主要渠道,不依赖MCP渠道:两者都运行在同一个进程中,基于同一个 agent/* 核心。

渠道检查:npm run smoke:mcpapp 针对已启动的服务器运行。

有用的命令

命令

作用

npm run mcp:discover

获取Tutu工具的实际规格 → docs/MCP-NOTES.md

npm run fixtures:record

将MCP响应记录到 fixtures/recorded 用于回放

npm test

冲突和B计划的单元测试 + MCP模式的契约测试

npm run smoke

针对已启动的服务器运行演示场景的端到端测试

npm run lint / npm run typecheck

ESLint / TypeScript严格模式

文档

文档

用途

docs/AGENT-BRIEF.md

从这里开始。 自包含的评估参考:流程、技术栈、基准、黑客马拉松赛道自我评估

docs/SYSTEM-MAP.md

系统地图:16个Tutu工具 → 我们的模块 → 渠道 + 对评审问题的快速回答

docs/ROADMAP.md

截至代码冻结的工作计划,按“每小时得分”排序

docs/MCP-FEEDBACK.md

对Tutu MCP规范的12条结构化建议——附可复现的发现

docs/ARCHITECTURE.md

架构图、代理循环、冲突检测

docs/ASSUMPTIONS.md

诚实的清单:哪些来自MCP,哪些是模拟

docs/MCP-NOTES.md

Tutu MCP的实际(非声称的)规范

docs/EVALS.md

模型策略和基准发现日志

docs/PITCH.md

演讲要点和演讲时间安排

按黑客马拉松标准查看代码

标准

查看位置

功能深度

agent/orchestrator.ts — 代理循环

创新性

agent/conflicts.ts — 冲突作为可证明的事实,无需任何LLM调用

UX/UI

components/Timeline — 冲突节点和B计划虚线

稳定性

mcp/client.ts — 缓存、重试、固定数据回放

架构

docs/ARCHITECTURE.md

诚实性

docs/ASSUMPTIONS.md — 哪些来自MCP,哪些是模拟

代码质量

tsconfig.base.json(严格模式 + noUncheckedIndexedAccess)、ESLint、CI

仓库规则

  • 秘密仅通过环境变量传递。.env.gitignore 中,.env.example 在仓库中。

  • LLM 绝不生成路线数据:价格、航班和链接仅来自MCP,模型只根据 id 从中选择。这是对真实数据之上幻觉的防护。

许可证

MIT — 参见 LICENSE

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • TravelMind: 8 MCP tools for travel (12306 trains, flights, hotels, geocode, planning, policy).

  • whentofly: flexible-date economy/business flight search + price-level context for AI agents

  • AI marketplace — flights, tours, activities, transport & more via MCP. No auth required.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/svyatrunov/tutu-compass'

If you have feedback or need assistance with the MCP directory API, please join our Discord server