Wiki AI 助手
First Post:
Last Update:
Last Update:
🤖 Wiki AI 助手
基于 Wiki 知识库的 AI 对话助手
新增说明
- 主站是真正给用户访问的
https://mornikar.github.io/Mornikar/。 https://mornikar-ai-wiki.pages.dev不是主站,而是专门承接 Wiki AI 对话请求的 Cloudflare Pages 代理域名。- 主站前端会把浏览器里的对话请求转发到
https://mornikar-ai-wiki.pages.dev/api/v2/chat/completions。 - 完整架构、发布分工、自动同步规则、后续 AI 接手检查顺序,见:
WIKI_AI_ARCHITECTURE.md
功能特性
- 📚 知识库问答 — 基于 Wiki 内容进行 RAG 检索增强回答
- 🔗 多接入方式 — 支持 Dify / 在线 API / 直连模型
- 🎨 主题风格 — 与网站一致的 Arknights 风格设计
- ⚙️ 灵活配置 — 支持自定义 System Prompt
接入方式
三种模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
| Dify | 连接本地 Dify RAG 应用 | 知识库检索增强 |
| 在线 API | Cloudflare Worker 代理访问远程 API | 公网访问内网模型 |
| 直连模型 | 直接连接本地 LM Studio | 本地开发测试 |
Dify 模式
- Dify 本地部署
- 配置 RAG 知识库应用
- 提供 API 地址和应用密钥
在线 API 模式
- 通过 Cloudflare Worker 代理
- 解决跨域问题
- 支持 OpenAI 兼容 API
- 默认接口为讯飞 MaaS OpenAI 兼容
/v2,浏览器侧会自动经dify-proxy的/v2路由转发
线上可用性与远端排障
- Wiki AI 是静态站前端直连线上 API 代理,不依赖站长本地电脑、localhost 服务或本机 LM Studio。线上默认链路为:浏览器 ->
https://mornikar-ai-wiki.pages.dev/api/v2/chat/completions-> 讯飞 MaaS OpenAI 兼容接口。 - 浏览器不能直接请求讯飞 MaaS 原始接口;该接口会触发 CORS 限制,所以线上必须经过 Cloudflare Pages Function 或其他可跨域代理。
- 如果本地电脑可对话,但远端手机/异地 PC 提示“当前网络无法连接 Wiki AI 线上代理”,优先检查该网络是否能访问
mornikar-ai-wiki.pages.dev。 - 旧版
workers.dev/vercel.app代理在部分移动网络不可达;当前默认改用 Cloudflare Pages 分配域名。如果个别网络仍不可达,需要给 Cloudflare Pages 项目绑定可访问的自定义域名,再把前端默认代理域名同步替换。 - 新访客默认使用在线 API 模式、
wiki-visitor用户名、默认 MaaS endpoint/key/model;旧版默认 MaaS/Worker/Vercel 配置会随settingsVersion自动迁移到当前可用默认值。
Cloudflare Pages 代理方案
- 仓库内置 Cloudflare Pages Function:
functions/api/v2/chat/completions.js,当前部署地址为https://mornikar-ai-wiki.pages.dev/api/v2/chat/completions。 - Cloudflare Pages 代理链路为:浏览器 ->
https://mornikar-ai-wiki.pages.dev/api/v2/chat/completions-> 讯飞 MaaS OpenAI 兼容接口。 - 前端代理根地址配置为
https://mornikar-ai-wiki.pages.dev/api,代码会自动拼接/v2/chat/completions。 - Cloudflare Pages Function 可继续使用浏览器传入的
Authorization,也支持在 Cloudflare Pages 环境变量中配置MAAS_API_KEY。如果后续要隐藏前端 API Key,可清空前端默认 key,并在 Cloudflare Pages Project Settings -> Environment Variables 中添加MAAS_API_KEY。 *.pages.dev通常比*.workers.dev更容易被手机网络访问,但不是百分百保证;如果个别网络仍不可达,需要给 Cloudflare Pages 项目绑定自定义域名。
直连模式
- 连接本地 LM Studio
- 需要启用 “Enable API”
- 适合开发调试
使用方法
1. 打开 AI 助手
点击页面右下角的 🔵 蓝色按钮,或访问 /Mornikar/login/ 页面。
2. 配置接入方式
在登录页面选择接入模式:
- Dify — 连接本地知识库
- 在线 API — 通过代理访问远程模型
- 直连模型 — 直接连接本地模型
3. 自定义 Prompt
在设置面板中修改 System Prompt,自定义 AI 的角色和行为。
4. 开始对话
配置完成后,在对话框中输入问题即可获得回答。
TTS 文字转语音架构
- Live2D 工具栏和 Wiki AI 共用
localStorage.waifu_tts_settings,字段为enabled和voice。 - 音色切换后会派发
waifu-tts-settings-changed事件,Live2D 对话框和 Wiki AI 都必须监听该事件,并取消旧朗读队列。 - 每次真正调用
speechSynthesis.speak()前,代码都要重新读取waifu_tts_settings,再用当前voice匹配speechSynthesis.getVoices(),避免切换成功提示使用新音色、AI 回复仍使用旧音色。 - 音色来自当前浏览器/系统的 Web Speech API 本机 voice 列表,不来自服务器,也不由 IP 决定。Edge Neural 预设(晓晓、云希、云扬、云夏、云健、小艺)只会在当前设备真实存在时显示为可选;手机、非 Edge 浏览器或没有 Edge 语音库的系统会自动回退到本机可用中文音色。
- 不存在的 Edge 预设会置灰并提示“当前设备没有这个 Edge 音色”,不会再保存成“切换成功”。弹窗会额外展示“本机可用”中文音色,远端用户应优先选择这些真实存在的声音。
- Chrome 在
speechSynthesis.cancel()后立刻speak()可能吞掉后续播放,因此清空队列后保留短延迟再创建新的SpeechSynthesisUtterance。 - 远端发布 TTS 相关修复时,需要同步刷新
/js/wiki-chat.js、/live2d/live2d.js、/live2d/Core/waifu-tips.js、/live2d/chatCore/waifu-chat.js的版本参数,避免 GitHub Pages 或浏览器缓存继续加载旧逻辑。
System Prompt
默认 Prompt
1 | 你是一个基于 Wiki 知识库的 AI 助手,擅长回答关于编程、AI、LLM、RAG 等技术问题。请用中文回答,保持简洁准确。 |
自定义配置
支持在设置面板中修改:
- 自定义角色设定
- 特定领域知识注入
- 回复风格约束
常见问题
AI 助手没有出现?
- 检查浏览器 Console 是否有报错
- 确认 JS 文件是否正确加载
- 检查网络连接
API 请求失败?
- 确认对应服务是否运行
- 检查 API 地址和密钥配置
- 查看浏览器 Network 面板错误信息
如何关闭?
在设置面板中选择关闭,或联系网站管理员配置 _config.yml。
📝 在线内容管理 CMS
博客内容可通过在线 CMS 管理,访问 /Mornikar/admin/ 即可打开。
登录方式
| 方式 | 说明 |
|---|---|
| GitHub OAuth 一键登录 | 点击「GitHub 一键登录」按钮,授权后自动登录 |
| 手动输入 Token | 生成 GitHub Personal Access Token(需 repo 权限),粘贴登录 |
功能
- 📂 集合浏览 — 按分类浏览文章(AIGC / 学习随笔 / 学习笔记 / 机器学习 / 云环境)
- ✏️ Markdown 编辑 — 在线编辑文章内容,支持实时预览
- 🏷️ 标签管理 — 添加/删除标签
- 📷 图片上传 — 拖拽上传图片到 GitHub 仓库
- 📄 新建文章 — 在指定分类下创建新文章
- 🗑️ 删除文章 — 确认后删除(不可撤销)
架构
1 | 浏览器 → Cloudflare Worker(统一 Worker v4) |
💡 所有 API 请求通过 Cloudflare Worker 代理,Token 仅存储在浏览器本地。