# dsh-genshin-redirect(任务完成跳转原神) **DeepSeek Harness Web 插件** —— 任务(每轮对话)完成时,按电脑的 **Windows 显示语言** 自动用默认浏览器打开对应语言的《原神》官方站点。 [**English**](README.md) · [![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) ## 预览 ![预览](preview.jpg) ## 功能 - 触发时机:**每轮对话结束(任务完成)**,Host 端监听 `agent/turn-stopping` 与 `agent/status→idle`; - 电脑语言判定(**显示语言优先**): 1. Windows 显示语言 —— 用户语言列表第一项(`HKCU\Control Panel\International\User Profile\Languages`,即你在「设置 → 语言」里选的显示语言)→ 显示语言覆盖 → `Get-UICulture`; 2. 区域格式(`Get-Culture`); 3. harness 语言设置(设置页显式选择的语言); 4. 兜底语言(默认 `en`,可配置); - 打开方式:系统默认浏览器新标签页,**DSH 页面本身不受影响**; - 15 秒冷却:子任务连续完成等连续触发只打开一次(可配置)。 ## 语言 → 站点 映射表 | 显示语言 | 跳转站点 | |---|---| | `zh-Hans-*` / `zh-CN` / `zh-SG`(简体) | `https://www.yuanshen.com/#/` | | `zh-Hant-*` / `zh-TW` / `zh-HK` / `zh-MO`(繁体) | `https://genshin.hoyoverse.com/zh-tw` | | `en-*` | `https://genshin.hoyoverse.com/en` | | `ja` | `https://genshin.hoyoverse.com/ja` | | `ko` | `https://genshin.hoyoverse.com/ko` | | `fr` / `de` / `es` / `pt` | `https://genshin.hoyoverse.com/fr` · `/de` · `/es` · `/pt` | | `ru` / `th` / `vi` / `id` | `https://genshin.hoyoverse.com/ru` · `/th` · `/vi` · `/id` | | `it` / `tr` | `https://genshin.hoyoverse.com/it` · `/tr` | | 其他语言(原神无对应官网) | `https://genshin.hoyoverse.com/en`(兜底) | 映射表保存在插件代码里(`lib/index.js` 的 `SITE_BY_LANG`),想加语言/改地址直接改表即可。 ## 环境需求 - [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 的 **web** profile(`dsh web`) - Node.js `^22.19.0 || >=24.0.0` ## 安装 ### 方法一:dsh plugin 命令(推荐) ```sh # 1. 安装到 web profile(把 <你的用户名> 换成你的 GitHub 用户名) dsh plugin --profile web add "github:<你的用户名>/dsh-genshin-redirect" # 2. 在 profile 的 package.json 中,把 "dsh-genshin-redirect" 加入 # dsh.profile.bundles(与其他插件条目并列) # 3. 重启 web 服务器 dsh web ``` ### 方法二:手动安装 在 profile 的 `package.json` 中: - `dependencies` 加入 `"dsh-genshin-redirect": "github:<你的用户名>/dsh-genshin-redirect"`; - `dsh.profile.bundles` 加入 `"dsh-genshin-redirect"`; 然后重装依赖并重启 `dsh web`。 ### 方法三:本地文件夹 ```sh dsh plugin --profile web add "file:C:\path\to\dsh-genshin-redirect" ``` ## 配置(可选) 在 `cordis.patch.yml` 的插件行上追加 `config`: ```yaml - insert: - id: dsh-genshin-redirect name: dsh-genshin-redirect config: cooldownMs: 15000 # 两次打开之间的最小间隔(毫秒,0 = 每次任务结束都打开) defaultLang: en # 什么语言都检测不到时的兜底语言 ``` ## 原理 - 插件挂在 web profile 的宿主组合上(通过 `cordis.patch.yml` 插入一行); - scope 事件按「无 scope 标签的监听器全局放行」规则送达,因此能收到所有 Agent 的 `agent/turn-stopping`; - 语言探测通过 `pwsh`(或 `powershell` / `sh`)执行,输出写入系统临时文件再读回 —— 子进程 stdio 全部 ignore、不建管道,兼容 DSH 的 Windows 沙箱; - 打开浏览器同样走子进程(`Start-Process` → `explorer` → `open` → `xdg-open` 依次回退)。 ## 注意事项 - 每个任务(对话轮次)结束都会检查一次;多会话部署下插件是进程级的,任何会话的任务完成都可能触发(冷却期会合并)。 - 若显示语言对应的官网不存在,自动回退英文官方站。 ## 许可 [MIT](LICENSE)