反向自律 · AI 人设化监督

立 flag 的人千千万,倒 flag 的你一个

反旗(FlagBreaker)是一款嘴毒心软的 AI 损友盯你把事做完的自律 App。完成目标 AI 夸夸,没完成 AI 毒舌调侃。损友 bro 嘴贱心善,冷淡御姐 senpai 一句扎心。连续失败 3 天自动切纯夸夸,未成年强制纯夸夸,连续达标 7 天洗白失败记录。

两个 AI 盯着你

不是冷冰冰的助手,是会损你也会拉你一把的真人角色

😈

损友 bro

嘴毒心软的哥们,吐槽式监督

“可以啊兄弟!第一天就把 flag 立住了,我都有点意外了 🫡”
  • 口语化
  • 短平快
  • 1-3 句话
  • ≤60 字
  • 偶尔用 1 个 emoji
🧊

冷淡御姐 senpai

少话高冷,一句扎心

“闹钟响的时候你在想什么。”
  • 惜字如金
  • 不用语气词
  • 1-2 句话
  • ≤40 字
  • 极短反问

核心机制

反差情绪 + 安全护栏 + 真实事实,让自律不再靠意志力死撑

😈

AI 人设化反差反馈

损友 bro 嘴贱心善,冷淡御姐 senpai 一句扎心。情绪配比按状态切换:夸夸热情 60% + 幽默 30%,毒舌调侃 70% + 暗示在意 20%。不靠奖励不靠自责,靠情绪反差驱动自律。

🛡️

保护模式有底线

连续失败 3 天强制切纯夸夸模式,加 80% 鼓励。未成年(<18)全程强制纯夸夸。吐槽对象只能是行为,永不攻击人格。本地 BANNED_WORDS 二次过滤 + 豆包 API 内容过滤双保险。

🔄

洗白机制

连续达标 7 天自动清空该目标的失败记录,给逆袭叙事留出心理空间。失败不是终点,连续坚持可以把黑历史抹掉。

📱

PWA 离线打卡

Service Worker 多策略缓存 + localStorage 离线队列,断网也能打卡,网络恢复自动同步。Dashboard 启动时 replayQueue() 自动重放。

🔔

Web Push 提醒

关闭标签页也能收到打卡提醒与失败通知。VAPID + Service Worker + 订阅 API 完整链路,Vercel Cron 自动触发定时推送。

📊

多目标周报

7 日周报页 + 周导航 + 多目标聚合。html-to-image 截图分享走 Web Share API。周报自动生成 + 失败打卡自动标记走 /api/cron。

三步用上反旗

从立 flag 到洗白记录,最短路径走完一轮

  1. 01

    立 flag

    3 步向导设置目标:选类型(早起/健身/学习)、定难度(简单/中等/挑战)、写目标描述。目标可编辑、可软删除。

  2. 02

    打卡

    每天 ✅ 完成或 ❌ 未完成,可选填感想。断网也能打,进离线队列,恢复网络自动同步。Skip 休息日不打断连续。

  3. 03

    AI 反馈

    人设化反差反馈:夸夸或毒舌。连续失败 3 天自动切纯夸夸保护模式,连续达标 7 天洗白失败记录。截图分享走 Web Share。

保护模式:毒舌有底线

连续失败 3 天强制切纯夸夸;未成年(<18)全程强制纯夸夸;吐槽只针对行为,永不攻击人格

🛡️

连续失败 3 天 → 强制切纯夸夸

PROTECTION_MODE_THRESHOLD = 3。毒舌力度降为 20%,加 80% 鼓励,必须包含一句正向引导。后端 doubao.ts 再次判定,不依赖 AI 自觉。

🧒

未成年(<18)→ 全程强制纯夸夸

MINOR_AGE = 18。前端设置页关闭毒舌开关,后端强制走纯夸夸路径,前端无法绕过。

🚫

吐槽只针对行为,永不攻击人格

严禁"你没用""你是废物"等定性话。禁止涉及外貌/体重/智商/家庭/出身/疾病/性别/性取向/宗教/种族。

🔍

双重敏感词过滤

豆包 API 内容过滤 + 本地 BANNED_WORDS 14 词二次过滤(废物/垃圾/没用/蠢货/傻子等)。宁可误拦不可放过。

📝

审计日志可追溯

每次 AI 反馈写入 ai_feedback_logs,存 consecutive_fail 快照,便于事后核查保护机制是否生效。

常见问题

关于人设、毒舌边界、未成年保护与离线打卡的关键问题

反旗 FlagBreaker 是什么?

