- Accueil
- Plugins
- Outils et capacités
- dsh-environment-context
dsh-environment-context
liqiming-whu/dsh-environment-context
Injecte l'heure en direct, la météo, la localisation, la batterie et le contexte de l'appareil dans le prompt système de DSH, avec une page de paramètres bilingue.
Installer
dsh plugin --profile web add github:liqiming-whu/dsh-environment-contextREADME
DSH 环境上下文
为 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 — 新的理想型社区
Plugins associés
archify (deepseek-harness)
tt-a1i/archify
WeKnora (dsh-weknora)
tencent/weknora
weknora
tencent/weknora
BrowserSkill (dsh-plugin-browserskill)
tencent/browserskill