dsh-game-uid
DSH 插件:按 UID 查原神 / 星铁 / 绝区零的角色练度与汇总面板(只展示数据,不打分)
- Stars
- 0
- Language
- JavaScript
- Created
- Oct 25, 2026
- Updated
- Oct 26, 2026
Introduction
dsh-game-uid
给自己(DSH 里的 agent)装的查 UID → 角色练度与面板插件:给一串 UID,直接把亮出来的角色的 等级、命座、天赋、武器、汇总面板和圣遗物/遗器/驱动盘套装构成整理成一份中文报告。
支持三款能匿名查的游戏:原神、崩坏:星穹铁道、绝区零。
异环、鸣潮没有匿名按 UID 查的公开接口,game 传这两个会返回说明,不会瞎编数据。
只在 macOS 版 DeepSeek Harness 上验证过(DSH 0.2.x / 桌面端)。 换到 Windows 跑不起来的话,把这句话发给你的 DeepSeek: 「帮我适配 dsh-game-uid 到 Windows,路径和导出你来改」——接口都是公开的,改起来不难。
新角色
- 内置角色表
data/chars.json随发包更新(当前 147 个原神角色,含 10000125 哥伦比娅 / 10000126 兹白 / 10000133 桑多涅 / 10000150 奥黛塔 等)。 - 碰到表里没有的 avatarId(比如版本刚开的新角色),插件会按需拉一次 Enka 的
store/gi/avatars.json+gi/locs.json补名字,60 秒内不重复试;失败也不影响其余角色。 - 本地
chars.json改了会按 mtime 自动重读,补数据不用重启 DSH。
它注册了什么
工具 game_uid:
| 参数 | 必填 | 说明 |
|---|---|---|
uid | ✅ | 原神 / 星铁 / 绝区零 UID(9~10 位数字) |
game | auto(默认,三个游戏并发探一次)/ genshin / hsr / zzz / nte | |
format | md(默认)/ text(去掉 Markdown 记号,发 QQ 用)/ qq(一行紧凑版,≤150 字) | |
角色 | 逗号/顿号分隔的角色名:点了名就只输出这几个;不传就输出展柜里全部 | |
save | true 时落地存档(JSON + Markdown),默认不写盘 | |
detail | 已弃用,保留仅为兼容;工具只返回汇总面板,不列单件词条 |
对 agent 说人话就行:「查一下 UID 618285856 的练度」「只看这个号的甘雨」 「637000000 星铁练度怎么样,存个档」「绝区零 UID 14658559 看看面板」。
输出长什么样
🎮 **原神** · UID `618285856`
👤 Algoinde · AR57 · 世界等级 8 · 成就 458 · 展柜 4 人
**甘雨** (冰) · Lv.90 · 0命 · 天赋 9/9/9 · 弓
⚔️ 阿莫斯之弓 R3 · Lv.90 · 5★ · 基础攻 608 · 攻击力 49.6%
📊 生命 9797 · 攻击 2471 · 防御 630 · 暴击率 40.3% · 暴击伤害 180.2%
🧿 冰风迷途的勇士 4 件 + 角斗士的终幕礼 1 件
只报汇总数值:不给单件圣遗物的词条,不打分、不评级、不评价强弱。 想自己判断,数据全摆在这儿了。
数据从哪来
- 原神:
https://enka.network/api/uid/<uid>(只读公开接口,无需 token) - 星铁:
https://api.mihomo.me/sr_info_parsed/<uid>?lang=cn - 绝区零:
https://enka.network/api/zzz/uid/<uid>(Enka 的 ZZZ 端点) - 名字表(角色/武器/套装)是构建时从 Enka 官方 store 抽的中文子集,落在
data/, 运行时不联网查表,只有取玩家数据那一次请求。
所以:只查得到展柜/支援角色(游戏里没放进展柜的看不到),数据有几分钟缓存延迟。
角色筛选
角色=甘雨 → 只输出甘雨;角色=甘雨、班尼特 → 输出这两个;不传 → 展柜里全部。
按名字包含匹配、不分大小写。点名的角色不在展柜里时,会直接说明,而不是给一份空报告。
存档文件
save=true 时写到 DSH_GAME_UID_ARCHIVE(默认 ~/.dsh/game-uid-archive):
genshin-618285856-<ts>.json:format: dsh-game-uid/1,玩家信息 + 每个角色的面板与套装genshin-618285856-<ts>.md:同一份内容的可读版
绝区零的特殊处理
- 命座 3 全技能 +2 级、命座 5 再 +2 级(官方文档要求自己加,Enka 给的是基础值)。
- 属性表
data/zzz-props.json里百分比属性是 ×100 存的(800 = 8%), 渲染时按Format是否含%决定要不要 /100。 - 角色本体面板用
BaseProps + GrowthProps×(等级−1)/10000 + PromotionProps + CoreEnhancementProps四段式算。 - 完整面板 = 角色本体 + 音擎主/副词条 + 6 个驱动盘的主词条与副词条:
先加算所有「生命/攻击/防御/冲击力」的百分比与平铺值,再按
基础×(1+百分比)+平铺收口; 暴击率/暴击伤害/穿透率/能量回复/异常掌控/异常精通直接累加。 音擎与驱动盘的数值用官方近似公式还原(PropertyValue × (1 + 0.2×等级),百分比再 /100)。 - 套装 2/4 件效果:从**绝区零 wiki(wiki.biligame.com/zzz)**抓取,落在
data/zzz-suit-bonus.json(30 套,27 套能解析出无条件数值;条件型效果如「命中敌人后…」不算数,见下)。 生成脚本在仓库外,重抓时按二件套效果 / 四件套效果两个小标题取文本, 匹配生命值|攻击力|防御力|暴击率|暴击伤害|穿透率|能量自动回复|异常掌控|异常精通|冲击力|伤害+ / 提升 / 增加动词,条件词(命中/敌人/入场/持续/秒/前/后…)出现就整段弃用。
- 未计入:音擎被动(wiki 里全是「攻击命中敌人时…」这类条件效果,无法折算成常驻面板) 和条件型套装效果;图与文字里都会注明「被动与条件效果未计」。
QQ 群里 @ 也能查
dsh-qq-bridge 会把「群里 @ 我」的消息喂进目标会话(正文带 【群 昵称】 前缀),
回答再由它转发回那个群。所以群里 @ 机器人说「查询 618285856」时,agent 会调用
game_uid 并把结果发回群里——两个插件之间不需要额外对接。
为此 game_uid 做了两件事:
description里写明「QQ 群里 @ 你并给出 UID 时用这个工具」;format=qq输出一行紧凑版(🎮原神 618285856 Algoinde AR57 · 甘雨 Lv.90 …), 因为 bridge 的简短()会把超过 160 字的回复截断(带 Markdown 图片时例外)。
完整报告留在 DSH 里看,或者加 save=true 落地成存档。
安装
dsh plugin --profile <profile> add file:/path/to/dsh-game-uid-<version>.tgz
装完要完全退出桌面端再重开(⌘Q)才装载新代码。
更新日志
- 0.2.2:修立绘取数用的角色 id —— 星铁/绝区零接口把 id 当字符串给(
"1321"), 旧版用只认 number 的n()转换后恒为 0,导致按 id 查立绘/素材时全部落空(卡片变纯文字)。 现存原神avatarId(数字)、星铁Number(c.id)、绝区零Number(id)三条都取到了值。 - 0.2.1:只展示汇总面板,不打分、不列单件词条;支持
角色点名;exports补"."。
面板字段(星铁补充)
击破特攻:mihomo 在角色没堆这两项时不会返回字段,插件按白值 100% 补齐,面板不再出现「—」。伤害加成:把fire_dmg / quantum_dmg / wind_dmg …汇总成一行(排除crit_dmg、break_dmg),没有元素加成显示 0%。能量恢复效率:mihomo 只返回「超出 100% 的部分」(如 0.3444 = 34.4%),插件补回白值,显示 134.4%;缺失显示 100%。
绝区零维护时的兜底(0.2.7)
绝区零只有一个公开源(enka.network/api/zzz),官方维护时整站返回 424 maintenance,表现就是「刚才还能查,现在查不到了」。
- 每次查询成功会把原始响应写进
~/.dsh/game-uid-archive/zzz-cache/<uid>.json - 维护期间(424 / 网络不通)自动读 24 小时内的缓存,报告顶部会标「⚠️ (Enka 正在维护,这是 24 小时内缓存的数据)」
- 超过 24 小时或从没查过 → 仍然如实报「Enka 维护中,过几分钟再试」,不会拿假数据凑