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计划已提前计算好,切换即时

Related MCP server: GemmaJnana

快速开始

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。

Related MCP Connectors

Related MCP Servers