字帖生成器 v3.0.7 · AI 组词补齐 / 拼音纠错 / 全量检查(18 家内置引擎 + 自定义引擎 · 自动检测 + 自动优选)
v1.1.0v3.0.4v3.0.6字帖的 AI 辅助功能提供组词补齐、拼音纠错与全量检查三项能力,支持 18 家内置大模型引擎,并可在 AI 控制台里添加任意自定义引擎(唯一注册表:src/modules/aiProviders.js):
sk- 开头、火山引擎豆包的 ark- 开头),点击「+ 添加」| 引擎 | Key 形状 | 是否免费 | 申请地址 | 备注 |
|---|---|---|---|---|
| DeepSeek | sk- 开头 |
付费但便宜 | platform.deepseek.com | Key 为 sk- 开头(该前缀被多家共用) |
| 火山引擎豆包 | ark- 开头 |
有免费额度 | console.volcengine.com/ark | 全量检查自动使用 turbo 强模型 |
| 智谱 GLM | 形如 <32位十六进制>.<密钥段> |
GLM-4-Flash 免费 | open.bigmodel.cn | GLM-4-Flash 免费 |
| 月之暗面 Kimi | sk- 开头 |
付费(低价档) | platform.moonshot.cn | Key 与 DeepSeek 同前缀,需探测消歧 |
| 硅基流动 | sk- 开头 |
有免费模型 | cloud.siliconflow.cn | Key 为 sk- 开头,需探测消歧 |
| 阿里云百炼(兼容模式) | sk- 开头 |
新用户 token 额度 | bailian.console.aliyun.com | Key 为 sk- 开头,需探测消歧 |
| OpenRouter | sk-or-v1- 开头 |
有 :free 免费模型 |
openrouter.ai/keys | 专属前缀;/models 公开,不能用于验 Key |
| MiniMax | JWT 形式(eyJ 开头) |
付费(低价档) | platform.minimaxi.com | 模型 ID 未核实 |
| 阶跃星辰 | 无稳定前缀特征 | 付费(低价档) | platform.stepfun.com | Key 形状未核实,无法自动识别,需手动指定引擎 |
| 百度千帆 v2 | bce-v3/ALTAK-… |
有免费额度 | console.bce.baidu.com/qianfan | Key 形状未核实 |
| 腾讯混元 | 无稳定公开特征(可能为 sk-) |
hunyuan-lite 免费 |
console.cloud.tencent.com/hunyuan | Key 形状未核实,需手动指定引擎 |
| Google Gemini 未验证 | AIzaSy 开头 |
有免费额度 | aistudio.google.com/app/apikey | 未验证(浏览器跨域可能受限):CORS 未实测(沙箱网络受限),不得视为可用 |
| Groq 未验证 | gsk_ 开头 |
有免费额度 | console.groq.com/keys | 未验证(浏览器跨域可能受限):CORS 未实测(沙箱网络受限),不得视为可用 |
| Agnes AI 实测可用 | sk- 开头 |
免费(agnes-3.0-flash) | agnes-ai.com | 已实测:/models 与 /chat/completions 均返回 Access-Control-Allow-Origin: *,浏览器可直连;agnes-3.0-flash 免费且支持 JSON 模式。Key 为 sk- 开头(与 DeepSeek 等共用),需探测消歧 |
| ModelScope 魔搭 实测可用 | ms- 开头 |
免费(每日 2000 次) | modelscope.cn | 已实测可跨域直连;模型 ID 为「组织/模型」形式(如 Qwen/Qwen3.8-Flash-Next)。注意:现有可用模型均为推理型,真实组词负载明显偏慢(实测 4 字约 100–120 秒),适合作为备用引擎 |
| AMD Radeon Cloud 未实测 | 无稳定前缀 | 8 款 Public Free Model API | —(Base URL 已内置:developer.amd.com.cn/radeon/api/v1) |
免费模型最多的一家(GLM-5.3-Flash / Qwen3.8-27B / DeepSeek-V4-Flash-0731 / MiniCPM5-2B 等)。⚠ CORS 状态为 unverified(本机无 Key,未实测),因此不会进入「形状未知」时的自动扫描候选,需在 AI 控制台里手动指定引擎;官方共享端点按 Key + IP 限流,建议选轻量款 |
| 商汤 SenseNova 未实测 | 无稳定前缀 | 有低价档(计费未核实) | —(Base URL 已内置:token.sensenova.cn/v1) |
注册表按命名惯例把 *-flash-lite / *-lite 记为低价档、*-pro 记为付费,宁可低估(避免自动优选把付费模型当免费用);无 /models 零 token 快路径,探测走 3 token 能力校验,需手动指定引擎 |
| APINEX 实测不可用 | sk-apx 开头 |
— | apinex.bond | 已实测:浏览器直连不可用——响应缺少 Access-Control-Allow-Origin(预检 204 亦无),真实 Chromium 中 fetch 直接失败;且账户提示余额不足。保留条目仅为让 sk-apx 形状被唯一识别并给出准确诊断,不参与自动优选 |
tier 字段(free 永久免费 / cheap 免费额度或低价 / paid 付费)。标注「实测」的条目为 2026-09-18 以 curl + 真实 Chromium 跨域 fetch 双重验证的结论;标注「未实测」的两条(AMD Radeon Cloud / 商汤 SenseNova)是 v3.0.6 随注册表一并带入的,本机无 Key、未做过在线核实,其 CORS 状态如实记为 unverified 而不谎报 verified。其余模型 ID 多数未经在线核实,实际可用性以「🔍 检测全部 Key 可用性」的探测结果为准。这 18 家之外,你还可以在 AI 控制台里添加任意自定义引擎(见 3.6)。
讯飞星火未收录:实测其端点 OPTIONS 返回 403、POST 返回 401,且响应不带 Access-Control-Allow-Origin,浏览器直连不可用,故本应用刻意不支持。
为什么有的引擎「不可用」也保留条目:形状唯一的 Key(如 sk-apx)若不入表,会被 sk- 家族的旧前缀语义误判为 DeepSeek,从而发起一串注定 401 的探测。入表后应用能立刻识别归属并给出「可能是浏览器跨域(CORS)限制」的准确诊断。
DeepSeek · sk-1234…abcd(引擎 + Key 前 4 后 4 打码)ai_active_key_id,无需保存)👁 眼睛按钮可切换显示 / 隐藏,🗑 按钮删除当前 Key📂 从文件导入 Key(设置面板 AI 配置区内).txt / .md / .csv / .docx(含 Word 文档,自动解析 document.xml)pattern 正则提取文件中的 Key(sk- / ark- / sk-or-v1- / sk-apx / ms- / AIzaSy / gsk_ / bce-v3/ALTAK- 等),去重后全部入库ark- → 火山引擎豆包,sk-or-v1- → OpenRouter,sk-apx → APINEX,ms- → ModelScope 魔搭,AIzaSy → Google Gemini,gsk_ → Groqsk- 前缀被 DeepSeek / 月之暗面 Kimi / 硅基流动 / 阿里云百炼 / Agnes AI共用,仅凭字符串无法判定路由;应用按候选引擎逐个探测、命中即止,并把命中的引擎回写保存,用户无需手动选择/models」端点做免费扫描,避免浪费额度localStorage.setItem('ai_model_override_<引擎ID>', '正确的模型名') 换模型,无需重新打包(v3.0.4 起按引擎作用域;旧的全局键 ai_model_override 仅对 DeepSeek / 火山引擎生效)设置中心新增该按钮,逐个探测已保存的 Key 并显示徽章结果。探测分两阶段:
GET /models 鉴权快路径 —— 仅对「该端点确实校验鉴权且带 CORS 头」的引擎启用,不消耗额度max_tokens: 3 的 chat 能力探测,校验应用真正要发送的那个模型 ID;若引擎不支持 response_format: json_object,会自动去掉该字段重试一次并降级记录。引擎拒绝 response_format 有两种方式,都会被处理:(1) 规范的 400/422 + 错误文本;(2) 不合规的 200 但响应体退化(如 {"choices":null},实测 ModelScope 的 Qwen/Qwen3.8-Flash-Next 在 3 token 下即如此)—— 后者若不重试,会把真实可用的引擎误报为「走了代理或 baseUrl 配置错误」| 徽章 | 含义 |
|---|---|
✓免费 |
探测成功,且使用的是免费档(tier: free)模型 |
✓可用 |
探测成功(付费 / 低价档模型) |
⚠限流 |
HTTP 429,请求过于频繁;Key 仍然可用,不会被标记为失效 |
⚠不可达 |
网络或浏览器跨域(CORS)限制导致无法连接;文案会明确提示「可能是跨域限制」 |
✗Key无效 |
HTTP 401,Key 无效或已过期 |
✗额度耗尽 |
HTTP 402 / 403,额度不足或无该模型权限(歧义状态,不判定为 Key 无效) |
✗模型不存在 |
HTTP 404,模型 ID 不存在或未开通,需在注册表中更换模型 |
0.30×免费度 + 0.20×速度 + 0.25×JSON稳定性 + 0.25×历史成功率 − 额度风险,并列时按「延迟升序 → 引擎优先级 → 创建时间」决胜。
slow 标记(仅对实测过的模型设置),标记后该项不再由失真的探测延迟给分,避免自动优选选中"探测快、实际慢"的引擎。
设置中心 AI 区顶部新增「⚙ AI 控制台(模型设置)」入口,旁边一行实时摘要显示「N 个 Key · M 个已配置引擎 · 共 18 个引擎可选」。控制台是双栏 master-detail:左侧引擎导航(已配置在前、内置在后,带状态点),右侧是该引擎的 Key 列表、模型列表与参数表单。
「+ 添加供应商」可挂一个任意 OpenAI 兼容或 Anthropic 端点——注册表里没有的也能用:
| 字段 | 说明 |
|---|---|
| API Key | 必填;不得含空格,至少 8 位,否则当场拒绝(不会带着脏数据打到线上端点) |
| Base URL | 必填,例如 https://your-gateway.example.com/v1;应用会拼接协议默认路径(openai → /chat/completions,anthropic → /v1/messages)。别把 chat 路径写进 Base URL——创建入口与体检入口共用同一份识别正则,创建时就会被拦下,避免出现「创建时说合法、体检时说非法」的自相矛盾 |
| 模型 ID | 必填,至少一个;可加多个,其中标为「全量检查用」的会在深度校验时自动升档 |
| 协议 | openai(Authorization: Bearer,system 走 messages 数组)或 anthropic(x-api-key + anthropic-version,system 是顶层字段、max_tokens 必填、响应体是 content[]、不接受 response_format) |
| 请求参数 | max_tokens / temperature / top_p 以及任意附加 JSON。可设置,也可留空用默认值——留空时按内置默认发(fast 2048 / 全量 4096 token,temperature 0.1),且不会发出非法字段 |
.txt / .md / .csv / .json / .docx)与「连通性体检」,体检复用的是与真实调用完全相同的请求形状,因此体检通过即代表这条链路真的能跑ai_zuci_cache_v1)自动跳过,避免重复消耗;如需重查可执行 localStorage.removeItem("ai_zuci_cache_v1") 清缓存在 AI 控制台里选「保存方式」,四档语义明确、互斥:
| 保存方式 | Key 存哪 | 刷新后 | 关标签页后 | 安全性 |
|---|---|---|---|---|
| 不保存(默认) | 只在内存 | 丢失 | 丢失 | ★★★ 磁盘上什么都没有 |
| 记住到本标签页 | 镜像到 sessionStorage(ai_keys_session) |
存活 | 丢失 | ★★ 不出当前标签页 |
| 明文保存在本机 | localStorage['ai_api_keys_plain'] |
存活 | 存活 | ★ 无口令,任何能在本页执行脚本的东西都能读走 |
| 长期记住(口令加密) | localStorage['ai_api_keys_enc'],密文 {v,salt,iv,ct} |
存活 | 存活 | ★★★ PBKDF2(SHA-256, 200000 次迭代) 派生 AES-GCM-256 密钥,口令本身不落盘 |
选择「明文保存在本机」时界面会给出等价强度的警告——便利和安全在这里是直接对立的,应用不替你做决定,但会把代价说清楚。
ai_api_keys / deepseek_api_key)在首次加载时迁入内存,并从磁盘删除(迁移成功才删,幂等)ai_zuci_cache_v1)在本地;探测过程不写这个缓存(体检不污染业务数据)先点「🔍 检测全部 Key 可用性」查看具体原因:✗Key无效 表示 Key 过期,✗额度耗尽 表示余额不足,⚠不可达 表示网络不通或浏览器跨域(CORS)受限。同时确认网络可访问对应引擎的 API 域名。
确保文件内容包含完整的 Key(形状见 3.1 表格,如 sk- / ark- / sk-or-v1- / AIzaSy / gsk_ 开头、前后无截断),支持多行 / 多 Key;docx 需含正文文本(解析 word/document.xml)。
默认使用「自动选择(推荐)」,无需手动切换;如需指定,≥2 个 Key 时在设置面板下拉中选中某个具体 Key 即固定为手动模式,重新选择「自动选择」即回到自动模式。删除活跃 Key 后自动切换到剩余第一个。
这是 v3.0.6 的默认行为(保存方式 = 不保存,只存内存)。想让它活下来:AI 控制台 → 保存方式 → 选「记住到本标签页」/「明文保存在本机」/「长期记住(口令加密)」之一。详见第五节。
AI 控制台 → 选中引擎 → 该 Key 行点删除;或打开设置中心 → 点击 Key 展示框右侧 🗑 删除当前 Key。删掉活跃 Key 会自动切到剩下的第一个;删空则一并清空当前保存方式对应的存储键(ai_api_keys_plain / ai_api_keys_enc / ai_keys_session)。也可用浏览器开发者工具 → Application → Local Storage 手工清。
无该模型权限或额度耗尽,请更换模型(见 3.4 逃生门)或充值;全量检查使用的 Turbo 模型可能需单独开通权限。
用 AI 控制台里的连通性体检(或设置面板的「🔍 检测全部 Key 可用性」)。它发的请求与真实组词调用形状完全一致——同样的端点、同样的鉴权头、同样的 response_format 处理,只是把 max_tokens 压到 3。因此只有真的拿到 chat completion 响应体才判「✓可用」;HTTP 200 但响应体是 HTML(典型是走了代理或 Base URL 配错)会被判为不可用,不会拿 200 糊弄你。