dsh-roam-planner:在 DeepSeek Harness 里用对话做行程、地图对照与采纳

前言

在 DSH 里让智能体帮你规划旅行,常见问题是:计划写在对话里,地点和路线难以对照;模型改一版就可能覆盖你已经认可的安排。若再要查火车票或小红书攻略,往往还要另开工具或手写脚本挂 MCP。

dsh-roam-planner(维护者 AntonyLang,分类为客户端插件)把行程规划做成 DSH 内的工作区:侧边栏地图面板、会话级行程存储,以及一组 roam_* 工具;可选通过配置挂载外部 MCP sidecar(如 12306、小红书)。下面介绍它的定位、安装方式与典型用法。事实依据见 GitHub 仓库 README 与 SkillHub 目录页。

这是什么

插件全名 dsh-roam-planner(npm 包名同称,当前版本 0.2.3,MIT 许可证)。一句话定位:在 DeepSeek Harness 中通过对话生成旅行计划,在地图面板上查看,并在你确认后再正式采纳。

核心设计是 草稿 → 候选 → 采纳:智能体只改草稿;roam_save_candidate 冻结为待审候选;只有显式 Adopt(roam_adopt)才会提交,避免幻觉式修改覆盖已接受的行程。

运行要求(engines.dsh):DeepSeek Harness ^0.2.1-rc.2。无需 Docker、数据库或额外 API Key 即可使用基础能力(OpenStreetMap + OSRM 地理编码与路线)。

核心功能

客户端与宿主

安装并重启 DSH 后,宿主侧加载 roam_* 工具与 /roam/api 路由;侧边栏出现 Roam Planner 图标,智能体获得行程相关工具。面板会周期性拉取状态,跟随智能体编辑进度。

行程工具(节选)

工具 作用
roam_get_snapshot 读取当前会话行程(无则创建空草稿)
roam_prepare_draft 改标题/天数与停靠点(停靠点仅需名称,由宿主地理编码)
roam_save_candidate 冻结草稿供审阅
roam_adopt 提交候选为正式行程
roam_fill_routes 补全缺失路段几何与时长(Amap 或 OSRM)
roam_forecast 各日首站天气(只读)
roam_search_places 关键词搜真实地点(需 Amap Key)
roam_mcp_servers / roam_mcp_tools / roam_mcp_call 访问已配置的 MCP sidecar

地图与地理

默认底图与地理编码可在 cordis.patch.yml 插件行的 config 中配置(见下文)。无 Key 时可用 Nominatim + OSRM;国内地址建议在 Settings → Roam Planner → Amap Web-service key(非 JS API Key)填写高德 Web 服务 Key,写入宿主凭证库 ROAM_PLANNER_AMAP_KEY,下次查询生效,无需重启。

数据存放

行程默认落在 DSH 存储域 $DSH_HOME/storages/roam_planner.json;存储域不可用时回退到 <dataDir>/.roam/store.json。Amap Key 不进行程 JSON;底图选择为页面本地偏好。

可选 MCP sidecar

火车票、小红书笔记未内置。插件支持通过配置以 stdio 或 streamable HTTP 挂载 MCP,首次调用时再启动进程。仓库提供 server/railway-mcp.js 作为 12306 第三方 sidecar 的代理(参数含 from_station、to_station、date、time_from/time_to、station、limit 等)。12306 相关项目声明仅限非商业使用;小红书 MCP 需一次性登录并在 :18060 提供 HTTP。具体 YAML 示例见 README「External MCP sidecars」。

安装与启用

在 DSH 环境中执行(将 <this package or directory> 换成本地包路径或目录):

plugin_manager install_bundle <this package or directory>

然后 重启 DSH:宿主加载工具与路由后,侧边栏可见 Roam Planner,智能体可用 roam_* 工具。

可选配置项(插件行 config,摘自 README):

Key 默认 含义
basemapId osm 首次使用的底图
basemaps null 自定义底图目录;null 用内置
geocoder nominatim nominatim、amap 或 off
amapKey null 部署级 Key;Settings 中保存的优先
defaultCity null 拼接到地名后,如 苏州
dataDir null JSON 回退存储目录

典型用法

经过上面的安装与重启,可按 README「First run」复现:

  1. 点击侧边栏 Roam Planner;空面板会提示向智能体要一份计划。
  2. 在任意会话中发送类似需求,例如:

Plan two relaxed days in Suzhou for me and my parents

  1. 智能体通常会调用 roam_get_snapshot、roam_prepare_draft(仅地名)和 roam_fill_routes;面板数秒内跟进显示。
  2. 调用 roam_save_candidate 后会出现绿色 Adopt plan;确认后采纳。
  3. 采纳后再编辑会重新打开草稿,面板可对照已采纳版本的差异。

适用场景与注意

适合谁:已在用 DSH ^0.2.1-rc.2、希望用自然语言起草多日行程、在地图上看站点与路线、并用手动采纳锁住终稿的开发者或自用用户;需要火车票或小红书时可自行配置 MCP,接受相应 sidecar 的安装与许可约束。

权限与安全:插件以当前 DSH 进程权限运行,会访问网络做地理编码、路线与可选 MCP;安装前请阅读仓库源码、LICENSE 与 PROVENANCE.md。社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。

排障(摘自 README):面板提示宿主路由不可用 → 宿主未激活,重启 DSH;有日程但地图空白 → 底图瓦片加载失败;路线为直线虚线 → 调用 roam_fill_routes;天气芯片缺失 → 对应日期尚无预报数据。

结尾

dsh-roam-planner 把「对话写行程、地图对照、显式采纳」收进 DSH 客户端工作区,并保留 MCP 扩展火车票与攻略检索的空间。进一步了解可访问目录页 https://www.skillhub.cn/plugins/AntonyLang/dsh-roam-planner 与 GitHub https://github.com/AntonyLang/dsh-roam-planner 。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