DeepSeek Harness plugin

dsh-qweather

DSH 和风天气插件:侧边栏天气组件、LLM 天气查询工具、对话内交互式天气卡片

Jump to install

Source facts

Repository
youngforblbl/dsh-qweather
Latest update
Aug 17, 2026
Category
Tools & Capabilities
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/youngforblbl/dsh-qweather
Plugin: dsh-qweather
Author: youngforblbl

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.en.mdSource · read only
README language

dsh-qweather

A QWeather (和风天气) plugin for DeepSeek Harness: live weather in the sidebar, for the LLM, and drawn into the conversation stream.

![license](LICENSE) ![topic](https://github.com/topics/dsh-plugin)

> Add the dsh-plugin GitHub topic (Repo → ⚙️ Settings → Topics) so the plugin is discoverable under the dsh-plugin topic and awesome-dsh-plugin.

中文 · [UI preview](preview.html) · [Icon gallery](icons.html) · API docs · [Changelog](CHANGELOG.md)

Features

1. Settings card — Settings → Plugins → QWeather: API Host / API KEY / Project ID, one master switch for every sub-feature, auto-locate (city/district) or manual location, with a “Test connection” button. 2. Sidebar weather widget — bottom of the sidebar: expanded shows current weather (icon + text), temperature, next-5-hours (temperature / precipitation probability / wind direction+scale), blue+ alerts, air quality / sun & moon times / lifestyle indices, update time; collapsed shows only the icon + temperature, click to expand the sidebar. 3. LLM weather toolqweather_weather(location?, range?, hours?, days?, fields?) picks the right QWeather API by “location + time span + desired info” and returns a structured summary for the model. 4. In-conversation weather cardqweather_card(location?) renders current weather, the fixed next-5-hours (temperature / precipitation probability / wind direction+scale), blue+ alerts, air quality / sun & moon times / lifestyle indices and update time as an interactive HTML card inside the conversation (replay-stable).

All features are gated by the settings master switch.

Install

dsh plugin --profile web add github:youngforblbl/dsh-qweather
# or from a local checkout:
# dsh plugin --profile web add .

Restart dsh web (or refresh). Desktop: dsh plugin --profile desktop add github:youngforblbl/dsh-qweather, then restart DSH Desktop.

Configure

1. QWeather Console → Projects & Credentials: copy the API KEY; optional Project ID; Console → Settings → API Host (leave blank for the public https://devapi.qweather.com, but prefer your dedicated *.qweatherapi.com host as the public one is being phased out from 2026). 2. In DSH: Settings → Plugins → QWeather, fill in and Save, then Test connection. 3. Location: auto uses browser geolocation and reverse-geocodes to the nearest city/district (stored back to settings; falls back to the manual location), manual accepts a city/district name, a LocationID (e.g. 101010100), or “longitude,latitude”.

Error codes

Every outward error (tool throws, config endpoint responses) carries a stable QW_* code for log correlation, alerting, and retry decisions.

CodeCategoryRetryableMeaning / fix
QW_DISABLEDconfignoMaster switch off — enable under Settings → Plugins → QWeather
QW_NO_API_KEYconfignoAPI KEY missing
QW_NO_LOCATIONinputnoNo location: pass location or set a default
QW_LOCATION_NOT_FOUNDinputnoGeocode empty — use a more precise name / LocationID / coordinates
QW_GEOCODE_UNAVAILABLEconfignoBrowser geolocation unavailable — switch to manual
QW_BAD_HOSTconfignoInvalid API Host — must be an http(s) URL
QW_NETWORKnetworkyesLocal network failure
QW_TIMEOUTnetworkyesRequest timed out
QW_CANCELLEDnetworknoRequest cancelled by the caller
QW_HTTP_ERRORupstreamyesUpstream non-2xx HTTP status
QW_UPSTREAM_ERRORupstreamnoUpstream business error code (GeoAPI envelope)
QW_BAD_RESPONSEupstreamyesUpstream response is not valid JSON
QW_BAD_REQUESTinputnoConfig body invalid / too large / schema failed
QW_FORBIDDENpermissionnoCross-origin config write rejected
QW_SETTINGS_UNAVAILABLEinternalnoSettings service unavailable
QW_INTERNALinternalnoInternal error — check the logs

The authoritative catalog lives in src/qweather/errors.ts (ERROR_CATALOG).

Logging & observability

A tiny dependency-free logger (src/qweather/log.ts, shared by node/browser):

  • Levels: debug | info | warn | error | silent; default warn (quiet in normal operation).
  • Switch: QW_LOG_LEVEL=debug turns on full logging; silent disables it.
  • Namespaces: [qweather:api] (HTTP requests + latency), [qweather:tools] (tool execution), [qweather:config] (config read/write).
  • Redaction: structured extras pass through redact(); apiKey / token / secret values become [redacted], so keys never reach the logs.
QW_LOG_LEVEL=debug dsh web   # run with full logs

Development

Node ≥ 22. pnpm install && pnpm run check (typecheck + 55 vitest cases + dual tsdown build into lib/, which is committed). pnpm run preview regenerates preview.html from samples/sample-bundle.json; pnpm run icons regenerates icons.html (the 63-icon gallery).

Security

Cards run in a sandboxed iframe with a CSP that allows no network access; all markup is template-generated and escaped. The API key is stored in the local ~/.dsh/settings.yaml (redacted in logs); see the Chinese README for the planned credentials-domain upgrade path.

License

MIT. iframe shell/toolview patterns modeled on Nagi-ovo/dsh-visualize (BSD-3-Clause). Weather data © QWeather; bundled icons are self-drawn SVG.