全部项目详解

Pistochia

即将上线

一款面向 ADHD 人群的 iPhone 应用。把脑子里想的事说出来或打出来,它会返回一个个足够小、能让你开始动手的步骤,并按你当天的精力排好顺序。

我的角色
独立完成设计与开发
年份
2026
使用技术
Expo · React Native · SQLite · Supabase Edge Functions · Claude · Whisper · RevenueCat
EXPO CLIENT: OFFLINE-FIRSTSQLITESUPABASE ANONYMOUS AUTHEDGE PROXY: OPERATIONALLOWLIST, QUOTASREVENUECAT: PAYWALLCLAUDE: TASK BREAKDOWNWHISPER: VOICE INTAKEFIRST OPENOPERATION IDWORKS IN AIRPLANE MODEFAIL-CLOSED LIMITS, AI_PAUSED KILL SWITCHPROMPTS LIVE SERVER-SIDE (ops.ts)

横向滚动可以看到完整的图。

架构OFFLINE-FIRST CLIENT → OPERATION ALLOWLIST PROXY → CLAUDE / WHISPER

问题

对 ADHD 人群来说,难的往往不是记住,而是开始。一个把整座任务大山都存起来的待办应用,最后会变成一张让人内疚的清单。工作单元必须缩小到开始变得轻松为止,而且应用必须一打开就能用。

实现方式

一个离线优先的 Expo 应用,数据存在本地 SQLite 里,迁移有版本管理。身份用的是 Supabase 匿名认证,所以在出现任何注册页面之前,用户就能先把脑子里的想法倒出来。每一次 AI 调用都要经过一个按操作工作的边缘函数:应用只发送操作名和参数,从不发送 prompt,也从不发送密钥。函数会用白名单校验操作,并执行按 IP 的限流、按安装的每日配额,以及一个紧急开关。Claude 负责拆解任务,Whisper 在同一个代理后面处理语音。付费墙由 RevenueCat 负责,数据分析在用户同意之前一直关闭。

关键决策

  • 应用不持有 API 密钥

    进来的是操作名,出去的是结构化结果。API 密钥放在边缘函数里,前面有紧急开关,还有出错时默认拒绝的配额和限制。

  • 离线优先

    任务存在手机上的 SQLite 里,有正经的迁移机制。一个面向 ADHD 的工具,如果要联网才能显示你的下一步,就辜负了它本来要帮助的人。

  • 首次使用前不需要注册

    匿名认证会在后台悄悄创建一个身份。账号页面要等应用派上用场之后才出现。

仓库里的代码

functions/anthropic-proxy/index.ts边缘代理:操作白名单和紧急开关
// The legacy free-relay surface: any request still carrying these is either
// an outdated client or an abuse probe — reject outright.
const FORBIDDEN_KEYS = ['system', 'model', 'messages', 'maxTokens'] as const;1
 
// …
const paused = Deno.env.get('AI_PAUSED');2
if (paused === 'true' || paused === '1') {
  return jsonResponse({ error: 'ai_paused' }, 503);
}
 
// …
for (const key of FORBIDDEN_KEYS) {
  if (key in body) {
    return jsonResponse({ error: 'invalid_request' }, 400);
  }
}
 
const op = body.op;
if (typeof op !== 'string' || !(op in OPS)) {3
  return jsonResponse({ error: 'invalid_op' }, 400);
}
const config = OPS[op]!;
  1. 第 3 行. 应用无法发送 prompt、模型或 token 上限。这些都放在服务端,应用只能指定白名单上的某个操作。

  2. 第 6 行. AI_PAUSED 就是紧急开关:只需一个环境变量,不用重新部署就能停掉所有 AI 开销。

  3. 第 19 行. 未知操作会被拒绝。API 密钥从不出现在应用包的任何地方。

目前进展

App Store 上架材料、上线检查清单、EAS 构建、宣传视频,以及带候补名单的 pistochia.com 都已准备好。先做 iPhone 版,下一步就是在 App Store 上架。

下一篇硕士论文:对 AI 生成钓鱼邮件的可解释检测