Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Campux Plus · 校园墙(AI 自动审核 + 双向表白)

本项目基于开源校园墙系统 Campux 二次开发,在上游基础上新增了 投稿 AI 自动审核 与 「青青子衿,悠悠我心」双向表白 两个功能。 上游代码版权归原作者及贡献者所有,遵循 Apache License 2.0,详见 NOTICE 与 CHANGES.md。

部署方式一句话:用 Docker Compose 一条命令跑起来,另外可选 nginx + HTTPS 对外提供访问。 从空白服务器到能收投稿的完整流程见 DEPLOY.md。


功能特性

上游 Campux 已有的能力(网页/私聊双投稿渠道、审核、QQ 机器人、QQ 空间自动发布、评论同步、统计看板、多租户、插件系统等)全部保留,本仓库在此之上新增:

1. 投稿 AI 自动审核

新投稿(网页投稿和 QQ 私聊投稿都算)自动交给大模型初审,审核员不用再逐条看:

AI 判定 系统行为
低风险、置信度达标 自动通过,按墙的发布设置进入发布队列
明确违规、置信度达标 自动拒绝,写明理由并私聊告知投稿人
不确定 / 中风险 保持待审核,只在稿件时间线留下一条 AI 预审:… 提示
  • 审核口径是一段随时可改的「墙规」文本,管理员在后台编辑,保存即生效,不需要改代码或重启。
  • 通过/拒绝置信度阈值、每日自动通过上限、两个自动开关都能在后台调。
  • 兜底策略:超时、报错、返回格式不对、含图片视频 —— 一律保持待审核,绝不放行,也不影响投稿响应。
  • 每次判定写进稿件时间线与审计日志(模型、风险等级、置信度、理由),可追溯、可人工覆盖。

2. 青青子衿,悠悠我心(双向表白)

把表白做成双向确认,避免"单方面投递"变成骚扰:

  • 甲向乙表白时,乙没有任何感知(不通知、不显示条数、网页上也看不到)。
  • 只有乙也向甲表白时,机器人才同时私聊通知双方,并把两人的原话互相转达;网页端同步出现在「已互相表白」列表。
  • 两个入口:机器人私聊 #表白 对方QQ号 想说的话,或网页端「表白」标签页。
  • 只能向本墙已注册用户表白;不能向自己表白;被封禁账号不能发也不能收。
  • 每人每天次数、单条字数、是否先用大模型过滤表白内容(广告、涉政、辱骂、联系方式等)、是否允许网页发起,全部可在后台配置。
  • 管理员可在插件配置页查看全部表白记录(含未匹配的),用于风控;普通用户与审核员看不到。

与上游的差异一览

方面 上游 Campux 本仓库
投稿审核 人工审核(另有 AI 打标签、私聊语义收稿) 保留,并新增投稿 AI 自动审核
AI 供应商 OpenAI 兼容接口(baseUrl 可填任意服务) 同上,附带针对 DeepSeek 的适配(自动关闭思考模式、成本优化),实测约 ¥0.0013/条
用户互动 稿件、评论、投票竞选 保留,并新增双向表白
管理入口 预设插件开关机制 新增预设插件「青青子衿」;AI 审核开关在 LLM 设置面板
数据库 上游表结构 新增 Confession 表(启动时自动迁移,不改动原有表)
CI 官方发布流水线 已移除(个人仓库用不上,避免失败任务)

代码级差异清单见 CHANGES.md。


快速开始(Docker Compose)

# 1. 准备一台 Linux 服务器(2 核 2G 起),装好 Docker 与 compose 插件
# 2. 拉取代码
git clone https://github.com/<你的用户名>/<仓库名>.git campux
cd campux

# 3. 生成配置:必填一项加密密钥
cp .env.example .env
echo "CAMPUX_BOT_SESSION_SECRET=$(openssl rand -hex 32)" >> .env

# 4. 构建并启动(首次编译前后端,2 核机器约 5-10 分钟)
docker compose up -d --build

# 5. 浏览器打开 http://<服务器IP>:8989 进入初始化向导

