全部作品

UniExp HK 实验港

  • Next.js
  • TypeScript
  • Tailwind CSS
  • Self-hosted Supabase
  • Cloudflare
  • Gemini
  • Agent Harness
  • Policy Gate
  • Quality Workbench

一个帮香港研究者发布实验、招募参与者的线上三语平台。我独立完成产品、运营流程与受控 AI 审查层;AI 只在证据核对与人工批准后协助提出更新。

打开线上项目

一眼看懂

角色 独立创办人与开发者 — 产品设计、前端、后端、上线、日常维护

问题

香港高校的实验招募散落在群组、表单、集合页、海报与双语来源页里;研究者难以招募足够样本,参与者与营运者也需要可核验证据,才能安全发布。

解法

我把产品做成两条清楚流程:研究者发布并管理研究,参与者浏览、报名与评价;后台加入证据门控的 AI 审查层,让自动化只提出候选,不直接改写生产真相。

成果

已上线三语平台 · 115 个 merged PR(最新 #120)· 独立设计、上线与运营

我的工作

  • 研究发布 + 时段排期 + 报名审核(研究者端)
  • 浏览 / 筛选 / 报名 / 评价(参与者端)
  • 全站三语 i18n(EN / 繁中 / 简中)
  • External Study Ops Agent,分层自主阶梯:L1 shadow → L1.5 cross-check → L1.6 Codex replacement check → L2 proposal queue → L3 guarded write(每队列每轮最多写 1 条 pending)
  • 多队列 agent:单一对外入口,内部 supervisor + 四个 worker(new_study_lead / published_change / source_candidate / seed_candidate),各自只能写一张指定的 Admin pending 表
  • 定时守护审查:每日 VPS cron(22:05 UTC)跑 L1 shadow、输出只读证据、不写生产——明确不是自主生产控制
  • Production Explore truth source、quality workbench、section-level evidence、signup freshness、visual/OCR/QR review 与 feedback-audit ledger

技术证据

  • Agent 安全模型:每条 queue proposal 过 deterministic evaluateQueueProposalPolicy() gate 盖 writeEligible 章;L1 只写 noProductionWrite=true 本地报告;自主权止于 Admin pending queue——experiments、source registry、approve/reject 仍由人工审核
  • Truth discipline:production Explore(已发布实验)是唯一真相源;legacy pipeline、source/seed discovery 与 agent shadow report 都只是候选生成器,不能反向覆盖 truth
  • 评测与 readiness gate:daily-cron 证据区分 real_cron 与手动触发;L3 readiness 要求 30 天内 reviewed proposal ≥10、acceptance ≥80%、stale/bad-source false positive 为 0、且无 production-write incident
  • Failure→gate:曾有 proposal 把 HKD 80 baseline 当成总报酬,修正后成为永久的 compensation-component policy check,把该类降级为 report-only
  • Reasoner 可靠性:Gemini reasoner 只允许返回结构化 JSON;坏输出或失败时回退到 deterministic reasoner 继续只读运行——模型参与不等于执行许可
  • 自托管 Supabase(auth + Postgres + 维护)+ Cloudflare 边缘加速与防滥用;独立持续维护,累计 115 个 merged PR(最新 #120,Cloudflare deploy Node patch)

从 pipeline 到 harness

外部实验采集不是一次性冷启动——招募页会过期、表单会关、一个 aggregate page 挂多个实验、旧 pipeline 会误判来源或重复。直接让 agent 写生产库风险太高,于是 agent 被包进一个 harness:policy gate、truth source、quality workbench 与 Admin review 决定什么才真正可执行。

自主阶梯

自主权是分层的,不是全有或全无:L1 shadow(只写本地报告,noProductionWrite=true)→ L1.5 cross-check → L1.6 Codex replacement check → L2 proposal queue → L3 guarded write,每队列每轮最多一条 pending。每一级都有 gate,agent 的权限止于 Admin pending queue——experiments、source registry、approve/reject 仍由人工审核。

多队列设计与 truth discipline

对外只有一个入口,内部由 supervisor 把工作拆给四个 worker——new_study_lead、published_change、source_candidate、seed_candidate——各自只能写一张指定的 Admin pending 表。一个确定性的 evaluateQueueProposalPolicy() gate 标记写入资格,任何 worker 都不能自行认证候选可写。

Production Explore——已发布的实验——是唯一真相源。legacy pipeline、source/seed discovery 与 agent shadow report 都只是候选生成器,永远不能覆盖 truth。

一个变成 gate 的失败

曾有一条 proposal 把 HKD 80 baseline 当成总报酬,忽略了第二笔 optional 的 HKD 80 follow-up。修正不是一次性的——policy gate 增加了 compensation-component 语义检查,把该类整体降级为 report-only。一个失败变成了可复用的 gate,而这正是 harness 的意义。

每日守护审查

一个 VPS cron 每日 UTC 22:05 跑 L1 shadow,输出只读证据、不写生产。另一个只读 checker 区分真实 cron 与手动运行;连续三天通过、零 policy violation 的 real-cron 证据,是进入 L2 readiness review 的 gate——不是自动升级。它是定时守护审查,明确不是自主生产控制。

界面截图

UniExp HK 实验港首页,展示研究者与参与者入口
线上三语实验招募平台首页。
UniExp HK 实验港研究浏览页,展示研究卡片与筛选
参与者可以浏览并筛选可报名研究。
UniExp HK 实验港说明页,解释研究者与参与者如何使用平台
说明页解释研究者与参与者的使用流程。