zhouwei713/dsh-daily-kit--packages-location0

dsh-daily-location

Weather, place search, opening hours and route distance (Open-Meteo + OpenStreetMap, key-free, read-only) for the DeepSeek Harness (developer preview)

包名
dsh-daily-location
版本
0.1.0
许可证
MIT
最近更新
2026年8月16日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:zhouwei713/dsh-daily-kit#03d93caab5b846c990da8bb201d52881756ed483&path:packages/location

安装与配置


# dsh 配置示例(以下均为默认值,可不写)
- id: location
  name: dsh-daily-location
  config:
    enabled: true
    weatherProvider: open-meteo   # v1 唯一实现
    placesProvider: osm           # v1 唯一实现
    language: zh                  # 地理编码/搜索的语言提示
    defaultForecastDays: 7        # weather_get 默认预报天数(上限 16)
    defaultMaxResults: 10         # place_search 默认条数
    timeoutMs: 10000              # 单次请求超时
    retry: true                   # 网络错误 / 429 / 5xx 退避重试一次
    nominatim:
      userAgent: dsh-daily-location/0.1 (DeepSeek Harness plugin; read-only)
      minIntervalMs: 1000         # Nominatim 请求最小间隔(使用礼仪:≤1 次/秒)

权限透明

本插件对宿主环境的影响面,逐条交代清楚:

  • 读写位置:无。不写任何本地文件。
  • 网络域名(全部 HTTPS、GET/POST 只读查询,无密钥):
    • geocoding-api.open-meteo.com(地名 → 坐标)
    • api.open-meteo.com(天气实况与预报)
    • nominatim.openstreetmap.org(地点搜索;按 OSM 使用礼仪发送可识别的 User-Agent,并内置 ≥1 秒的最小请求间隔节流)
    • overpass-api.de(POI 标签,如 opening_hours
    • router.project-osrm.org(路线距离/时长)
  • 凭证:不持有任何凭证,也不读取任何环境变量。
  • 确认点:无(全部为只读查询)。
  • 日志内容:仅启动时一行加载摘要(provider、节流间隔),不含任何查询内容。

已知限制

  • 数据覆盖:OpenStreetMap 的 POI 与营业时间数据因地区而异,中文区域覆盖不如欧美完善;place_hours 查不到数据时如实返回 found: false
  • 中文地址解析:Nominatim 对中文关键词的解析质量参差,建议关键词带上城市/区域名(如「咖啡馆 上海」),或用 nearLatitude/nearLongitude 偏置。
  • opening_hours 解析边界:内置轻量解析器只覆盖常见形态——24/7、星期选择器(Mo-FrMo,We,Fr)、时段(09:00-18:00,含跨零点 22:00-02:00)、多规则 ;、关闭规则 Su off不支持公共/学校假期(PH/SH)、周/月份选择器、日出日落等事件时间、开放结束 + 等高级语法;遇到这些规则不猜测,返回原文并标记 parsed: false + 原因。
  • 「是否营业中」的时区:评估按你提供的 at(当地墙钟时间)或本机当前时间进行;插件不联网解析地点所在时区,跨时区查询时请显式传 at
  • OSRM 公共实例是演示服务,有速率限制,不提供 SLA;结果仅供参考,不提供逐向导航(v1 只要了距离/时长摘要)。
  • 免密钥服务都有速率礼仪;请勿高频批量调用。本插件已对 Nominatim 强制节流,其余服务请自律。

手动验证

本仓库的 CI 只覆盖类型检查与纯函数单测(fetch 注入替身,零外网)。接入真实 dsh 后请手动验证:

  1. 在 dsh 配置中启用本插件,确认启动日志出现 location: loaded
  2. 调用 weather_getlocation: "北京"):预期返回当前天气文本、逐日预报列表,且输出含 source: api.open-meteo.comfetchedAt
  3. 调用 place_searchquery: "咖啡馆 上海"):预期返回结构化地点列表,含坐标与 osmType/osmId
  4. 用第 3 步某个结果的 osmType/osmId 调用 place_hours:预期返回 opening_hours 原文;常见规则展开为每周时段并给出 openNow,复杂规则标记 parsed: false
  5. 调用 route_distance(两对坐标,profile: "walking"):预期返回公里数与预计时长。
  6. 断网重试一次 weather_get:预期报出可读的网络错误,而不是未捕获异常。

许可

MIT