科成星球是电子科技大学成都学院第三方公益校园生活百科。
项目组 QQ 群:1027931860
-
Fork该项目并进行Pull Request 或 在该项目内提交Issue。
-
前往项目组QQ群(1027931860)进行留言反馈
-
贡献指南至邮箱reply@cduestc.fun
源仓库:西邮WIKI
项目采用 VitePress 构建。
完整的首次配置、AI 代理执行协议、GitHub Pages 与 Cloudflare Worker 发布流程,见:
pnpm ipnpm run devpnpm build 构建完成后会自动扫描 VitePress 输出目录,生成 sitemap.xml 与 robots.txt,便于百度、谷歌等搜索引擎抓取。站点 <head> 已注入 Open Graph / Twitter 分享卡片元信息,分享任意页面到微信/QQ 时会显示统一的品牌卡片图 /og-image.jpg(约 102 KB)。
复制 .env.example 中需要的配置到 docs/.env.local。AI 服务由站点维护者在构建或部署时选择,页面不会向访客提供切换入口或密钥设置。正式站默认使用 OpenAI 兼容模式:
VITE_OPENAI_PROXY_URL=https://spark-api.kcos.club/v1/chat/completions
VITE_OPENAI_MODEL=generalv3.5VITE_OPENAI_PROXY_URL 指向站点自己的后端代理。代理接收 OpenAI Chat Completions 格式的请求并返回兼容响应;前端支持 SSE 增量输出,上游 API Key、Base URL 等敏感配置必须只保存在后端环境中,不能写入 VITE_* 变量或前端源码。
当前 Worker 使用讯飞 OpenAI 兼容 HTTP 接口作为上游,前端只调用一个标准 POST /v1/chat/completions 网关:
wrangler secret put SPARK_API_PASSWORD
wrangler deploy --config wrangler.jsoncSPARK_API_PASSWORD 从讯飞控制台对应模型的 HTTP 接口认证信息中获取。Worker 固定主上游 URL、模型、temperature 和 max_tokens,只接收有限数量的 system/user/assistant 消息,并对 IP 做 best-effort 限流。生产默认将讯飞 Spark-X2(https://spark-api-open.xf-yun.com/v2/chat/completions,模型 spark-x)作为第二上游,并复用主 APIPassword;配置 SPARK_FALLBACK_API_PASSWORD 后可覆盖为独立凭证。凭证只保留在 Worker Secret 中。
知识库构建会生成带哈希版本的 core/campus/study/life 分片、lsa-v1 64 维分布式语义向量,并在浏览器内执行 BM25 + RRF 混合检索。pnpm build 同时运行内容安全扫描、页面锚点校验和 sitemap 生成;pnpm eval:retrieval 使用线上同一套分片和 manifest,执行 50 条回归查询并检查引用覆盖率、引用精度和降级链接率。零命中查询会以脱敏预览写入 Analytics Engine。
- Worker 通过
spark-api.kcos.club提供 OpenAI 兼容 HTTP 网关。 - 讯飞 APIPassword 只存储在
SPARK_API_PASSWORDWorker Secret,不进入前端或仓库。 - 生产部署使用
wrangler deploy --config wrangler.jsonc,健康检查为/health。
核心代码位于 workers/spark-proxy.js 与 wrangler.jsonc。
验证结果:
| 检查 | 结果 |
|---|---|
| 本机 8787 关闭 | 通过 |
| Tunnel Spark 路由删除 | 通过 |
| Worker 健康检查 | 通过 |
| 云端 HTTP 网关健康检查 | 通过 |
| 线上页面实际提问 | 通过 |
| 控制台错误 | 无 |
| Pages 部署 | 成功 |
安全提醒:APIPassword 属于敏感凭证,必须通过
wrangler secret put SPARK_API_PASSWORD写入 Worker,不能写进.env、GitHub Pages 变量或前端源码。CI 自动发布还需要 GitHub SecretCLOUDFLARE_API_TOKEN。复制仓库后的完整配置顺序见DEPLOYMENT.md。
提交 Pull Request。