接着在向导里创建管理员账号、选择部署模式,然后按 DEPLOY.md 完成:

  1. 接入 QQ 机器人(NapCat / LLOneBot,反向 WebSocket)
  2. 配置审核群与 QQ 空间发布目标
  3. 配置域名 + HTTPS(可选但强烈建议)
  4. 配置 AI 自动审核(填 DeepSeek 的 Key 即可用)
  5. 配置并开启「青青子衿」表白插件

⚠️ 1 核 1G 的服务器编译镜像时容易因内存不足失败或极慢,建议先加 swap:

sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile

这是实测经验:1C1G + 4G swap 能编过但很慢,2C2G 顺畅得多。


部署方式

方式 适用场景 说明
Docker Compose(推荐) 绝大多数生产环境 一条命令拉起应用 + PostgreSQL + MinIO;升级就是重新 build;见 DEPLOY.md 第 2 节
单文件可执行 不想装 Docker / 数据库 上游 Release 提供自包含二进制(内嵌 SQLite + 本地存储),本仓库改动同样可自行编译;见 DEPLOY.md 第 3 节
本地开发 二次开发调试 bun install 后 bun run dev:server / bun run dev:web

功能配置速查

AI 自动审核

  1. 后台 → 管理 → 元数据 → LLM 设置,填入:
    • baseUrl:https://api.deepseek.com(或任意 OpenAI 兼容服务地址)
    • model:deepseek-flash(推荐:支持 JSON 输出、约 1 秒/条、约 ¥0.0013/条)
    • API Key:platform.deepseek.com 申请的 Key
  2. 展开 「AI 初审」:打开总开关,按需开启「低风险自动通过」「明确违规自动拒绝」,设置置信度阈值与每日上限。
  3. 按你所在学校的口径改写「初审墙规」文本(已内置一份通用校园墙墙规)。

DeepSeek 默认开启"思考模式"且思考 token 按输出计费,本项目调用时已自动关闭,无需额外配置; 也可以改用 pro 模型,但成本约为 flash 的 4 倍。

青青子衿(双向表白)

  1. 后台 → 管理 → 插件配置 → 「青青子衿,悠悠我心」,打开开关。
  2. 在「配置」页设置每人每天次数、单条字数上限、是否让大模型过滤内容、是否允许网页端发起。
  3. 用户侧:机器人私聊 #表白 对方QQ号 想说的话,或网页端「表白」标签页。
  4. 同一页下方可查看最近表白记录(仅管理员可见)。

目录结构(主要部分)

apps/server          后端(Fastify + Prisma)
  src/runtime/ai-review.ts       ← 新增:AI 投稿初审
  src/lib/confession.ts          ← 新增:双向表白核心逻辑
  src/routes/confessions.ts      ← 新增:表白接口
apps/web             前端(React + Vite)
  src/features/confession/       ← 新增:表白页
  src/features/admin/            ← 修改:AI 初审面板、插件配置面板
packages/db          Prisma schema 与迁移(新增 Confession 表)
packages/domain      共享常量与默认文案
docs/                上游文档(VitePress)
legacy/              上游早期 Go 实现(历史归档)

常见问题

只想用上游原版功能? 把「AI 初审」开关和「青青子衿」插件开关都关掉即可,行为与上游一致。

AI 会误判吗? 会,所以默认只让"低风险 + 高置信度"自动通过,并且失败/超时一律转人工。 误判补救:审核列表与审计日志能看到每次 AI 判定与理由,已发布的稿件管理员可直接撤回。

表白会泄露隐私吗? 单方表白的内容只有发送者本人(和管理员)能看到;双方互相表白后才互相公开身份与原话。 管理员可见全部记录是刻意设计的(风控与纠纷处理),不需要的话可以改 apps/server/src/lib/confession.ts 里的管理端查询。

数据库迁移安全吗? 容器启动时自动执行 Prisma 迁移,仅新增 Confession 表,不改动原有表结构。


许可与致谢

About

基于 Campux 二次开发的校园墙:新增投稿 AI 自动审核与「青青子衿,悠悠我心」双向表白,附完整部署教程

Topics

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages