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

宠物俄语化 Arekosandoru/dsh-pet-ru

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

把桌面宠物插件的界面与表情包换成俄语

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Arekosandoru/dsh-pet-ru
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 12 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 141 处,展示前 62 条)
  • 发起网络请求
    files/lib/client.js:555
    const res = await fetch(url, { cache: "no-store" });
  • 发起网络请求
    files/lib/client.js:691
    const res = await fetch(baseUrl, {
  • 发起网络请求
    files/lib/client.js:1409
    const res = await fetch(baseUrl, {
  • 发起网络请求
    files/lib/client.js:2047
    const r = await fetch("/dsh-pet-7340/config");
  • 发起网络请求
    files/lib/client.js:2851
    fetch("/dsh-pet-7340/config/meta").then((r) => r.ok ? r.json() : null).then((p) => setPaths(p)).catch(() => console.warn("[dsh-pet] не удалось получит
  • 发起网络请求
    files/lib/client.js:2916
    fetch("/dsh-pet-7340/config", { signal: controller.signal }).then((r) => {
  • 发起网络请求
    files/lib/index.js:28
    return fetch(url, {
  • 发起网络请求
    files/lib/index.js:163
    async fetch({ key, provider }) {
  • 发起网络请求
    files/lib/index.js:255
    async fetch({ provider, resolveAccount }) {
  • 发起网络请求
    files/lib/index.js:269
    async fetch({ key, provider }) {
  • 发起网络请求
    files/lib/index.js:315
    async fetch({ key, provider }) {
  • 发起网络请求
    files/lib/index.js:402
    return await def.fetch({ provider });
  • 读取本地文件
    files/lib/index.js:598
    if (!dirs.some((dir) => existsSync(join(dir, name$1 + ".png")))) continue;
  • 读取本地文件
    files/lib/index.js:826
    const raw = JSON.parse(stripJsonc(readFileSync(path, "utf8")));
  • 读取本地文件
    files/lib/index.js:843
    if (existsSync(paths.userFile)) return paths.userFile;
  • 读取本地文件
    files/lib/index.js:844
    if (paths.legacyUserFile && existsSync(paths.legacyUserFile)) return paths.legacyUserFile;
  • 读取本地文件
    files/lib/index.js:849
    if (!legacy || !existsSync(legacy) || existsSync(paths.userFile)) return false;
  • 写入本地文件
    files/lib/index.js:851
    renameSync(legacy, paths.userFile);
  • 读取本地文件
    files/lib/index.js:862
    entries = readdirSync(petDir, { withFileTypes: true });
  • 写入本地文件
    files/lib/index.js:1268
    mkdirSync(dirname(paths.userFile), { recursive: true });
  • 写入本地文件
    files/lib/index.js:1269
    writeFileSync(paths.userFile, raw, "utf8");
  • 写入本地文件
    files/lib/index.js:3329
    mkdirSync(targetDir, { recursive: true });
  • 写入本地文件
    files/lib/index.js:3409
    mkdirSync(cwd, { recursive: true });
  • 执行外部命令来自配置/变量
    files/lib/index.js:3410
    const child = spawn(command, args, {
  • 写入本地文件
    files/lib/index.js:4025
    await mkdir(userRoot, { recursive: true });
  • 读取本地文件
    files/lib/standalone.js:103
    const raw = JSON.parse(stripJsonc(readFileSync(path, "utf8")));
  • 读取本地文件
    files/lib/standalone.js:120
    if (existsSync(paths.userFile)) return paths.userFile;
  • 读取本地文件
    files/lib/standalone.js:121
    if (paths.legacyUserFile && existsSync(paths.legacyUserFile)) return paths.legacyUserFile;
  • 读取本地文件
    files/lib/standalone.js:126
    if (!legacy || !existsSync(legacy) || existsSync(paths.userFile)) return false;
  • 写入本地文件
    files/lib/standalone.js:128
    renameSync(legacy, paths.userFile);
  • 读取本地文件
    files/lib/standalone.js:139
    entries = readdirSync(petDir, { withFileTypes: true });
  • 读取本地文件
    files/lib/standalone.js:544
    const raw = readFileSync(paths.defaultFile, "utf8");
  • 写入本地文件
    files/lib/standalone.js:545
    mkdirSync(dirname(paths.userFile), { recursive: true });
  • 写入本地文件
    files/lib/standalone.js:546
    writeFileSync(paths.userFile, raw, "utf8");
  • 写入本地文件
    files/lib/standalone.js:607
    mkdirSync(targetDir, { recursive: true });
  • 写入本地文件
    files/lib/standalone.js:687
    mkdirSync(cwd, { recursive: true });
  • 执行外部命令来自配置/变量
    files/lib/standalone.js:688
    const child = spawn(command, args, {
  • 发起网络请求
    files/lib/standalone.js:769
    fetch(cb, {
  • 发起网络请求
    files/lib/standalone.js:910
    return fetch(url, {
  • 发起网络请求
    files/lib/standalone.js:1045
    async fetch({ key, provider }) {
  • 发起网络请求
    files/lib/standalone.js:1137
    async fetch({ provider, resolveAccount }) {
  • 发起网络请求
    files/lib/standalone.js:1151
    async fetch({ key, provider }) {
  • 发起网络请求
    files/lib/standalone.js:1197
    async fetch({ key, provider }) {
  • 写入本地文件
    files/lib/standalone.js:4064
    await mkdir(userRoot, { recursive: true });
  • 执行外部命令来自配置/变量
    files/lib/standalone.js:6676
    const identity = execFileSync(join(process.env.SystemRoot ?? "C:\\Windows", "System32", "whoami.exe"), [
  • 执行外部命令来自配置/变量
    files/lib/standalone.js:6687
    execFileSync(join(process.env.SystemRoot ?? "C:\\Windows", "System32", "icacls.exe"), [
  • 执行外部命令来自配置/变量
    files/lib/standalone.js:6713
    const acl = execFileSync(join(process.env.SystemRoot ?? "C:\\Windows", "System32", "icacls.exe"), [path], {
  • 删除本地文件
    files/lib/standalone.js:6744
    unlinkSync(temporary);
  • 删除本地文件
    files/lib/standalone.js:6750
    unlinkSync(temporary);
  • 删除本地文件
    files/lib/standalone.js:7244
    if (current.pid === process.pid && current.token === details.token) unlinkSync(file);
  • 读取本地文件
    install.mjs:12
    const manifest = JSON.parse(readFileSync(join(here, 'manifest.json'), 'utf8'));
  • 读取本地文件
    install.mjs:13
    const renames = JSON.parse(readFileSync(join(here, 'renames.json'), 'utf8'));
  • 读取本地文件
    install.mjs:22
    return createHash('sha256').update(readFileSync(p)).digest('hex');
  • 读取本地文件
    install.mjs:44
    const info = JSON.parse(readFileSync(join(restoreDir, 'backup.json'), 'utf8'));
  • 读取本地文件
    install.mjs:46
    if (!existsSync(dir)) fail(`папка плагина из бэкапа не найдена: ${dir}`);
  • 读取本地文件
    install.mjs:50
    if (!existsSync(src)) fail(`в бэкапе нет файла ${rel}`);
  • 写入本地文件
    install.mjs:51
    copyFileSync(src, dst);
  • 写入本地文件
    install.mjs:58
    renameSync(to, from);
  • 写入本地文件
    install.mjs:109
    renameSync(join(dir, r.from), join(dir, r.to));
  • 写入本地文件
    install.mjs:130
    for (const r of appliedRenames.reverse()) renameSync(join(dir, r.to), join(dir, r.from));
  • 写入本地文件
    install.mjs:150
    mkdirSync(dirname(dst), { recursive: true });
  • 写入本地文件
    install.mjs:151
    copyFileSync(join(dir, f.path), dst);
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

dsh-pet 的俄语本地化,面向 DeepSeek Harness:带翻译覆盖层和安装器(dsh-pet 0.3.8)

README

由 DeepSeek 最新模型翻译生成
dsh-pet-ru dsh-pet 插件的非官方俄语翻译版,用于 DeepSeek Harness。 这不是 fork:仓库里只有翻译后的文件,以及一个安装器,用来把这些文件覆盖到已安装的原版插件上。 兼容性 只兼容 dsh-pet 0.3.8。安装器会校验每个文件的 sha256,版本不符就拒绝做任何改动,这样上游的新功能不会被覆盖掉。 安装方法 手动安装: node install.mjs 交给智能体:把这个仓库的链接发给它,它会读 AGENTS.md,然后照做。 安装器会自动在 ~/.dsh/profiles//node_modules/dsh-pet 找到插件,做好备份,复制 35 个文件(11 个文本文件 + 24 张重绘的表情包),再重命名 133 个资源。完成后重启 DSH(浏览器里刷新页面即可)。 如果有多个配置档:node install.mjs --dir <dsh-pet 文件夹路径>。 只看执行计划:--dry-run。 改动内容 - lib/client.js、lib/index.js、lib/standalone.js —— 界面、菜单、设置、通知、命令行。 - assets/config.jsonc —— 动画名称、状态文案、提示词。 - runtime/electron-helper/.js —— 桌面模式下的宠物窗口。
展开完整文档(README 剩余 1 节)
dsh-pet-ru

dsh-pet 插件的非官方俄语翻译版,用于 DeepSeek Harness。
这不是 fork:仓库里只有翻译后的文件,以及一个安装器,用来把这些文件覆盖到已安装的原版插件上。

兼容性

只兼容 dsh-pet 0.3.8。安装器会校验每个文件的 sha256,版本不符就拒绝做任何改动,这样上游的新功能不会被覆盖掉。

安装方法

手动安装:

node install.mjs

交给智能体:把这个仓库的链接发给它,它会读 AGENTS.md,然后照做。

安装器会自动在 ~/.dsh/profiles//node_modules/dsh-pet 找到插件,做好备份,复制 35 个文件(11 个文本文件 + 24 张重绘的表情包),再重命名 133 个资源。完成后重启 DSH(浏览器里刷新页面即可)。

如果有多个配置档:node install.mjs --dir <dsh-pet 文件夹路径>。
只看执行计划:--dry-run。

改动内容

- lib/client.js、lib/index.js、lib/standalone.js —— 界面、菜单、设置、通知、命令行。
- assets/config.jsonc —— 动画名称、状态文案、提示词。
- runtime/electron-helper/.js —— 桌面模式下的宠物窗口。
- package.json —— 插件管理器里的描述。
- assets/memes/*.png —— 24 张表情包重绘:涂掉中文标注,用插件自带字体写上俄语文字(该字体含西里尔字母)。
- 133 个资源(106 个视频、26 张表情包、字体)重命名:动画文件名必须和配置里的动画名一致,不改名俄语名称就不会生效。

视频内容不变,只改文件名。

回滚

安装器会打印备份路径。恢复原状:

node install.mjs --restore "~/.dsh/dsh-pet-ru-backup/<日期>"

更新插件

更新 dsh-pet 会覆盖掉翻译。每次更新后:

1. 等这个仓库发布新版本(见 manifest.json)。
2. 重新运行 node install.mjs。

为新版本构建(维护者用)

1. 从 npm 下载新版本的 tarball 并解压,需要 package/ 文件夹。
2. 把翻译迁移到新版本:

python tools/update.py --prev-upstream scratch/upstream-0.3.8/package \
--prev-ru scratch/ru2-0.3.8 \
--new-upstream <新版本>/package --out scratch/ru-0.3.9

3. 直接在 scratch/ru-0.3.9 里翻译 update-report.json 中剩下的部分。
4. 重新构建 overlay 和 manifest:

python tools/build.py --upstream <新版本>/package --ru scratch/ru-0.3.9 --version 0.3.9

5. 在解压包的副本上验证安装:

node install.mjs --dir <副本>/package --dry-run

如果新版本里出现了新资源,build.py 会把它们列出来——需要翻译并补进 renames.json(否则俄语动画名称不会生效)。

限制

- assets/config.jsonc 里的注释仍是中文:那是配置文件自带的说明文档,不影响界面运行。
- 0.3.8 之后新增到 dsh-pet 的字符串会保持中文,直到仓库更新为止。
- 两段带台词的动画(「思考中」「吃什么」)以及 福 的卡片上,文字目前仍是中文:视频是下一阶段的事。
- 插件文件会整体替换,所以更新后需要重新安装译文。

许可证

MIT,与原项目一致。完整文本和免责声明见 LICENSE。
本项目与 dsh-pet 作者无关。
预览分享卡片长什么样 ↓Arekosandoru/dsh-pet-ru
分享 · DeepSeek Harness Hub
Arekosandoru/dsh-pet-ru

把桌面宠物插件的界面与表情包换成俄语

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部