官网:www.zhenxiaoning.com
App Store:搜索「镇小宁」即可下载
赛道:Code with SOLO
1. 摘要
这是一款本不该存在的软件。
如果每个人都能在深夜放轻脚步,镇小宁 就没有存在的必要。但现实里,楼上的低频撞击、拖拽、跑跳声,往往很难录清、很难说清,也很难取证。
于是我这个缺乏 iOS 底层开发经验的人,用 TRAE SOLO 做出了一款已经上架 App Store 的噪音治理 App:它能记录分贝、震动、异常事件和取证报告,还能把每一次“砰”封印成一只噪音怪兽。
图注:镇小宁监测首页:把楼上噪音变成可记录的分贝、震动和事件数据。
2. 背景:我为什么要做镇小宁
我长期被楼上噪音困扰。真正折磨人的,不只是声音本身,而是它的不可预测。
你不知道下一声什么时候来,也不知道该怎么证明它真的发生过。
你明明被吵醒了,但拿出来的可能只是一句“刚才真的很吵”。
对物业、邻居、调解方来说,这句话很难成为事实。
普通分贝仪能显示数字,但它解决不了三个问题:
-
低频闷响经常被手机系统自动处理掉。
-
单张截图很难说明噪音发生的时间、频次和持续性。
-
长期记录噪音很痛苦,每次打开工具都像在重复确认自己的崩溃。
所以我一开始只是想做一个取证工具。后来我发现,单纯的取证工具太冷了,它只是一个痛苦记录仪。
于是我给镇小宁加了另一层灵魂:把噪音交给 AI,生成“夜啼婴”“天花板巨人”“燹鸣”这样的怪兽档案。不是为了娱乐化痛苦,而是为了把无形的恐惧变成一个可以被命名、被收集、被处理的对象。
图注:怪兽收容所:每一次噪音异常,都被封印成一只可追踪的怪兽。
3. 实践过程:我和 SOLO 怎么把它做出来
3.1 第一步:把一个崩溃想法拆成可开发系统
我最开始给 SOLO 的描述非常大白话:
我想做一个 iOS App,用来记录楼上噪音。
它要能测分贝、录音、记录时间地点,还要能把噪音变成怪兽图鉴。
我不会 iOS 音频底层,你要帮我拆架构、写 SwiftUI 页面、设计音频采集逻辑。
SOLO 帮我把项目拆成三条主线:
-
取证线:分贝监测、录音线索、时间地点、异常事件、导出报告。 -
识别线:声源识别、低频冲击检测、动态基准线、误报控制。 -
转化线:AI 怪兽档案、噪音故事、协商材料、用户成长体系。
这一步对我很关键。因为我不是专业 iOS 工程师,如果直接开写,项目很容易变成一堆互相缠绕的页面。SOLO 帮我把它拆成 SwiftUI + 服务层 + 云端数据的结构,再一点点补齐。
3.2 第二步:让 iPhone 尽量听见低频噪音
第一个硬坑是:iOS 默认会对麦克风输入做处理,很多楼板低频闷响会被削弱。
我问 SOLO:
iPhone 录音为什么听不到楼板低频撞击?
我不是要做音乐录音,我要尽可能真实地保留环境噪音。
Swift 里应该怎么配置 AVAudioSession?
SOLO 帮我围绕 AVAudioSession.Mode.measurement 设计采集链路,尽量减少系统自动降噪、增益和滤波的干扰。后面又继续补了音频 buffer 分析、软件增益、频域识别等思路。
这里我第一次感觉到:SOLO 不是只会写页面,它能把一句“我想抓住楼上那种闷响”,拆成音频采集、频域分析、异常峰值和数据记录。
3.3 第三步:只看分贝不够,必须控制误报
第二个坑是误报。
如果只看瞬时分贝,开门声、说话声、风声都可能被记录成异常。但楼上噪音最典型的是低频冲击、重复拖拽和突然撞击。
我继续问 SOLO:
我不想只看分贝峰值。
楼上噪音往往是低频冲击、重复拖拽、突然撞击。
能不能做一个动态基准线,让环境本身变吵时不要一直误报?
SOLO 帮我设计了混合检测思路:
-
用 SoundAnalysis / CoreML 做声源辅助识别。
-
用 vDSP / FFT 捕捉低频异常变化。
-
用动态基准线适配当前环境噪声,降低误报。
我最喜欢的是动态基准线:环境突然安静时,基准线要跟得快;环境慢慢变吵时,基准线要升得慢。这样既能抓住突发撞击,又不至于把整段背景噪音都当异常。
【图片 3:数据分析_作息规律烦噪趋势】
图注:数据分析:把噪音记录转成作息规律、烦噪趋势和可复盘数据。
3.4 第四步:怪兽图鉴和严肃证据必须同时存在
镇小宁不是只做可爱图鉴。它必须能在需要协商时变得严肃。
我给 SOLO 的要求是:
App 内部可以叫“天花板巨人”“夜啼婴”,但导出给物业或调解方时不能这么写。
请帮我设计一个导出规则,把娱乐化命名转换成严肃描述。
例如“天花板巨人”变成“疑似楼板撞击声”。
最后镇小宁形成了两套表达:
-
App 内:用怪兽图鉴降低恐惧,增强收集感和掌控感。
-
导出时:转成时间、设备、峰值、持续时间、异常事件和报告。
也就是说,镇小宁表面是“怪兽图鉴”,底层是“噪音证据链”。
图注:AI 根据噪音数据生成怪兽档案,把无形恐惧变成可命名、可收集的对象。
图注:取证报告预览:时间、设备、峰值、异常事件被整理成可分享材料。
3.5 第五步:从 Demo 到真正能上架的 App
真正难的不是做一个漂亮 Demo,而是把它变成能长期使用、能上架、能维护的产品。
SOLO 后续陪我处理了很多杂但关键的问题:
-
SwiftUI 页面状态混乱。
-
调试入口隐藏导致测试困难。
-
游客数据迁移到注册账号时,图鉴、录音线索、算力需要一起迁移。
-
后端权限、VIP 配置、触发器和字段兼容问题。
-
App Store 上架前的隐私政策、用户协议和权限说明。
下面这两张是我和 SOLO 真实协作的截图。它们不是宣传图,而是我把问题丢给 SOLO 后,它直接改 SQL、改 Swift、修权限、补配置的过程。
图注:TRAE SOLO 协作截图:修复后端权限触发器与 VIP 配置。
图注:TRAE SOLO 协作截图:修复 Debug 日志入口与 SettingsView 逻辑。
如果没有 SOLO,我大概率会卡死在这些“不酷但必须解决”的工程细节里。它真正帮到我的地方,是把我从一个只会描述痛点的人,推到了可以独立交付产品的人。
4. 成果展示
4.1 监测:把噪音从感觉变成数据
镇小宁可以记录环境分贝、震动、触发次数、噪音峰值和最近捕获,让“我感觉很吵”变成可复盘的记录。
4.2 图鉴:把噪音从恐惧变成怪兽
每一次异常都可以进入怪兽收容所。用户看到的不是一串冷冰冰数据,而是一只被捕获、被命名、被记录的怪兽。
4.3 证据:把零散记录变成报告
镇小宁可以把一天的异常事件、峰值、趋势和事件时间线整理成报告,便于后续协商、投诉和留存。
图注:全天监测报告:将零散噪音记录整理成结构化证据。
4.4 声掩蔽:把崩溃拉回可控
我不希望镇小宁鼓励冲突升级。它的目标不是报复邻居,而是帮助被噪音困扰的人记录事实、整理证据、保持边界,并通过声掩蔽等方式缓冲情绪压力。
4.5 宣传视频
15 秒竖屏宣传视频:
5. 效果与总结
这次开发让我真正理解了 TRAE SOLO 的意义。
它不是“替我写几段代码”的工具,而是一个能陪普通人穿过陌生技术栈的合作者。
没有 SOLO,我可能只会继续忍受噪音,或者买一个普通分贝仪截图;有了 SOLO,我把这个真实痛点做成了一个已经上架 App Store 的产品。
对我来说,镇小宁有三层价值:
-
它是工具:记录噪音、辅助协商、保留线索。
-
它是疗愈:把未知的惊吓变成可命名、可收集的怪兽。
-
它是方法:当一个普通人的痛点足够真实,AI 可以把“我不会”变成“我可以试试”。
我也想把这套方法分享给更多正在被噪音折磨的人:不要只剩下忍耐,也不要先把关系推向失控。先记录、先表达、先协商,让数据和文字帮你站稳。
镇小宁的 slogan 是:
镇小宁 真安宁 镇安宁。
每一声“砰”,都应该有名字、有时间、有证据。
感谢大家能看到最后,也更加感谢TRAE,感谢这个时代的巨大发展














