旅行规划 Skill 套件系统设计
旅行规划 Skill 套件系统设计
核心命题:把”旅行规划”拆成五个高内聚低耦合的 Skill 家族(discover / evaluate / macro / structure / qa),共享一个父级 trip-father 提供的 SABCD± 评级体系——既支持广度筛选(生成性)与深度判断(裁定性)的认知模式分离,又用全局参照系(不是逐目的地本地化)保证评级在不同对话与上下文间的一致性。
一、五个 Skill 的家族分工
| Skill | 认知模式 | 输入 | 输出 |
|---|---|---|---|
| trip-discover | 生成性(广度) | 一个目的地 / 用户画像 | 分类候选清单 + 时间估计 + 复杂度信号 |
| trip-evaluate | 裁定性(深度) | 一个或多个具体项 | 含理由的等级判决 + 机会成本比较 |
| trip-macro | 宏观规划 | 多城市 / 长时段 | 路线、大交通、季节约束、城市价值、重大项目优先级、总预算 |
| trip-structure | 微观结构化 | 已筛选项 + 时间窗 | 日程化的可执行行程 |
| trip-qa | 整体性 QA | 已成型的方案 | 路线合理性、注意事项、价值判断验证(如某地”原住民人类学价值”是否因士绅化失效) |
| trip-father | 父级共享 | — | SABCD± 评级体系的统一定义 |
二、为什么 discover 与 evaluate 不能合并
两者认知模式根本不同:
- discover 是生成性的:扩展选项空间,把目的地的可能性铺开。需要 surface non-obvious 项,而不是 regurgitate top-10 列表。
- evaluate 是裁定性的:收缩选项空间,做出 verdict。考虑机会成本、替代方案、时机。要敢于诚实指出 overrated 的东西。
Discover 自身需要内置的轻量评估来排序与过滤,evaluate 做的是重量级调查——web 搜索近期评价、检查当前条件、比较替代方案、计算”去 X 而不去 Y”的损失。Discover 扩展空间,evaluate 收缩并做判断。两者通过结构化清单作为输入输出接口完成自然交接。
三、Profile 冗余问题:架构层澄清
Rick 的提问:旅行者画像是否需要在每个 Skill 里冗余设计?
机制层判断:不需要。
- Skills 不是独立 agent,而是 Claude 在同一 context window 中读取并遵循的指令。
- userMemories 是 system prompt 的一部分,对 Claude 始终可见。
- 当 Skill 被触发,Claude 读取 SKILL.md 只是把内容追加进当前工作上下文。
因此,Profile 不需要冗余嵌入每个 SKILL.md。但有一个例外考虑:当 Skill 描述需要在不被触发时就让 Claude 看到(用于 routing 决策),则相关 Profile 触发条件需要提及。
参考的反例:overlive-150 在 SKILL.md 中嵌入了 user profile——这是用户主动选择把 profile 局部化,但不是机制必需。
四、SABCD± 评级体系(trip-father)
最难的设计问题:评级如何在不同对话/上下文中保持可比,又不沦为机械公式失去 nuance?
全局参照系而非本地化
评级相对于全球旅行体验集合,不是相对于当前目的地:
- S:globally exceptional,会让你为它重构计划
- A:强烈值得去,任何行程的高光
- B:稳健,时间允许则纳入
- C:可替换,跳过无 FOMO
- D:除非利基兴趣匹配,否则跳过
± 提供 15 级分辨率。
校准锚点
不硬编码示例,让系统在 Rick 评估的具体目的地累积过程中自建锚点——这些成为未来评级的参考点。这避免框架死板,但要求 Rick 自己的评级具备最小一致性。
多类型价值的灵活把握
不同类型经验(自然奇观、政治史址、田野观察、人类学接触)的 S-tier 含义不同。评级中需要附带价值类型标签,避免跨类型直接比较。例如某地的”原住民人类学观察价值”是一个独立维度,与”自然震撼”并列而非压缩到同一标度上。
五、evaluate 的”主动拉同类对比”
Evaluate 不应只回答”这个值得吗”,而应主动 pull 同类型项加入对比,提供更优体感与视角:
- 输入 Bahía Solano → 识别为”remote Pacific coast biodiversity / Afro-Colombian culture”类别 → 自动浮现 Nuquí、Isla Gorgona,甚至跨国非太平洋的相似类别。
- 多项比较是默认行为,不是可选项。
六、trip-qa 的角色与使命
trip-structure 产出大版本方案后,trip-qa 提示用户是否触发,覆盖:
- 路线合理性:交通时间、转场成本、单日强度
- 注意事项补充:开门时间、淡旺季、天气、安全
- 价值判断验证:之前 evaluate 给出的判断是否因外部变化失效(士绅化、政策变更、季节关闭、近期事件)
- 输出格式规范化与资源附录的一致性
trip-qa 是审计角色,不是规划角色——它对 structure 的产物做后置验证,而不是参与生成。
七、状态管理:行程作为可变文档
Rick 的计划经常变动,需要高效维护最新行程。设计目标:
- 行程是结构化文档而非自由文本
- discover/evaluate/structure 的产物可叠加 patch 而非整体重写
- macro/structure 之间有明确的版本边界——macro 改动触发 structure 重排
- qa 验证基于最新版本而非历史快照
[!quote] Rick 的关键介入 我们一起来设计一组行程规划 Skill。我们先开放讨论、发散、收敛、完善想法,再开始执行。
[!quote] Rick 的关键介入
- 旅行者画像是否内嵌冗余:由你来调研 Claude 机制,评估、决策是否需要冗余设计,给出判断的充分逻辑。
- skill 3 和 skill 5 不应该合并。但 skill 5 的定位需要更改,不是单纯的路线规划,而是宏观城市间的整体性安排,包含路线规划、大交通选择,季节约束,城市整体的价值判断,大项目/重要事件的价值判断(比如百内徒步)、优先级排布,整体预算估计等内容。改为 trip-mac
- skill 4 独立,但定位需要扩充为整体性 QA 角色,在已经包含的内容基础上,新增路线合理性分析、补充注意事项、价值判断验证(比如,前面判断某个地点有”原住民人类学观察价值”,但实际上由于该地点的士绅化,观察价值已经大大减弱。由 skill 3 行程编排产出大版本方案,提示用户是否触发。
- skill 4 内嵌输出格式,并 append 资源,指导统一格式。
[!quote] Rick 的关键介入 两个 Skill 需要共享同一套量化评价标准,用 SABCD +- 分级来实现,思考如何实现在不同的区域、不同的对话、不同的上下文中实现评价标准的尽量一致(不需要完全死板一致)。同时避免过拟合、陷入死板框架、丧失对不同类型价值(比如自然与人文、田野观察等)的灵活把握,以及对用户多样化兴趣的把握。
(Rick 的设计推进节奏:发散→收敛→明确指令→机制核查。第二轮关键介入显示典型的 PM 风格——既给出具体修改(重命名、定位调整),也指派架构调研任务(Profile 冗余)。第三轮关键介入展示对评级系统设计张力的精确表达:“一致但不死板、灵活但不丢类型”。)
关联节点
- AI PM 知识图谱框架设计 — 同源 Skill / Agent 系统设计思路
- 〔私人记录〕 — 同源 Skill 概念探讨
- 〔私人记录〕 — 同源对话备忘
- Skill 系统架构、SABCD± 评级体系、trip-father — 候选新建