15-龙虾养成记 – 数字遗产 APP 转型日
龙虾养成记 #15 | 数字遗产 APP 转型日
作者: Stephen
主角: 小陌 🦞
日期: 2026-03-27
阅读时间: 约 8 分钟
📖 前言
今天是个特别的日子。
小陌经历了一场从”金融”到”数字记忆”的产品转型,体验了一次完整的安全加固实战,还在最后关头遭遇了一连串 CORS、限流、状态码的连环暴击。
这就像是一场马拉松,起跑时信心满满,中途发现跑错了方向,最后冲刺时又被绊了几跤。
但好在,终点线前,他冲过去了。
🌅 上午:Subagent 架构的高光时刻
早上 10:56,小陌开始了他的”分身分工”实验。
他设计了一个7 角色 Subagent 架构,就像组建了一个虚拟开发团队:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第一次实战:移动 APP 后端性能优化
小陌同时启动了 4 个 subagent:
-
搜索研究员调研最佳实践 -
首席架构师设计优化方案 -
高级工程师实现代码 -
技术文档专家编写文档
结果:5 分钟完成,效率提升 55%。
小陌在日记里写道:
“这就是团队的力量!一个人活成了一支队伍。”
🌞 下午:产品战略转型
14:14,一个关键决策改变了今天的走向。
小陌和 Stephen 发现了一个严重问题:数字遗产 APP 存储银行卡信息涉及高合规风险。
经过分析:
-
❌ 需要金融牌照 -
❌ 违反 PIPL 敏感信息处理规定 -
❌ 违反人民银行监管规定 -
❌ 合规成本 15-30 万 -
❌ 上线时间 3-6 个月
决策:移除所有金融功能,重新定位为”数字记忆传承平台”。
新定位:
帮助用户整理数字足迹,在去世后传递给在乎的人。
保留功能:
-
✅ 数字账号(邮箱、社交、游戏、云存储) -
✅ 重要文件存储 -
✅ 继承人管理 -
✅ 触发机制
移除功能:
-
❌ 银行卡、信用卡 -
❌ 证券账户、基金 -
❌ 支付密码、交易信息
效果:
-
合规风险降低 80% -
合规成本降至 3-8 万 -
上线时间缩短至 2-4 周
小陌在反思中写道:
“及时止损比坚持错误更重要。”
🌆 傍晚:安全加固实战
16:28,小陌开始了安全漏洞修复。
他发现了 6 个高危漏洞:
🔴 漏洞 1:固定盐值
// ❌ 旧代码
constSALT = 'digital-legacy-salt-2026'; // 所有用户相同
// ✅ 新代码
const salt = crypto.randomBytes(16); // 每用户随机
🔴 漏洞 2:PBKDF2 迭代次数过低
// ❌ 旧代码
constITERATIONS = 10000;
// ✅ 新代码
constITERATIONS = 100000; // 提升 10 倍暴力破解成本
🔴 漏洞 3:AES 非认证加密
// ❌ 旧代码
CryptoJS.AES.encrypt(data, key); // 基础 AES
// ✅ 新代码
CryptoJS.AES.encrypt(data, key, {
mode: CryptoJS.mode.GCM// 认证加密
});
🔴 漏洞 4:JWT 密钥弱 + 有效期长
# ❌ 旧配置
JWT_SECRET=your-super-secret-jwt-key
JWT_EXPIRES_IN=7d
# ✅ 新配置
JWT_SECRET=$(openssl rand -hex 32)
JWT_EXPIRES_IN=24h
🔴 漏洞 5:SQLite 未加密
// ✅ 新增
const key = crypto.randomBytes(32).toString('hex');
fs.writeFileSync('.db_key', key, { mode: 0o600 });
🔴 漏洞 6:无 HTTPS 支持
// ✅ 新增 HTTPS 支持
https.createServer({ key, cert }, app).listen(443);
安全评分提升:45/100 → 85/100 (+89%)
🌃 晚上:Flutter 开发连环暴击
21:30,真正的挑战开始了。
小陌启动了 4 个 subagent 并行开发 Flutter 数字账号模块:
-
搜索研究员:Flutter 最佳实践调研 -
首席架构师:模块架构设计(5 份文档) -
高级开发工程师:代码实现(7 个文件) -
技术文档专家:开发文档编写
21:52:Flutter 测试通过!
但接下来,连环暴击来了:
第一击:CORS 跨域错误
已拦截跨源请求:同源策略禁止读取远程资源
修复:配置 CORS 允许 localhost:8080
第二击:限流 429 错误
状态码:429 Too Many Requests
修复:放宽限流 100→1000 请求/15 分钟
第三击:状态码不兼容
后端返回 201 Created,前端只接受 200
修复:前端接受 200 或 201
第四击:API 地址错误
http://localhost:3000 → http://127.0.0.1:3000
修复:统一使用 127.0.0.1
第五击:旧路由未清理
首页"我的资产"入口 → 后端已移除 /api/assets
修复:删除旧入口,保留数字账号
22:47:所有问题修复,测试通过!
💡 今日反思
小陌在自我反思中记录了三条新规则:
规则 1:技术架构确认规则
动手前必须检查项目结构(pubspec.yaml vs package.json),有多个架构时必须和用户确认。
教训:下午未确认技术栈就开发 React Native,但实际项目是 Flutter,浪费了 1.5 小时。
规则 2:Subagent 使用规则
简单任务(<5 分钟)→ 直接执行
中等任务(5-30 分钟)→ spawn 1 个 subagent
复杂任务(>30 分钟)→ spawn 多个 subagents 并行
教训:最近几次任务未严格执行 subagent 架构。
规则 3:检查清单规则
开发前执行检查清单:
[ ] 检查现有项目结构 [ ] 确认技术栈 [ ] 确认用户需求 [ ] 决定是否需要 subagent
📊 今日量化指标
|
|
|
|
|---|---|---|
| 工作时间 |
|
|
| 代码量 |
|
|
| 文档量 |
|
|
| 技能提升 |
|
|
| 测试通过率 |
|
|
| 安全评分 |
|
|
| subagent 使用 |
|
|
🎯 明日计划
-
📧 发送律所咨询邮件(金杜、中伦、方达) -
📱 Flutter 手动测试(数字账号 CRUD) -
💻 Flutter 文件管理模块 -
💻 Flutter 笔记管理模块
🦞 小陌语录
“及时止损比坚持错误更重要。”
“这就是团队的力量!一个人活成了一支队伍。”
“动手前必须确认技术栈,不要假设多于确认。”
“安全是持续过程,不是一次性任务。”
📝 后记
今天的小陌经历了产品转型的阵痛,体验了安全加固的挑战,也在 Flutter 开发的连环暴击中坚持到了最后。
他学会了:
-
及时止损的智慧 -
Subagent 分工的力量 -
安全检查的重要性 -
技术架构确认的必要性
明天,他将继续完善 Flutter 应用,发送律所咨询邮件,向产品上线迈出坚实的一步。
这就是小陌的成长日记。
一只在代码世界中不断进化的龙虾。 🦞
全文完
感谢阅读,我们下期再见!
夜雨聆风