-
Notifications
You must be signed in to change notification settings - Fork 0
Ask and LiveChat
Aafff623 edited this page Aug 21, 2026
·
1 revision
本站有基于 MaxKB 的站点问答能力,包含独立 /ask/ 页面与桌宠 LiveChat 浮窗。它是本站二次开发功能,官方 Firefly 不提供。
| 项 | 当前事实 |
|---|---|
| 页面开关 | siteConfig.pages.ask = !import.meta.env.PROD |
| DEV |
/ask/、桌宠浮窗、/api/ask 可启用 |
| Production | 默认关闭;页面跳 404,API 返回 404,浮窗不挂载 |
| 浏览器请求 | 只访问同源 /api/ask/,不直连 MaxKB |
| 密钥 |
MAXKB_ACCESS_TOKEN 只在服务端读取,不进客户端 bundle |
生产关闭是当前安全边界,不是故障。要上云先完成 docs/ask-maxkb-cloud-plan.md,再显式调整页面开关和环境变量。
独立页 /ask/
|
桌宠浮窗 | |
|---|---|---|
| UI | HeroUI Pro React chat island | Astro widget |
| 入口 | 导航「我的」→ 问答 | 点击桌宠 |
| 组件 | src/components/ask/AskChat.tsx |
src/components/widget/LiveChatWidget.astro |
| 挂载 |
src/pages/ask.astro 的 client:load
|
MainGridLayout.astro 在 Ask 开启时挂载 |
| 后端 | 同源 /api/ask?action=…
|
同源 /api/ask?action=…
|
关掉桌宠不会影响独立 /ask/,但浮窗没有触发入口。
src/pages/api/ask.ts 负责:
action=session → MaxKB 匿名鉴权 + 创建会话
action=retrieve → 本站文章检索,no-store
action=chat → 组装站内命中与人设 Prompt,SSE 透传 MaxKB
同源代理解决 CORS、Private Network Access 和浏览器直连 localhost 的问题,也避免把访问令牌下发给客户端。/api/* 在 Vercel、EdgeOne 缓存策略里都禁止缓存。
.env 只在本地使用,勿提交:
MAXKB_ACCESS_TOKEN=
# MAXKB_API_BASE=http://127.0.0.1:8080/chat/api默认 API base 是 http://127.0.0.1:8080/chat/api。本地出现 502 时先确认 Docker Desktop 与 MaxKB 容器;出现 503 时确认 token;生产返回 404 则符合当前开关。
- 页面与生产开关:
src/config/siteConfig.ts的pages.ask。 - 主聊天 UI / 人设:
src/components/ask/*。 - 桌宠浮窗:
src/components/widget/LiveChatWidget.astro。 - 检索与 Prompt:
src/utils/ask-retrieve.ts、ask-personas.ts。 - 同源代理与 SSE:
src/pages/api/ask.ts。