TinyLab 是一个极轻量级的本地端 AI 工具箱与 API 代理引擎。它以单二进制交付(解压即用、零外部依赖、极低内存占用),在提供 OpenAI ChatCompletions、Responses、Anthropic 协议兼容代理与多 Key 轮询功能的同时,方便手中有多 Key、多公益站的用户无需部署庞大的项目。通过模型组合(Combo)与快速切换(QuickSlot)设计,用户可以轻松在多个模型间实时切换,而客户端使用端仅需配置几个对应的快速切换模型 ID 即可。
同时,TinyLab 深度集成了多模式的 Playground(支持 AI 联网检索、图像生成、流式对话、一对多模型测试、多模型自动碰撞群聊)、提供详细的请求记录与 Debug 审计、整合音视频下载器(yt-dlp)、多媒体画廊(图片/漫画浏览器与视频播放器)以及交互终端与系统实时监控等功能。
- 多 Key 轮询与退避:支持
fill-first(按优先级填充)与round-robin(粘性轮询)策略,提供指数退避冷却、429 日配额自动锁定与 per-model 独立锁机制。 - Provider 管理:支持动态增删改 Provider、密钥批量导入、连通性测试与独立模型映射。
- 协议兼容与前缀路由:OpenAI Chat / Responses / Anthropic / NVIDIA NIM 原生兼容,支持带前缀自动路由解析(如
ms/deepseek-chat)。
- 核心 Metrics 仪表盘:实时展示 Total Requests (总请求数)、Success Rate (成功率)、Avg Latency (平均延迟) 与 Token 用量(Input / Output / Total)。
- Top Models 请求趋势图 (Request Trends):提供最近 4 小时 (16 个 15 分钟时间桶) 的各模型请求分布趋势折线/柱状图。
- Quota & Rate Limit 监控:实时监控处于 429 锁定或退避冷却中的 Key / Provider / Model,显示精确到秒的退避倒计时与 CST 00:05 配额解锁状态。
- Recent Requests 深度审计:流式推送最近请求记录(状态、Provider、模型别名 Alias、延迟/TTFT 首包耗时、Token 消耗)。点击状态点可唤起 Request Detail 弹窗,审计原始 Request Payload、Headers、Response 状态、回复内容以及 AI 思考过程 (Reasoning / Thought Process)。
- 本地缓存:自动在本地
localStorage保持最近 200 条请求记录,刷新页面数据不丢失。
- Normal 模式:支持 1~4 窗口自由分割,对多个模型并行发起对话,对比回复延迟、生成速度与 Token 用量。
- Search 模式:AI 联网检索合成模式。自动意图提取 → 调用 AnySearch 检索 → 左屏展示策略与 Raw 抓取结果、右屏流式合成 Synthesized 回复,并支持 Markdown 结构自动修复与删除单条 Search 历史。
- Image 模式:AI 图像生成与创作控制台,支持画质比例预设管理与多尺寸切换。
- Auto (AutoChat) 模式:多模型自动群聊与碰撞测试。设定角色与主题后,多个 AI 自动在多窗口间轮流对话与辩论。
- 基于
yt-dlp与ffmpeg驱动,支持单链接解析与播放列表批量下载。 - 支持最高画质选择、仅提取音频、并发分片下载、代理设置、缩略图预览与任务队列生命周期管理。
- 下载完成的视频可以直接在Gallery中打开播放
- 图片与漫画浏览器:支持单图/多图拖拽与粘贴、本地文件夹及多层 Zip 压缩包秒解解析,采用自然段排序(Natural Segment Path Order)。
- 视频播放器:支持状态感知连贯播放(State-Aware Continuity)与视频预览。
- 分屏与多模式:支持独立 Sub-Panel 左图右视频双屏 (
D)、全屏黄金比例自适应排布 (F)、媒体模式切换 (M) 与直属计数目录树 (T)。 - 极简加载:支持从文件管理器拖入或者直接复制黏贴到Gallery中,会自动分流图片和视频到各自的列表里
- Monitor:实时流式运行白名单监控命令(如
nvidia-smi -l 1),结果内嵌于控制台。 - Terminal:Debug 模式下提供完整 PTY 交互式终端(xterm.js + WebSocket + ConPTY/PTY),支持 vim、Ctrl+C 与 Tab 自动补全。
TinyLab 提供了丰富的键盘快捷键支持,其中全局、Playground 及 Gallery 的核心快捷键均支持在 Settings → Shortcut Settings 页面中进行自定义重新绑定(预设存储于内存,仅覆盖项写入 config.yaml)。
| 快捷键 | 默认绑定位 | 功能说明 |
|---|---|---|
F1 |
F1 |
快速切换到 Usage (实时统计与用量监控) 页面 |
F2 |
F2 |
快速切换到 Settings (配置、Provider 与 Combo 管理) 页面 |
F3 |
F3 |
快速切换到 Console (日志、Monitor 与 Terminal) 页面 |
F4 |
F4 |
快速切换到 Playground (多模型对话与 AI 测试) 页面 |
F5 |
F5 |
快速切换到 Download (视频/音频下载管理器) 页面 |
F6 |
F6 |
快速切换到 Gallery (图片/漫画/视频画廊) 页面 |
1 ~ 9 |
1 ~ 9 |
唤起 QuickSlot #1 ~ #9 模型选择悬浮弹窗并循环切槽 |
f |
f |
切换网页全屏 / 全屏视图模式 |
Escape |
Escape |
安全关闭 TinyLab 服务进程 (仅在无弹窗时触发) |
| 快捷键 | 默认绑定位 / 类型 | 功能说明 |
|---|---|---|
Enter |
Enter (可自定义) |
单模型对话主输入框发送消息 (!Shift 换行) |
Ctrl+Enter |
Ctrl+Enter (可自定义) |
保存并应用已修改的历史对话消息 |
Escape |
Escape (可自定义) |
取消历史消息编辑状态 |
Enter |
Enter (可自定义) |
多模型自动群聊输入框发送消息 |
Alt + ~ |
模式快捷键 | 聚焦输入框:快速将光标聚焦到底部的 Prompt 输入文本框 |
Alt + 1 ~ 4 |
模式快捷键 | 切换模式:1-Normal (多模型对话), 2-Search (联网检索), 3-Image (生图), 4-Auto (群聊碰撞) |
Alt + C |
模式快捷键 | 清空聊天:一键清空当前模式下的会话历史记录 (Clear Chat) |
Ctrl + 1 ~ 4 |
模式快捷键 | 切换屏数:一键切换 Playground 显示 1 ~ 4 个分屏窗口屏数 |
Shift + 1 ~ 4 |
模式快捷键 | 切换焦点:快速将活动编辑焦点切换到第 1 ~ 4 窗口(打字时自动放行) |
| 快捷键 | 默认绑定位 / 类型 | 功能说明 |
|---|---|---|
d |
d (可自定义) |
切换视图:切换单屏 (Single View) / 左图右视频双屏 (Dual View) |
m |
m (可自定义) |
切换媒体模式:切换图片模式 (Picture Mode) / 视频模式 (Video Mode) |
Tab |
Tab (可自定义) |
切换焦点:双屏对比时在左/右焦点侧之间切换 Focus |
← / → |
ArrowLeft / Right (可自定义) |
切换上张 / 下张图片(同义键: PageUp / PageDown / Space) |
↑ / ↓ |
ArrowUp / Down (可自定义) |
切换上一个 / 下一个文件夹或子目录 |
a |
a (可自定义) |
自动播放:开启/关闭图片/视频自动播放 |
f |
f (可自定义) |
全屏模式:切换网页全屏 / 原生全屏 |
t |
t (可自定义) |
目录树面板:展开/收起直属计数层级目录树 |
c |
c (可自定义) |
清空筛选:清空侧边目录树的当前选中筛选条件 |
Escape |
Escape (可自定义) |
退出全屏:退出全屏视图模式(同义键: Enter) |
Delete |
页面管理 | 标记当前项为待删除 / 审核模式下 Toggle 勾选 |
Shift + Delete |
页面管理 | 弹出确认框:一键彻底删除整个 ZIP 归档包 |
Ctrl + Delete |
页面管理 | 弹出确认框:一键彻底删除当前单张图片文件 |
1 ~ 9 |
视频播放激活 | 快速设置音量 (11% |
← / → |
视频播放激活 | 快退 / 快进视频 (全屏模式 5 秒 / 普通页面 10 秒) |
↑ / ↓ |
视频播放激活 | 音量 +/- 10% (全屏) 或 切换上一个/下一个视频 (普通页面) |
Space |
视频播放激活 | 播放 / 暂停视频 |
- QuickSlot 悬浮选择弹窗:
1~9:移动高亮焦点至对应序号模型(并重启 1 秒自动关闭计时器);↑/↓:上下移动高亮焦点(取消自动关闭);+或=:直接打开模型导入搜索弹窗;Enter:确认选中焦点模型并设为 Active;Delete:从槽位中移除焦点模型;Escape或 右键点击背景:关闭悬浮弹窗。
- QuickSlot 模型导入搜索弹窗:
↑/↓:模型列表中逐项移动高亮焦点;PageUp/PageDown/Home/End:模型列表按页翻页或跳转至首尾项;Space:勾选 / 取消勾选当前高亮模型;Enter:确认导入所有选中模型;Tab/Shift+Tab:在搜索框、全选、反选、关闭、添加按钮与列表之间循环焦点。
- 全局通用 Modal / 弹窗:
Escape:关闭当前最顶层 Modal 弹窗(如设置/代理/端口/下载日志/密码等);Tab/Shift+Tab:弹窗内焦点陷阱 (Focus Trap) 循环捕获;←/→/↑/↓:在弹窗底部按钮组之间切换高亮焦点;Enter:触发当前高亮按钮的点击事件(无高亮时触发.btn-primary确认按钮)。
Download 功能依赖 yt-dlp 抓取与 ffmpeg 音视频转码工具:
- yt-dlp:下载
yt-dlp.exe或yt-dlp二进制放至系统PATH或在Settings → Download Settings中指定路径。 - ffmpeg:下载
ffmpeg可执行文件放至系统PATH或在设置中指定路径。
在任意 OpenAI 兼容客户端(如 NextChat、Cherry Studio、ChatBox、Cursor、VS Code Continue、Claude Dev / Cline 等)中,只需配置 TinyLab 的本地服务入口:
- API Base URL / Endpoint:
http://localhost:8080/v1(端口见 Settings 页面,默认8080) - API Key:填入任意字符串即可(如
sk-local;若在 Settings 中启用了本地密码保护,请填入您设置的密码)。 - AI First: 不会设置的可以直接委派AI代为设置,因为各个软件的要求各自有些区别,可以直接贴各个软件的仓库地址,然后告诉AI TinyLab的端点,因为是兼容+透传,AI会自动帮你搞定一切的
- OpenCode示例
- 模型名称格式:可以自定义为任何名称,比如
Planner、Scout...Builder(或简写数字1,2...9)。 - 优势:客户端配置固定为
Scout后,您只需在 TinyLab 界面或按数字键切槽,即可实时、无缝地更换客户端背后的实际物理模型/Combo,客户端无需修改任何设置!
- 模型名称格式:填入 Combo 的名称(如
DeekSeekV4Flash或GLM-5.2), 可以聚合OpenCode、Nvidai、ModelScope、SenseNova等塞博活佛提供的免费模型。 - 优势:触发 Combo 内的多模型自动调度逻辑(如故障备用转移
fallback、免费优先greedy-squirrel),由 TinyLab 自动完成上游节点选择与重试。
- 带前缀形式:不需要用户自己填写,在provider的详情卡里可以直接点击模型ID,复制到剪贴板里,直接黏贴即可
- 特别感谢LinuxDO社区佬友们的支持