反旗(FlagBreaker)是一款 AI 人设化监督的自律 App:完成目标 AI 夸夸,没完成 AI 毒舌调侃。核心是用情绪反差驱动用户自律,而不是冷冰冰的提醒或自责。内置损友 bro 和冷淡御姐 senpai 两个 AI 人设,每人设有独立的 System Prompt + Few-Shot 样本。技术栈是 Next.js 14 + Supabase + 豆包 API(火山方舟 Ark),PWA 离线打卡 + Web Push 提醒。

两个 AI 人设有何不同?

损友 bro 是用户的铁哥们/闺蜜,口语化、网络化、短平快,偶尔用"啊喂""兄弟"拉近距离,反馈 1-3 句话不超过 60 字。冷淡御姐 senpai 是气质疏离的年长女性角色,惜字如金,1-2 句话不超过 40 字,不用语气词和网络梗,用极短反问让人自己反思。两人设都遵循同一套反馈决策树与合规红线。

AI 反馈如何决策?是随机的吗?

不是随机。AI 反馈有严格决策树:第 1 次完成给夸张式夸夸;连续 3 天以上升级夸奖;断签后逆袭重点夸逆袭;连续 2 天失败给中度毒舌;连续 3 天及以上失败强制切保护模式(夸夸 80% + 毒舌 20%);第 1 次失败或简单目标未完成给轻度毒舌。情绪配比也有规则:夸夸模式热情 60% + 幽默 30% + 认真鼓励 10%。

什么是保护模式?什么时候触发?

保护模式在用户连续失败 3 天(PROTECTION_MODE_THRESHOLD)时自动触发,AI 毒舌力度降为 20%,加 80% 鼓励,必须包含一句正向引导。保护模式在后端 doubao.ts 再次判定,不依赖 AI 自觉。未成年用户(<18 岁,MINOR_AGE)全程强制纯夸夸模式,关闭毒舌。判定逻辑写在后端,前端无法绕过。

AI 会骂人吗?有合规风险吗?

不会攻击人格。AI 严禁说"你没用""你是废物""你不行"这类定性话,禁止涉及外貌、体重、智商、家庭、出身、疾病、性别、性取向、宗教、种族。吐槽对象只能是"行为"不能是"人"。豆包 API 侧有内容过滤,本地 persona.ts 的 BANNED_WORDS 数组做二次过滤(废物/垃圾/没用/蠢货/傻子等 14 个词)。每次 AI 反馈写入 ai_feedback_logs 审计日志,存 consecutive_fail 快照便于核查。

什么是洗白机制?

连续达标 7 天(CLEAN_STREAK_DAYS)自动清空该目标的 failed 记录,给用户重新开始的心理空间。这是一套"逆袭"叙事:失败不是终点,连续坚持可以把黑历史抹掉。

支持哪些目标类型?能自定义吗?

MVP 内置 3 类目标:早起(early_rise)、健身(fitness)、学习(study)。每类目标有三档难度:简单(没做到会被狠狠损)、中等(正常力度)、挑战(做不到它理解你)。打卡状态三态:完成 success、未完成 failed、休息 skipped。P1 规划支持自定义目标类型。

断网能打卡吗?会丢数据吗?

能。PWA Service Worker 多策略缓存 + localStorage 离线打卡队列(offlineQueue.ts),断网时打卡入队,网络恢复后通过 /api/checkin/sync 自动同步。Dashboard 启动时自动触发 replayQueue()。Web Push 推送通知独立于在线状态,关闭标签页也能收到打卡提醒与失败通知。

反旗与 Forest、滴答清单、Keep 有何不同?

Forest 靠种树养成正向激励,不针对 flag 失败;滴答清单是任务管理工具没有 AI 反馈;Keep 是健身内容社区不是监督工具。反旗的核心差异化是"AI 人设化反差陪伴":用嘴毒心软的损友或冷淡扎心的御姐驱动自律,避开羞辱与社死,靠情绪反差而非奖励或自责。保护模式确保毒舌有底线,未成年强制纯夸夸。

数据安全吗?别人能看到我的打卡吗?

Supabase PostgreSQL 所有表开启行级安全(RLS),用户只能读写自己的数据。CSP + HTTP 安全头(X-Frame-Options: DENY、X-Content-Type-Options: nosniff 等)在 next.config.js 配置。所有 API 路由用 Zod 校验输入,/api/checkin 限流 10 次/60s,/api/ai-feedback 限流 5/60s(滑动窗口算法)。GitHub App 密钥等服务端 API Key 不加 NEXT_PUBLIC_ 前缀,永不暴露给浏览器。

别再让 flag 倒在地上

让一个嘴毒心软的 AI 损友,盯你把今天该做的事做完