zhouwei713/dsh-daily-kit--packages-location ↗★ 0
dsh-daily-location
Weather, place search, opening hours and route distance (Open-Meteo + OpenStreetMap, key-free, read-only) for the DeepSeek Harness (developer preview)
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:zhouwei713/dsh-daily-kit#03d93caab5b846c990da8bb201d52881756ed483&path:packages/location说明文档
阅读完整 README ↗安装与配置
# 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-Fr、Mo,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 后请手动验证:
- 在 dsh 配置中启用本插件,确认启动日志出现
location: loaded。 - 调用
weather_get(location: "北京"):预期返回当前天气文本、逐日预报列表,且输出含source: api.open-meteo.com与fetchedAt。 - 调用
place_search(query: "咖啡馆 上海"):预期返回结构化地点列表,含坐标与osmType/osmId。 - 用第 3 步某个结果的
osmType/osmId调用place_hours:预期返回opening_hours原文;常见规则展开为每周时段并给出openNow,复杂规则标记parsed: false。 - 调用
route_distance(两对坐标,profile: "walking"):预期返回公里数与预计时长。 - 断网重试一次
weather_get:预期报出可读的网络错误,而不是未捕获异常。
许可
MIT