一个零依赖的轻量级 Node.js Web 控制台,调用 Agnes AI Gateway 提供的视频/图像生成能力,专为国内网络环境优化(自带视频反向代理,绕过 storage.googleapis.com 访问限制)。
- 视频生成:调用
agnes-video-v2.0,支持文生视频、图生视频、多图视频、关键帧动画 - 图像生成:调用
agnes-image-2.1-flash,支持文生图、图生图(已修复参数结构以保留原图构图)、构图保留、高密度优化 - AI 聊天:多模型 SSE 流式对话,自动保存历史
- 模型管理:从官方拉取模型列表,自定义默认模型
- 🚀 零依赖:纯 Node.js 标准库,无需
npm install - 🎬 完整视频工作流:异步任务提交 → 5 秒轮询 → 自动重试 → 进度显示状态和百分比 → 视频播放/下载
- 🎨 完整图像工作流:同步生成 → 即时预览 → 本地下载
- 💬 AI 聊天:多模型流式对话,Ctrl+Enter 发送,历史持久化
- 📐 比例与尺寸智能匹配:视频 16:9/9:16/1:1/4:3/3:4,图像 9 种比例预设;支持上传参考图时自动读取并应用原图分辨率,手动调整宽高时自动取消常用尺寸的选中状态。
- 🖼️ 本地图片与视频预览支持:粘贴/拖拽/选择本地图片,自动转 Base64 上送;最近生成历史列表中完美支持视频首帧渲染预览。
- 🌏 国内网络友好:内置
/video-proxy反向代理,破解 GCS 视频被墙问题 - 🔑 API Key 持久化:自动保存到
.env配置文件 +localStorage双重存储,支持旧版key.txt自动迁移 - 🔁 智能重试与进度防回退:视频和图像结果页签切换时,右侧卡片自适应隐藏;轮询区分服务端临时错误(最多 10 次)与网络错误(最多 5 次);当 API 偶发返回简化响应
{"status":"in_progress"}时,进度条保持当前值继续前进,不会回退到 0%
| 文件 | 作用 |
|---|---|
server.js |
基于 http 标准库的本地反向代理 + 静态服务 |
index.html |
单页 Dashboard(CSS / JS 全内联,无框架) |
start.bat |
Windows 一键启动脚本 |
.env |
本地环境变量配置文件,存放 API Key 等敏感信息(已加入 .gitignore) |
config.json |
用户配置(模型列表/默认模型,已加入 .gitignore) |
AI Gateway, Free AI API & AI Applications.md |
Agnes API 官方文档备份 |
- 安装 Node.js ≥ 14(无需任何 npm 包)
- 已获取 Agnes AI Gateway API Key
# 克隆仓库
git clone https://github.com/zhting/agnesAI.git
cd agnesAI
# 启动服务
node server.js
# ─ 或 Windows 用户直接双击 start.bat服务监听 http://127.0.0.1:3000,浏览器打开即可。
在页面 ⚙️ 管理 页填写 API Key 并保存,系统自动保存到本地 .env,下次启动自动回填。
打开高级参数即可看到「画面比例」下拉,支持:
| 比例 | 对应分辨率 |
|---|---|
| 16:9 横屏 | 1280 × 720 |
| 9:16 竖屏 | 720 × 1280 |
| 1:1 正方形 | 1024 × 1024 |
| 4:3 横图 | 1024 × 768 |
| 3:4 竖图 | 768 × 1024 |
| 自定义 | 手动设置 |
选择比例后宽高自动填充,也可随时手动修改。
图像提供 9 种比例预设(1:1 / 3:4 / 4:3 / 9:16 / 16:9 / 9:21 / 21:9 / 2:3 / 3:2),选择后自定义宽高自动填充。
| 模式 | 必填字段 | 说明 |
|---|---|---|
| 文本生成视频 | Prompt | 纯文字描述即可生成视频 |
| 图片生成视频 | Prompt + 参考图 | 让一张静态图动起来 |
| 多图视频 | Prompt + 多张参考图 | 融合多张图的元素生成视频 |
| 关键帧动画 | Prompt + 2 张及以上图 | 首张为起始帧,末张为结束帧,中间自动过渡 |
高级参数:模型 / 比例 / 帧数 / 帧率 / 推理步数 / 随机种子 / 负向提示词。
⚠️ num_frames必须满足8n + 1的格式(如 81、121、161、241、441),且 ≤ 441。
任务提交后页面以 3 秒为间隔轮询进度,完成后在右侧面板自动播放并提供下载按钮。
| 模式 | 说明 |
|---|---|
| 文本生成图像 | 纯文字描述生成图像 |
| 图像生成图像 | 基于原图 + Prompt 做风格化/重绘 |
| 结构/构图保留 | 严格沿用原图构图,重绘内容 |
| 高信息密度优化 | 增强细节,适合电商主图、海报 |
支持在提示词中使用 "the first image" / "the second image" 等自然语言描述多图角色。
任意"参考图片 URL"输入框均支持三种方式注入本地图片(自动转 Base64):
- 点击右侧 📁 按钮选择文件
- 直接在输入框内 Ctrl+V 粘贴(图片或截图)
- 直接拖拽图片文件到输入框
Base64 数据会保留完整的
data:image/xxx;base64,前缀进行上送,以符合agnes-image-2.1-flash等图像模型对于 Data URI 的解析规范。
单文件 HTTP 服务,4 条路由:
| 路由 | 说明 |
|---|---|
GET / 或 /index.html |
返回前端页面 |
GET / POST /api/key |
读 / 写本地 .env 中的 API Key |
GET / POST /api/config |
读 / 写用户配置(模型列表/默认模型) |
GET /video-proxy?url=... |
HTTPS 反向代理 storage.googleapis.com 上的视频(绕墙) |
* /agnesapi* |
反向代理至 https://apihub.agnes-ai.com/agnesapi*,用于视频状态查询(推荐方式) |
* /v1/* |
反向代理至 https://apihub.agnes-ai.com/v1/*,自动注入 Authorization: Bearer {key} |
/v1/* 与 /agnesapi* 代理特点:
- 优先读取请求头
X-Api-Key,缺失时回退本地.env - 自动剥离
?_t=...防缓存参数,避免上游路由异常 - 上游非 2xx 时统一包装成
{error: {message}}JSON 返回
- 无任何框架的单页应用,所有 CSS / JS 内联
- 左右分栏布局:左侧表单,右侧实时预览/结果
- 一级页签:视频 / 图像 / 聊天 / 管理
- 二级页签:根据模式动态显示 / 隐藏参考图字段
- 轮询:
5s间隔;服务端临时错误(如division by zero)重试 10 次;网络错误重试 5 次 - 视频查询优先使用
/agnesapi?video_id=...(推荐方式),无video_id时降级到/v1/videos/{task_id} - API 偶发简化响应
{"status":"in_progress"}时,进度条保持当前值不回退(lastKnownProgress保护) - 视频/图像播放走
/video-proxy中转,避免直接访问 GCS 被墙 - 聊天支持 SSE 流式输出,历史保存至 localStorage
- 不要把
key.txt、.env等含密文件提交到公共仓库。本仓库已通过.gitignore排除 - 服务仅监听
127.0.0.1,默认只在本机可访问 - 若需局域网共享,请将
server.js中server.listen(PORT, '127.0.0.1', ...)的地址改为'0.0.0.0',并自行评估暴露风险
- Agnes AI 官方接口文档
- 仓库内置文档:
AI Gateway, Free AI API & AI Applications.md
MIT