🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

原神自动化助手 gychen-NJU/bettergi-mcp

DeepSeek Harness
gychen-NJU11 天前有提交已提供中文文档扫描:含敏感能力

用一句话指挥本机完成原神日常自动化任务

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
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 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
预览分享卡片长什么样 ↓gychen-NJU/bettergi-mcp
分享 · DeepSeek Harness Hub
gychen-NJU/bettergi-mcp

用一句话指挥本机完成原神日常自动化任务

这是你的仓库?认领条目

回到顶部