用一句话指挥本机完成原神日常自动化任务
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add gychen-NJU/bettergi-mcp该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · tool
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 69 处,展示前 35 条)
- 读取本地文件bettergi-mcp.mjs:109
if (!existsSync(scriptPath)) { - 写入本地文件bettergi-mcp.mjs:117
writeFileSync(payloadPath, JSON.stringify({ script: scriptPath, args }), 'utf8'); - 执行外部命令固定命令bettergi-mcp.mjs:122
const cp = spawn( - 删除本地文件bettergi-mcp.mjs:130
const cleanup = () => { try { rmSync(payloadPath, { force: true }); } catch { } }; - 读取本地文件bettergi-mcp.mjs:158
try { return JSON.parse(readFileSync(p, 'utf8').replace(/^ FEFF/, '')); } catch { return null; } - 写入本地文件bettergi-mcp.mjs:162
mkdirSync(path.dirname(p), { recursive: true }); - 写入本地文件bettergi-mcp.mjs:163
writeFileSync(p, JSON.stringify(obj, null, 2), 'utf8'); - 发起网络请求bettergi-mcp.mjs:170
const res = await fetch(url, { redirect: 'follow', signal: ac.signal }); - 读取本地文件bettergi-mcp.mjs:180
if (!force && existsSync(CACHE_FILE)) { - 读取本地文件bettergi-mcp.mjs:181
const age = Date.now() - statSync(CACHE_FILE).mtimeMs; - 读取本地文件bettergi-mcp.mjs:207
if (!force && existsSync(TREE_CACHE_FILE)) { - 读取本地文件bettergi-mcp.mjs:208
const age = Date.now() - statSync(TREE_CACHE_FILE).mtimeMs; - 发起网络请求bettergi-mcp.mjs:217
const res = await fetch(REPO_TREE_URL, { - 写入本地文件bettergi-mcp.mjs:250
mkdirSync(path.dirname(dest), { recursive: true }); - 发起网络请求bettergi-mcp.mjs:253
const res = await fetch(REPO_RAW + encodeRepoPath(f.path), { headers: { 'User-Agent': 'bettergi-mcp/1.0' } }); - 写入本地文件bettergi-mcp.mjs:256
writeFileSync(dest, buf); - 写入本地文件bettergi-mcp.mjs:317
mkdirSync(path.dirname(dest), { recursive: true }); - 发起网络请求bettergi-mcp.mjs:329
const res = await fetch(REPO_RAW + encodeRepoPath('repo/' + relPath), { - 执行外部命令固定命令selftest.mjs:26
const cp = spawn('node', [SERVER], { stdio: ['pipe', 'pipe', 'ignore'], windowsHide: true }); - 读取本地文件selftest.mjs:160
if (existsSync(c.cleanupFile)) { - 删除本地文件selftest.mjs:161
rmSync(c.cleanupFile, { force: true }); - 执行外部命令固定命令test-client.mjs:15
const cp = spawn('node', [SERVER], { stdio: ['pipe', 'pipe', 'inherit'], windowsHide: true }); - 读取本地文件test-onedragon.mjs:16
const readCfg = (n) => JSON.parse(readFileSync(path.join(OD, `${n}.json`), 'utf8').replace(/^ FEFF/, '')); - 读取本地文件test-onedragon.mjs:18
const backups = () => readdirSync(BGI).filter((n) => n.startsWith('_backup_')).sort(); - 执行外部命令固定命令test-onedragon.mjs:24
const cp = spawn('node', [SERVER], { stdio: ['pipe', 'pipe', 'ignore'] }); - 删除本地文件test-onedragon.mjs:54
try { rmSync(path.join(OD, `${TMP}.json`), { force: true }); } catch { } - 读取本地文件test-onedragon.mjs:58
check('① 新建临时配置', !c1.err && existsSync(path.join(OD, `${TMP}.json`))); - 删除本地文件test-onedragon.mjs:103
try { rmSync(path.join(OD, `${TMP}.json`), { force: true }); console.log(' ↳ 已删除临时配置 _selftest-od.json'); } catch (e) { console.log(' ⚠ 清理失败:' + e - 读取本地文件test-onedragon.mjs:104
check('⑧ 临时配置已清理', !existsSync(path.join(OD, `${TMP}.json`))); - 读取本地文件test-onedragon.mjs:105
const remain = readdirSync(OD).filter((f) => f.endsWith('.json')).map((f) => f.replace(/ json$/, '')); - 读取本地文件test-setconfig.mjs:11
const orig = JSON.parse(readFileSync(CFG, 'utf8').replace(/^ FEFF/, '')); - 执行外部命令固定命令test-setconfig.mjs:20
const cp = spawn('node', [SERVER], { stdio: ['pipe', 'pipe', 'ignore'] }); - 读取本地文件test-setconfig.mjs:42
const readCfg = () => JSON.parse(readFileSync(CFG, 'utf8').replace(/^ FEFF/, '')); - 读取本地文件test-setconfig.mjs:43
const backups = () => (existsSync(BGI) ? readdirSync(BGI).filter((n) => n.startsWith('_backup_')) : []).sort(); - 读取本地文件test-setconfig.mjs:43
const backups = () => (existsSync(BGI) ? readdirSync(BGI).filter((n) => n.startsWith('_backup_')) : []).sort();
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
BetterGI MCP 服务器:29 个工具,让你在 DeepSeek Harness / Claude Code 里驱动 BetterGI 日常自动化(单文件,零依赖)
README
由 DeepSeek 最新模型翻译生成bettergi-mcp
BetterGI(更好的原神)的 MCP stdio 服务器:把「启动游戏、跑一条龙、采集材料、打秘境、改配置/队伍、查战果与失败原因」这些操作包成 29 个 bgi_ 工具,让 DSH / Claude Code / 任何支持 MCP 的智能体用一句话直接指挥本机 BetterGI。
零第三方依赖(Node ≥ 18),单文件服务器;所有真实操作都转发给已经验证过的 bettergi-control 技能脚本,MCP 层只负责参数校验、结构化返回,以及官方脚本仓库的检索/下载。
能力一览
| 分组 | 工具 |
| 体检 / 状态 | bgi_doctor(开跑前体检)· bgi_status · bgi_schedule_info · bgi_results(战果统计)· bgi_watch(观察并判定成败) |
| 启动 / 关闭 | bgi_start_game · bgi_focus_game(还原窗口并置前)· bgi_close |
| 一条龙 | bgi_run_one_dragon · bgi_create_onedragon · bgi_set_onedragon · bgi_add_group_to_onedragon · bgi_run_task_progress(断点续跑) |
展开完整文档(README 剩余 1 节)
bettergi-mcp
BetterGI(更好的原神)的 MCP stdio 服务器:把「启动游戏、跑一条龙、采集材料、打秘境、改配置/队伍、查战果与失败原因」这些操作包成 29 个 bgi_ 工具,让 DSH / Claude Code / 任何支持 MCP 的智能体用一句话直接指挥本机 BetterGI。
零第三方依赖(Node ≥ 18),单文件服务器;所有真实操作都转发给已经验证过的 bettergi-control 技能脚本,MCP 层只负责参数校验、结构化返回,以及官方脚本仓库的检索/下载。
能力一览
| 分组 | 工具 |
| 体检 / 状态 | bgi_doctor(开跑前体检)· bgi_status · bgi_schedule_info · bgi_results(战果统计)· bgi_watch(观察并判定成败) |
| 启动 / 关闭 | bgi_start_game · bgi_focus_game(还原窗口并置前)· bgi_close |
| 一条龙 | bgi_run_one_dragon · bgi_create_onedragon · bgi_set_onedragon · bgi_add_group_to_onedragon · bgi_run_task_progress(断点续跑) |
| 配置组 | bgi_run_groups · bgi_create_group · bgi_list_groups · bgi_list_pathing |
| 采集 / 路线 | bgi_collect_material · bgi_collect_now(一句话闭环)· bgi_find_routes · bgi_repo_index |
| JS 脚本 | bgi_list_js_scripts · bgi_install_js · bgi_run_js · bgi_js_settings |
| 配置 | bgi_set_config · bgi_list_strategies |
| 排错 | bgi_log_search(按级别/正则/时间窗/任务检索日志)· bgi_wait_milestone |
bgi_collect_now { material: "星螺", confirm: true } 是最省事的一个:找路线 → 缺则下载 → 建配置组 → 检查窗口 → 触发 → 轮询到"真的开始跑了"。
环境要求
- Windows + Node.js ≥ 18
- 本机已安装 BetterGI(默认 D:\software\BetterGI,可用 BETTERGI_ROOT 覆盖)
- bettergi-control 技能(~/.agents/skills/bettergi-control/,提供被复用的 15 个 PowerShell 脚本;可用 BETTERGI_SKILL_DIR 覆盖)
- 游戏需可见且前台、16:9 ≥ 1920×1080;没有后台挂机
安装
git clone https://github.com/gychen-NJU/bettergi-mcp.git
不需要 npm install(零依赖)。
在 DSH 里注册
编辑对应配置档的 cordis.patch.yml(例如 ~/.dsh/profiles/desktop/cordis.patch.yml),在末尾的 insert 段加一行:
- insert:
- id: bettergi-mcp
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: bettergi
transport: stdio
command: node
args:
- '<clone 下来的目录>/bettergi-mcp.mjs' cwd: '<clone 下来的目录>' failOnStartupError: false
重启 DSH 后即可在会话里看到 mcp__bettergi__ 工具。
在 Claude Code / 其它 MCP 客户端里注册
// .mcp.json 或等价配置 {
"mcpServers": {
"bettergi": {
"command": "node",
"args": ["<clone 下来的目录>/bettergi-mcp.mjs"],
"env": { "BETTERGI_ROOT": "D:\\software\\BetterGI" }
}
}
}
交给智能体安装(一句话)
帮我把 https://github.com/gychen-NJU/bettergi-mcp 装进当前 DSH:clone 到本地,在配置档的 cordis.patch.yml 里加一条 serverName=bettergi 的 MCP stdio 声明指向 bettergi-mcp.mjs,重启后确认 mcp__bettergi__bgi_doctor 能调通。
环境变量
| 变量 | 默认 | 说明 |
| BETTERGI_ROOT | D:\software\BetterGI | BetterGI 安装根(User\、log\ 都在下面) |
| BETTERGI_SKILL_DIR | %USERPROFILE%\.agents\skills\bettergi-control\scripts | 被复用的技能脚本目录 |
| BETTERGI_REPO_RAW | GitHub raw | 官方脚本仓库 raw 前缀(CNB 在部分网络下解析失败) |
安全与边界
- 不读写游戏内存、不改游戏文件;只驱动 BetterGI 与它的配置/日志。
- 硬要求:BetterGI 运行中时命令行参数会被单实例吃掉;改配置必须先退出 BetterGI。
- 执行类工具内置 运行闸门(run-gate.mjs):BetterGI 占用、窗口 <1080p、非 16:9、最小化等"注定白跑"的情况直接拦下;确需强行放行用 force:true。
- 长任务一律「发起 → 轮询」:单次工具调用限制在 50 秒内,跑完用 bgi_watch / bgi_wait_milestone 确认。
- 账号风险取决于使用方式:官方条款把第三方软件 / 模拟操作列为封号理由之一,低调使用。
自测
node --check bettergi-mcp.mjs
node test-gate.mjs # 运行闸门纯函数单测(不需要 BetterGI 在跑)
node selftest.mjs --quiet # MCP 自检(只读)
powershell -NoProfile -File gate-check.ps1 # 全量验收(需要本机 BetterGI)
cache/ 是官方仓库索引缓存(自动生成,已在 .gitignore 里)。
相关项目
- dsh-game-daily:DSH 设置页里的「游戏日常」插件。原神的每日代理需要这个 MCP;插件会在缺失时自动把 bettergi-mcp.mjs 下载到 $DSH_HOME/game-daily/vendor/bettergi-mcp/,并提示你补 profile 注册行。
许可
MIT © 2026 gychen-NJU预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
gychen-NJU/bettergi-mcp
用一句话指挥本机完成原神日常自动化任务
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
智能体运行框架路由HarnessRouter/harnessrouter
智能体 harness 的统一接口。
★ 3,984已汉化DSH
71.3
这是你的仓库?认领条目