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

精灵图生成器 randomix777/dsh-sprite-gen

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

用 AI 生成游戏精灵图、动画序列与特效素材

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · vision
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 63 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/16) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 35 处,展示前 35 条)
  • 读取本地文件
    lib/index.js:48
    if (existsSync(OUTPUT_LOG_FILE)) {
  • 读取本地文件
    lib/index.js:49
    log = JSON.parse(readFileSync(OUTPUT_LOG_FILE, 'utf8'));
  • 写入本地文件
    lib/index.js:59
    writeFileSync(OUTPUT_LOG_FILE, JSON.stringify(log, null, 2), 'utf8');
  • 读取本地文件
    lib/index.js:1473
    if (existsSync(OUTPUT_LOG_FILE)) {
  • 读取本地文件
    lib/index.js:1474
    log = JSON.parse(readFileSync(OUTPUT_LOG_FILE, 'utf8'));
  • 读取本地文件
    lib/config.js:85
    if (existsSync(CONFIG_FILE)) {
  • 读取本地文件
    lib/config.js:86
    const data = readFileSync(CONFIG_FILE, 'utf8');
  • 写入本地文件
    lib/config.js:100
    mkdirSync(CONFIG_DIR, { recursive: true });
  • 写入本地文件
    lib/config.js:101
    writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), 'utf8');
  • 发起网络请求
    lib/image_gen.js:97
    const response = await fetch(`${baseUrl}/v1beta/models/${model}:generateContent?key=${apiKey}`, {
  • 发起网络请求
    lib/image_gen.js:161
    const response = await fetch(`${baseUrl}/generate`, {
  • 发起网络请求
    lib/image_gen.js:229
    const response = await fetch(`${baseUrl}`, {
  • 发起网络请求
    lib/image_gen.js:286
    const queueResp = await fetch(`${comfyUrl}/prompt`, {
  • 发起网络请求
    lib/image_gen.js:303
    const resp = await fetch(`${comfyUrl}/history/${promptId}`);
  • 发起网络请求
    lib/image_gen.js:322
    const imgResp = await fetch(`${comfyUrl}/view?filename=${img.filename}&subfolder=${img.subfolder || ''}&type=${img.type}`, {
  • 写入本地文件
    lib/utils.js:20
    writeFileSync(abs, buffer);
  • 读取本地文件
    lib/character.js:18
    if (existsSync(CHARACTERS_FILE)) {
  • 读取本地文件
    lib/character.js:19
    return JSON.parse(readFileSync(CHARACTERS_FILE, 'utf8'));
  • 写入本地文件
    lib/character.js:30
    mkdirSync(CHARACTERS_DIR, { recursive: true });
  • 写入本地文件
    lib/character.js:31
    writeFileSync(CHARACTERS_FILE, JSON.stringify(data, null, 2), 'utf8');
  • 发起网络请求
    lib/comfy_gen.js:56
    const queueResp = await fetch(`${comfy_url}/prompt`, {
  • 发起网络请求
    lib/comfy_gen.js:79
    const imgResp = await fetch(`${comfy_url}/view?filename=${img.filename}&subfolder=${img.subfolder || ''}&type=${img.type}`, {
  • 发起网络请求
    lib/comfy_gen.js:104
    const resp = await fetch(`${comfyUrl}/history/${promptId}`);
  • 写入本地文件
    lib/safe_write.js:32
    mkdirSync(path.dirname(filePath), { recursive: true });
  • 读取本地文件
    lib/safe_write.js:36
    try { return readFileSync(filePath); } catch { return null; }
  • 读取本地文件
    lib/safe_write.js:40
    if (existsSync(finalPath)) {
  • 写入本地文件
    lib/safe_write.js:46
    renameSync(finalPath, backupPath);
  • 读取本地文件
    lib/safe_write.js:76
    if (!overwrite && existsSync(absOutput)) {
  • 写入本地文件
    lib/safe_write.js:121
    writeFileSync(tmpFile, data);
  • 读取本地文件
    lib/safe_write.js:123
    if (backup && existsSync(absOutput)) {
  • 读取本地文件
    lib/safe_write.js:125
    } else if (existsSync(absOutput)) {
  • 删除本地文件
    lib/safe_write.js:126
    unlinkSync(absOutput);
  • 写入本地文件
    lib/safe_write.js:128
    renameSync(tmpFile, absOutput);
  • 读取本地文件
    lib/sprite_edit.js:69
    if (!existsSync(resolvedPath)) {
  • 读取本地文件
    lib/sprite_edit.js:72
    const buffer = readFileSync(resolvedPath);
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-settings-plugins@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-settings@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

为 DeepSeek Harness 打造的精灵图生成器,支持 AI 图像生成

README

由 DeepSeek 最新模型翻译生成
dsh-sprite-gen 为 DeepSeek Harness 打造的精灵图生成器,支持 AI 图像生成。 功能 - ?? AI 图像生成 —— 直接用 AI 生成精灵图 - ?? 4 个服务商 —— Gemini Flash、Stable Diffusion、Agnes AI、ComfyUI(本地) - ?? 自动裁剪 —— 自动去掉透明边缘 - ?? 网格排列 —— 精灵图布局可配置 - ?? 抠图 + 校验 —— 按距离阈值去背景,配合 bbox 裁剪、缩放和质量检查 - ?? 动画序列 —— 多帧 walk/jump/attack/idle,保持参考一致 - ??? 视差背景 —— 3 层横版卷轴背景(天空/中景/前景) - ?? 特效生成 —— 子弹、火焰、爆炸、烟雾、火花 - ?? 武器/装备精灵图 —— 枪、剑、护甲、头盔 - ?? 批量生成 —— 一次调用生成多个素材 - ??
展开完整文档(README 剩余 1 节)
dsh-sprite-gen

为 DeepSeek Harness 打造的精灵图生成器,支持 AI 图像生成。

功能

- ?? AI 图像生成 —— 直接用 AI 生成精灵图
- ?? 4 个服务商 —— Gemini Flash、Stable Diffusion、Agnes AI、ComfyUI(本地)
- ?? 自动裁剪 —— 自动去掉透明边缘
- ?? 网格排列 —— 精灵图布局可配置
- ?? 抠图 + 校验 —— 按距离阈值去背景,配合 bbox 裁剪、缩放和质量检查
- ?? 动画序列 —— 多帧 walk/jump/attack/idle,保持参考一致
- ??? 视差背景 —— 3 层横版卷轴背景(天空/中景/前景)
- ?? 特效生成 —— 子弹、火焰、爆炸、烟雾、火花
- ?? 武器/装备精灵图 —— 枪、剑、护甲、头盔
- ?? 批量生成 —— 一次调用生成多个素材
- ?? GIF 导出 —— 把精灵图导出成动图 GIF 预览

支持的服务商

| 服务商 | 模型 | 限制 | API Key |
| Gemini Flash | gemini-2.0-flash-exp | 60/day | Required |
| Stable Diffusion | sdxl | 100/day | Required |
| Agnes AI | agnes-image-2.1-flash | Free forever | Required |
| ComfyUI | sdxl (local) | Unlimited | Not needed |

安装

From GitHub
dsh plugin --profile web add github:randomix777/dsh-sprite-gen

Manual
cd ~/.dsh/profiles/web
pnpm add file:/path/to/dsh-sprite-gen

可用工具

核心工具

| 工具 | 说明 |
| sprite_config | 管理 API key、服务商和默认值 |
| sprite_generate_image | 生成图像 + 转成精灵图 |
| sprite_sheet | 把现有图像处理成精灵图 |
| sprite_cutout | 抠背景并校验 |
| sprite_info | 查看插件信息和配置 |

动画与特效

| 工具 | 说明 |
| sprite_animation_sequence | 按参考图生成多帧动画 |
| sprite_animation_list | 列出可用动画类型 |
| sprite_generate_effect | 生成特效精灵图(子弹、火焰等) |
| sprite_effect_list | 列出可用特效类型 |
| sprite_generate_weapon | 生成武器/装备精灵图 |
| sprite_weapon_list | 列出可用武器类型 |

进阶

| 工具 | 说明 |
| sprite_batch_generate | 批量生成多个 AI 精灵图 |
| sprite_batch_process | 批量处理多张图像 |
| sprite_generate_background | 生成 3 层视差背景 |
| sprite_gif_export | 把精灵图 PNG 导出成动图 GIF |
| sprite_tiled_export | 把精灵图导出成 Tiled 编辑器 JSON |
| sprite_aseprite_import | 把 .aseprite 文件导入成精灵图/帧 |
| sprite_tileset_batch | 把地形图集切成各地形的瓦片变体 |
| sprite_video2dsprite | 从视频抽帧 → 精灵图 + GIF |
| sprite_palette_quantize | 量化到复古调色板(GameBoy、NES、Pico-8 等) |
| sprite_detect | 从 PNG 图集自动识别精灵网格布局 |

角色一致性

| 工具 | 描述 |
| sprite_character_create | 创建持久角色身份(名称、描述、参考图、种子) |
| sprite_character_get | 按 ID 获取角色身份 |
| sprite_character_list | 列出所有已保存的角色身份 |
| sprite_character_delete | 删除角色身份 |
| sprite_character_generate | 生成保持角色一致性的精灵(强度调节、固定种子) |
| sprite_character_sheet | 多视角角色表(正面/侧面/背面),外观保持一致 |
| sprite_character_views | 列出角色表可用的视角类型 |

道具与场景对象

| 工具 | 描述 |
| sprite_generate_prop_pack | 从图集生成并提取一批相关道具(石头、木桶、火把、宝箱……) |
| sprite_extract_prop_pack | 用色键从现有道具图集中提取单个道具 |
| sprite_scene_object | 生成/提取单个可直接用于游戏的场景对象,附带碰撞 bbox 元数据 |
| sprite_scene_object_batch | 从多对象图集中批量提取多个场景对象 |
| sprite_anchor_layout | 从已确认的主帧构建固定比例锚点模板,保证多视角一致 |

地形与平台

| 工具 | 描述 |
| sprite_tileset_batch_qc | 增强版地形瓦片包,支持 edge_policy(isolated/seamless)、对比度 QC、成对 PSNR 变体差异、材质提示 |
| sprite_platform_strip | 可复用的横版卷轴平台条带(左/中/右端盖),附带碰撞元数据 |

预览

| 工具 | 描述 |
| sprite_preview_list | 列出最近生成的精灵输出,含路径与时间戳 |
| sprite_preview_image | 读取本地图片文件,返回 base64 data URL 供客户端预览 |

用法示例

生成带动画的角色

// 1. Generate base character
sprite_generate_image({
prompt: "female survivor pixel art character, idle pose, detailed 32-bit pixel art",
provider: "agnes",
width: 1024, height: 1536,
output_path: "./sprites/player_base.png"
})

// 2. Cutout and validate
sprite_cutout({
image_path: "./sprites/player_base.png",
output_path: "./sprites/player_clean.png",
target_width: 512, target_height: 768
})

// 3. Generate walk cycle
sprite_animation_sequence({
sequence: "player_run",
reference_image_path: "./sprites/player_clean.png",
output_path: "./sprites/player_run.png"
})

// 4. Generate jump animation
sprite_animation_sequence({
sequence: "player_jump",
reference_image_path: "./sprites/player_clean.png",
output_path: "./sprites/player_jump.png"
})

// 5. Generate attack animation
sprite_animation_sequence({
sequence: "player_shoot",javascript
reference_image_path: "./sprites/player_clean.png",
output_path: "./sprites/player_shoot.png"
})

生成特效 javascript // 列出可用特效
sprite_effect_list()

// 生成子弹特效
sprite_generate_effect({ effect: "bullet_trail", output_path: "./effects/bullet.png" })
sprite_generate_effect({ effect: "bullet_impact", output_path: "./effects/impact.png" })
sprite_generate_effect({ effect: "fire_explosion", output_path: "./effects/explosion.png" })

生成武器 javascript // 列出武器
sprite_weapon_list()

// 生成武器精灵图
sprite_generate_weapon({ weapon: "assault_rifle", output_path: "./weapons/rifle.png" })
sprite_generate_weapon({ weapon: "pistol_9mm", output_path: "./weapons/pistol.png" })

批量生成 javascript // 一次生成多个角色
sprite_batch_generate({
provider: "agnes",
items: [
{ prompt: "female survivor pixel art", output_path: "./sprites/female.png" },
{ prompt: "male raider pixel art", output_path: "./sprites/raider.png" },
{ prompt: "zombie enemy pixel art", output_path: "./sprites/zombie.png" },
]
})

视差背景 javascript
sprite_generate_background({
character_prompt: "post-apocalyptic survivor in wasteland",
character_image_url: "https://example.com/character.png",
provider: "agnes"
})

导出为 GIF javascript // 把精灵图 PNG 转成动态 GIF
sprite_gif_export({
image_path: "./sprites/player_walk.png",
output_path: "./sprites/player_walk.gif",
fps: 12,
grid_cols: 4,
grid_rows: 1
})

ComfyUI(本地 SD) javascript // 确保 ComfyUI 已在 http://127.0.0.1:8188 上运行
sprite_generate_image({
prompt: "pixel art character sprite",
provider: "comfy",
width: 512, height: 512
})

配置 javascript // 设置 Agnes API key
sprite_sprite_config({
action: "set_key",
provider: "agnes",
api_key: "your_key_here"
})

// 切换默认服务商
sprite_sprite_config({ action: "set_provider", provider: "agnes" })

// 列出服务商
sprite_sprite_config({ action: "list" })

Godot 集成

1. 把生成的 PNG 导入你的 Godot 项目
2. 添加 SpriteFrames 节点
3. 新建资源,导入 PNG
4. 在检查器中启用 Region
5. 把 Region Rect 设为单个单元格尺寸
6. 把 H Frames 和 V Frames 设为网格尺寸

环境要求

- Node.js >= 18
- Python 3.8+
- Pillow + NumPy
bash
pip install Pillow numpy

开发 bash

安装依赖

npm install

构建客户端 bundle

npm run build-client

测试

node scripts/validate.mjs

打包发布

npm pack

许可证

MIT
预览分享卡片长什么样 ↓randomix777/dsh-sprite-gen
分享 · DeepSeek Harness Hub
randomix777/dsh-sprite-gen

用 AI 生成游戏精灵图、动画序列与特效素材

回到顶部