Skip to content

Ask and LiveChat

Aafff623 edited this page Aug 21, 2026 · 1 revision

Ask-and-LiveChat

本站有基于 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.astroclient: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 则符合当前开关。

改动入口

  1. 页面与生产开关:src/config/siteConfig.tspages.ask
  2. 主聊天 UI / 人设:src/components/ask/*
  3. 桌宠浮窗:src/components/widget/LiveChatWidget.astro
  4. 检索与 Prompt:src/utils/ask-retrieve.tsask-personas.ts
  5. 同源代理与 SSE:src/pages/api/ask.ts

相关:Sprite-Pets · Configuration-Overview · Troubleshooting

Clone this wiki locally