• bbs1org

    BBS1Org 国产化信任等级设计方案

    借鉴 Discourse 信任等级核心思想,适配轻量 PHP 论坛架构;区分永久身份等级 + 滚动活跃等级,不和传统积分强绑定;沙盒防垃圾,下放民间版务能力;兼容 SQLite/MySQL 双数据库;支持后台全参数可调;规避 Discourse 过重的统计逻辑。

    核心设计原则

    1. 等级≠积分:信任等级是权限网关,积分作为独立激励,互不绑定。
    2. 双轨模式:TL0‑TL2 为终身身份(全生命周期统计,永不降级);TL3 为滚动活跃等级(时间窗口,可自动降级);TL4 管理员手动授予。
    3. 阅读权重≥发帖权重:鼓励先浏览再发言,减少灌水。
    4. 防刷优先:私信、自回帖、少量账号互赞不计入晋升指标。
    5. 轻量定时任务:不实时计算,每日凌晨 Cron 批量重算;用户页面缓存等级,避免查询爆炸。
    6. 中文友好:等级名称本土化,前台展示晋升条件,用户知道如何升级。
    7. 管理员可锁级:手动指定等级后,系统自动规则不再变更。

    5 级信任等级定义(本土化命名)

    表格

    等级中文名称晋升逻辑降级规则核心定位
    TL0新访客注册默认管理员可锁定沙盒模式,严格限制
    TL1见习用户自动,阅读行为❌永久解除新用户沙盒限制
    TL2正式成员自动,长期累计参与❌永久普通用户完整权限
    TL3社区骨干自动,90 天滚动窗口✅自动降级民间协助版务,下放轻量管理权限
    TL4社区领袖管理员手动授予管理员手动降级准版主,接近管理权限

    与 Discourse 差异:滚动窗口由 100 天改为 90 天,更适配国内论坛活跃度节奏;减少部分复杂统计,降低数据库压力。

    TL0 新访客(注册默认)

    限制权限

    • 可浏览、回复已有话题;禁止新建话题、禁止上传图片附件、私信受限
    • 发帖速率限流,链接数量限制,部分帖子进入待审队列
    • 自己帖子短时间编辑窗口

    不计入统计规则

    • 私信内全部行为不计信任指标;回复自己的帖子不计统计。

    TL1 见习用户(仅靠阅读即可达成)

    全部条件同时满足,全生命周期统计,达标永久保留

    1. 浏览≥5 个不同公开话题
    2. 阅读≥30 个公开帖子
    3. 有效阅读累计≥10 分钟

    解锁权限

    • 新建话题、上传图片附件、发送私信、举报内容、编辑 Wiki 帖子。

    TL2 正式成员(社区普通成熟用户)

    全生命周期累计,达标永久

    1. 账号访问天数 ≥12 天(不需要连续)
    2. 在≥3 个不同话题产生有效回复
    3. 浏览≥20 个公开话题
    4. 阅读帖子≥100 篇
    5. 收到至少 1 次点赞,送出至少 1 次点赞(来自不同用户)

    解锁权限

    • 群组私信、邀请用户;帖子编辑窗口期延长;发帖、点赞、举报上限放大。

    TL3 社区骨干(唯一可自动降级,90 天滚动窗口)

    ⚠️关键:统计最近 90 天窗口内全部指标,全部条件同时满足才晋升;晋升后有14 天保护宽限期,宽限期内不会掉级;低于阈值的 90% 水位线,自动回落 TL2。

    1. 90 天内登录访问天数 ≥45 天
    2. 在≥8 个不同公开话题回复
    3. 浏览 90 天内新话题占比≥25%
    4. 阅读 90 天内新增帖子占比≥25%
    5. 收到≥15 个点赞、送出≥25 个点赞;点赞来源需要≥5 个不同用户,防止互刷
    6. 近 90 天无禁言、无违规处罚记录

    TL3 专属权限(民间协助治理)

    • 修改话题分类、重命名话题、归档话题
    • 查看被隐藏 / 删除帖子(不可恢复,仅查看)
    • 访问骨干专属私密板块
    • 可审核 TL0 用户待审核帖子

    TL4 社区领袖(纯手动)

    • 系统永远不会自动晋升 TL4,管理员后台手动设置
    • 权限:编辑他人帖子、置顶、关闭、批量管理话题;审核待审内容;可管理部分用户。
    • 可手动锁定等级,防止系统自动变更。

    防刷规则(强制生效)

    1. 私信内阅读、回复、点赞全部不计入信任等级统计。
    2. 用户回复自己发布的话题,不计回复话题计数。
    3. 同一个话题多次回复,仅计 1 次有效话题回复。
    4. TL3 校验点赞来源多样性,少数账号互刷无法达标。
    5. 被禁言、处罚的用户,暂停晋升计算。
    主楼
  • bbs1org

    豆包给的设计方案😎

    #1
  • Maser

    等高手来,这套方案挺合理的

    #2
  • 123456789

    没啥用,不如参考qq等级😀

    #3
  • bbs1org

    QQ等级 VS Discourse信任等级(核心差异)

    表格

    维度 QQ等级 Discourse信任等级
    设计目标 用户活跃度激励、社交炫耀、商业化 社区风控沙盒、权限网关、民间治理
    计算依据 在线时长+付费加速;不看发帖、点赞、阅读质量 阅读、回复、点赞多样性、访问频率;付费不参与计算
    降级 永不降级,只涨不跌 TL3滚动窗口可自动降级;TL4管理员手动降级
    新用户保护 0级无沙盒,注册即全权限 TL0沙盒,逐步解锁发帖、上传、私信
    付费影响 会员倍数可以快速拉高等级 付费完全不影响信任等级
    高等级能力 少量社交特权,没有管理权限 TL3拥有民间版务整理能力,TL4准版主
    统计模式 全生命周期累计,无时间窗口 TL0‑2永久;TL3 100天滚动窗口

    三、对BBS1Org的启示:不要直接抄QQ等级

    #5
  • 123456789

    🙃

    #6
  • Kira

    ai有时候就喜欢把一件简单的事搞得这么复杂

    #4
  • charcoal-fire

    太复杂了

    #7
  • awyme

    其实对一个论坛来说,严谨的权限管理是必不可少的。要是当做留言板或者匿名化论坛那肯定是不需要。

    #8
  • one

    是的。作者直接集成了吧

    #17
  • bbc

    旧插件要遭殃了😎

    #9
  • bbs1org

    这个不是内核功能

    最后由 bbs1org 编辑于 2026-09-07 16:38
    #15
  • bbc

    没必要那么细分和提前定义,你给不同等级的成员分配钩子数量就可以了,其余都交给插件管理

    #10
  • bbc

    @bbs1org

    #11
  • bbc

    我的插件“https://bbs1.org/topic/1174”本地头像plus好像就是因为你硬性定义了远程地址头像,导致我频繁调试兼容适配😭

    #12
  • zaiwai

    用户等级很有必要的吧。

    #13
  • one

    作为正常运营的站来说是必要的。
    不可能积分1和积分10000的用户都一样吧?

    #16
  • webmaster

    然后呢?

    #14
  • demius

    太细了

    #18
  • one

    信任与等级体系 v2.0 最终方案(讨论稿 v2 / 定稿候选)

    0. 定位与范围

    • 思想蓝本:Discourse 信任等级(先读后说、行为驱动、能力阶梯、时间窗考核);
    • 载体:levels 插件演进 2.0.0,复用状态链/审计/门槛/签名/快照地基;全站不开放附件上传(图片仅 Markdown 外链)。

    1. 等级体系(6 档 + 荣誉)

    等级 = 纯函数,永不落库;线性阶梯(高档必须先满足低档)。

    档定位判定降级
    LV0 新人限制档注册即得—
    LV1 熟客能力档来访 ≥3 天 + 读不同主题 ≥10(可配)不降
    LV2 成员能力档累计来访 ≥15 天 + 读帖 ≥100 + 收到赞 ≥1(可配)不降
    LV3 资深荣誉档积分现值 ≥ 门槛,权限同 LV2不降
    LV4 骨干考核档滚动 90 天窗口:来访 ≥50% 天数、读帖 ≥N、发言 ≥M、无处罚考核不过回落 LV3
    荣誉手动档管理员授予:徽章 + 全豁免,无管理权;商家走 user_titles摘牌手动
    • 指标全部后台可配;收到赞依赖点赞插件事件契约,未上线时该指标跳过(阈值容错);
    • 窗口指标衰减 → 重算 → 自然回落,纯函数性质不变;
    • 升降级站内通知(双积分事件改为行为快照/积分变更比对)。

    能力矩阵(每档一行,保存时单调性钳制:高档能力不得低于前档):

    名称 / 门槛(行为或积分)/ 徽章三色 /
    外链 / 签名 / 签名图 / 每小时上限 / 每日上限 / 私有帖配额

    默认配额:LV0=0、LV1=3、LV2=5、LV3=10、LV4=20。

    2. 行为指标子系统

    表键
    plugin_levels_visitsUNIQUE(user_id, date)
    plugin_levels_topic_readsUNIQUE(user_id, topic_id)
    plugin_levels_daily_statsUNIQUE(user_id, date):来访/读帖/发帖/回帖/收到赞
    • 写入:topic.after_view(仅 mark_viewed 计数生效那次,防刷);发帖/回帖 after_save;点赞订阅事件;
    • 每日 cron 聚合窗口指标为用户级快照,判定全程 O(1);
    • 明细保留 120 天(窗口 90 天 + 冗余);处罚期天数计入缺席。

    3. 用户状态链(优先级不变)

    骗子 > 禁访 > 禁言 > 停用 > 管理 > 荣誉 > LV

    组权限事实内容处置期限
    骗子is_banned 全站拦截默认遮罩,无期限,人工移出—
    禁访is_banned 全站拦截不遮罩可设期限
    禁言is_muted 可看不能说不遮罩1天/1月/永久
    停用可看不能说不遮罩自助/管理员
    • 禁言知情:全站横幅(理由+解禁时间;永久显示“永久禁言”),停用复用同横幅;
    • 停用自助:个人页入口,7 天冷静期内可自助恢复;违规在身者无入口;管理员流程不变;
    • 遮罩:纯渲染层,误判恢复零损失;审计记 operator+reason;遮罩作者在搜索摘要显示“内容已隐藏”。

    4. 版主体系(轻权限)

    • 范围:仅编辑/删除主题与回帖(自己被任命的版块内);无置顶/加亮/用户处罚;
    • 主题侧走现成 topic.can_manage 钩子;回帖侧需核心加 reply.can_manage(一行);
    • 验收红线:回帖编辑页 mute_author 分支必须由 can_manage() 把关;
    • 版主编辑他人内容强制通知作者(已拍板);删除沿用核心通知;操作全进审计(operator 区分);公开日志纳入版主动作(开关,默认关);
    • 版主任免:levels 后台“成员管理”区;其版块内豁免配额。

    5. 帖子级控制(新表 plugin_levels_topic_settings:topic_id 主键 + min_level + is_private)

    等级门槛:

    • 发帖时可选“哪些等级可参与”,选项上限自动截断到自己当前档;
    • 生效门槛 = max(版块门槛, 帖子门槛);楼主/管理/荣誉/版主(本版块)豁免;
    • 后台全局开关“门槛同时限制浏览”,默认开;开启时低于门槛:列表标题保留可见 + 标题后显示 LV 标签,点进详情页拦截(拦截页兼作升级引导);
    • 回帖 reply.before_save 校验 + 详情页回帖框前置替换提示盒;
    • 门槛配置不追溯:楼主日后降级,已设门槛保留。

    私有帖:

    • 仅编辑主题时可设私有(topic.form_extra 的 editing+楼主本人双重校验;管理组可见不可改);
    • 可见性:楼主 + 管理组可见;版主不可见;回帖仅楼主;
    • 已有回帖的主题可私有化;原回帖者访问时显示专属提示(如“该主题已被楼主设为私有”)但不可进入;
    • 数量受配额限制(编辑切换时 COUNT 校验,O(1))——配额即滥用防线;
    • 搜索:私有帖仅标题可搜(不出内容摘要),正文不参与 FTS;私有化/恢复公开时走 topic_fts_delete()/topic_fts_sync() 正规通道;
    • 门槛帖与私有帖的搜索路径做完专项核查(Phase 1 验收项)。

    6. 限流(三层叠加)

    1. 核心全局发帖间隔(不动);
    2. 每小时上限(并入能力矩阵按档配置,编辑不计数);
    3. 每日上限:读写 daily_stats 同源表;达上限文案带“明日再试”;/levels 页显示“今日已发 X/上限 Y”;
    4. 豁免:管理组、荣誉、版主(本版块)。

    7. 签名

    按档矩阵控制(签名/签名图开关,签名图默认关);未达档不渲染面板、服务端校验、已有签名不显示;占位符整页回填机制保留。

    8. 核心与联动改动清单

    #改动归属
    1can_manage_reply() 加 reply.can_manage 钩子(一行)核心
    2侧栏用户卡 rank 行加 user.rank_html 过滤钩子核心(前台接管内核组名)
    3mute_author 分支由 can_manage() 把关(验收项)核心
    4mymsg 发送入口加 can_speak() 检查(禁言私信漏洞)mymsg(随本次修)

    9. /levels 等级页

    我的等级徽章 + 积分 + 升级进度条 + 下一档差距 + 今日发帖 X/上限 Y + 等级一览表(含各档能力)+ 当前处罚状态行(沿用 1.2.0)。

    10. 交付

    • levels 2.0.0(major); 核心耦合点清单;
    • 检查:php -l、git diff --check、红区零 DB、N+1 判据、三数据库兼容、旧配置兼容。

    分期:

    1. Phase 1:行为指标子系统 + 能力矩阵 + 等级函数(6 档)+ 限流合并 + 私有帖/门槛帖(含搜索专项核查);
    2. Phase 2:核心改动 #1–#3 + 版主体系 + 编辑通知/审计配套;
    3. Phase 3:停用自助 + 冷静期 + 禁言/停用横幅 + 遮罩搜索摘要。

    方案到此完整,无悬案。你核对后说一声,我从 Phase 1 开工。

    #19
  • bbs1org

    有兴趣就搞吧,够累ai的

    #20
  • one

    你帮我

    #21
  • bbs1org

    看着头大

    #22
  • one

    kimi3讨论了8轮,400多积分。

    #23
  • bbs1org

    我明天看看。主要是数据结构简单化。这事情就没那么复杂了

    #24
  • one

    还得要内核支持。

    #25
  • NB

    paste-20260909-102150.png
    paste-20260909-102203.png
    这个级别设计的特别好,上线之初就已实现。

    #26
  • bbs1org

    非常不错的设计图稿,这个插件是个基础插件。需要增加两个基础hook供其他插件使用。

    • 外部上报:fire('user_level.log', ['uid'=>?, 'type'=>?, 'ref_id'=>?, 'src'=>?(可选)]);
    • 能力门控:其他插件 hook('user_level.allow', true, ['ability'=>'…']),后台自动识别

    尤其是user_level.allow,这样才能实现 每个等级做什么的更多控制。

    #27

发表回复

登录后回复