将实时的时间、天气、地点、电量和设备信息注入 DSH 系统提示,并提供双语设置页面。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:liqiming-whu/dsh-environment-context
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
为 DeepSeek Harness 提供实时环境上下文:时间、天气、地点、电量和设备信息。插件在 DSH 原生设置面板中注册“环境上下文”页面,并通过动态系统提示段注入当前状态,不创建聊天消息或累积上下文节点。
兼容性
面向 DSH 0.2.0-rc.2。用户设置是插件 Config 上的 volatile 字段,Host 在每次提示组装时通过插件条目读取,因此保存设置后下一次模型请求即生效,无需新建会话,也不会因此重启插件;安装或更新插件本身仍需重启 dsh web / 桌面应用并硬刷新页面。0.3.x 及更早版本对应 DSH 0.1.x 的设置接口,不适用于 0.2。
安装
使用 DSH 官方 GitHub 插件安装格式(不指定版本号,默认安装仓库最新版):
dsh plugin --profile web add --allow-build=dsh-environment-context github:liqiming-whu/dsh-environment-context --trust-lockfile
--allow-build 允许 Git 源码包执行 prepare 构建脚本;--trust-lockfile 跳过 lockfile 供应链校验(新发布不足 24 小时的版本会触发 pnpm 的 minimumReleaseAge 拦截,你的 pnpm 不接受该选项时可去掉)。桌面应用使用的 profile 名是 desktop(dsh web 为 web),请按实际运行方式替换 --profile。安装后重启 DSH,刷新 dsh web 打印的地址,点击左侧底部 设置 → 环境上下文。
[!WARNING] 请按需开启:动态环境注入可能降低提示词缓存命中率。 时间、天气、地点、电量和设备信息会随快照、刷新、浏览器语言或设置变化,导致最终系统提示前缀发生变化;即使对话内容不变,也可能减少模型服务的前缀/提示词缓存复用,增加延迟,并可能影响缓存计费优惠。对稳定性优先的编码、文档和长会话任务,建议保持关闭;推荐仅在确实需要实时环境氛围的 RP(角色扮演)场景中开启。
功能
- 自动读取浏览器首选语言:语言字符串以
zh开头(例如zh-CN、zh-TW、zh_CN)时使用中文,其余语言使用英文;配置locale仅作为浏览器语言不可用时的回退。 - 设置页标题、字段、选项、提示和状态文案与上述语言规则同步切换。
- 时间、时区、星期分别开关。
- 天气源:Open-Meteo、MET Norway、wttr.in;自动模式严格按 Open-Meteo → MET Norway → wttr.in 顺序容错,手动选择某个提供方时只请求该提供方。
- 天气状况、风向和地点请求与注入语言一致。
- 地点:手动城市或浏览器 Geolocation 自动定位;不使用代理地址或公网 IP。
- 反向地址解析:Nominatim、BigDataCloud、Photon;自动模式固定按 Nominatim → BigDataCloud → Photon 容错。
- 地址缓存键包含反向解析供应商,天气缓存键包含天气供应商和坐标,避免跨源混用。
- 刷新失败只复用同键旧缓存并标记 stale;电量失败不复用旧值。
- 地点、天气状况、温度、体感、湿度、风速可分别开关。
- 电量、充电状态、系统设备名称、型号、平台及自定义设备名称。
- 动态注入预览、错误与警告状态、立即测试并强制刷新。
- 自动定位时才显示反向地址解析设置;手动模式只显示城市输入。
注入方式
插件使用 DSH 官方 systemPrompt.section() 注册单一动态系统提示段。它不会调用 agent.inject(),也不使用会形成持久会话事件的动态 PromptContext,因此聊天时间线中不会产生环境消息或逐轮累积快照。
该段落以 interpolate: false 注册:快照文本(地点名、天气描述、自定义设备名)不会被当作 {{变量}} 解析,避免外部数据被误读为提示变量。
DSH 要求模型可见输入可从请求记录重建,因此最终组装后的系统提示仍属于请求审计数据;插件不会绕过该约束。
双语注入示例
浏览器首选语言以 zh 开头(例如 zh-CN、zh-TW 或 zh_CN)时:
【现实环境信息】
当前时间:2026年8月19日 17:36:49
时区:Asia/Shanghai
星期:星期三
地点:<当前地点>
天气:小毛毛雨
温度:34.4°C(体感:38.7°C)
湿度:52%
风速:8.2 km/h 东北
电量:100%
充电状态:充电中
设备信息:
设备名称:<设备名称>
设备型号:<设备型号>
平台:Microsoft Windows 11
浏览器首选语言不是中文(例如 en-US、ja-JP 或 fr-FR)时统一注入英文:
[Current environment]
Local time: Aug 19, 2026, 5:36:49 PM
Time zone: Asia/Shanghai
Weekday: Wednesday
Location: <Current location>
Weather: Light drizzle
Temperature: 34.4°C (feels like 38.7°C)
Humidity: 52%
Wind: 8.2 km/h NE
Battery: 100%
Charging: yes
Device:
Name: <Device name>
Model: <Device model>
Platform: Microsoft Windows 11
语言会随浏览器提交的最新环境快照更新。地点、天气状况和风向按语言分别请求并使用独立缓存,避免中英文缓存混用。
系统与浏览器接口
- 自动位置:浏览器 Geolocation API,不读取代理地址或公网 IP。
- 电量:浏览器 Battery Status API;失败时明确显示不可用,不复用旧值。
- 设备:DSH Host 使用 Node
os与 Windows CIMWin32_ComputerSystem、Win32_OperatingSystem,不使用 User-Agent。 - 设备采集通过 DSH
ctx.subprocess执行;PowerShell 显式使用 UTF-8、清除代理环境变量,并设置输出上限和超时。
隐私
手动地点发送给 Open-Meteo Geocoding。自动坐标发送给手动选定的天气/反向地址解析源;启用自动模式时会严格按文档顺序逐个请求,成功后停止。电量与设备摘要仅通过同源接口进入当前 DSH Host 内存,Host 重启即消失,不写入聊天消息。
开发与验证
pnpm install
pnpm run check
pnpm pack
项目包含格式化、客户端注册、天气回退、反向地址解析顺序和构建产物测试;另覆盖 DSH 0.2 设置迁移:用 @deepseek-ai/dsh-settings 自己的 volatileForm/projectForm/plainConfig 复现宿主表单投影后按浏览器方式解码,真调用 ctx.settings.update() 并作用于真实 Loader 条目(走 Entry._commitVolatile 的原地提交,测试断言其 loader/volatile-update 事件、下一次组装就渲染新值、且插件只 apply 一次;仅 profile YAML 持久化与 root-Include reconcile 为替身),驱动真实 systemPrompt 服务组装注入段,并通过 ModuleLoader 协议加载实际客户端包(检查只引用 react、注册 settings.section、interpolate: false 与快照文本不被插值)。
许可证
友情链接
Linux.Do — 新的理想型社区
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 31915
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 4099
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1130
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 501
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 484
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 446
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。