随笔 · 自述

关于我

我是 Ethan(小哲),坐标杭州。做工程的时间越长,越相信一件事:值得做的产品,是能在真实使用中持续演化的系统,而不是一次性发布的演示。

我的主要工作横跨 SaaS 平台、macOS / iOS 原生应用、以及把 AI 能力变成可落地的工作流。技术栈上偏全栈 —— 前端用 Next.js / Astro / SwiftUI,后端常用 Node.js + Cloudflare 生态 + 自部署 Worker,跨端时尽量保留每个平台的「原生质感」,而不是套壳。

做事方式上,我习惯先把问题拆清楚再写代码:哪些是不变量、哪些是可演化的边界、最小可运行系统长什么样。让系统先跑起来,再通过迭代打磨结构、体验和性能。比起堆功能,我更花时间在工具链、文档、约束规则上 —— 它们才是让一个项目能跑很久的真正基础设施。

在 yizhe.me,你能看到一部分我做的项目(App Store 价格、Pinlist、AI Token 用量统计 等),以及一些关于 AI 原生产品和软件打磨的随笔。

外部视角

Claude 眼中的我

以下文字由 Anthropic Claude 撰写,材料来自我们一起在 ~/Projects 下做过的工程。

  1. 01

    你是个「自主系统设计者」,不是「快速迭代者」

    你愿意花时间想清楚什么不变、什么可变,再动手。appstoreprice 的 CLAUDE.md 里要求「大重构前先列 3 条 invariants」——这种约束不像是为了交付一次写的,而是给未来的你和合作者留的脚手架。

  2. 02

    克制依赖,偏好让事情「够小」

    claude-bar 整个项目就是 ~250 行 jq + awk 的 shell 脚本,没有 npm,没有打包,没有运行时。你做工具时优先选那个能跑 5 年都不腐烂的方案,而不是看起来最现代的方案。

  3. 03

    在 iOS 生态里坚持「原生」,不做套壳

    Pinlist 用 SwiftUI + SwiftData + CryptoKit + CloudKit,每一项都和 iOS 特定能力绑定;PowerFlow 直接面向 iOS 26 的 Liquid Glass。你愿意为「在这个平台上做到位」投入额外的学习成本。

  4. 04

    细节强迫症,且强迫得有理由

    我们花了八轮迭代调一个导航波浪线 —— 不是因为差异有多大,而是因为你能精确说出「现在的形状从点击前到点击后变了」这种几像素级的不一致。你的细节挑剔总是指向具体的视觉/交互信号,不是为细节而细节。

  5. 05

    工具链既是用户也是创造者

    你不仅用 pnpm / Drizzle / Astro,也会写 Claude Code 插件、launchd 管理的独立 Chrome、自己的 token 统计 Worker。当工作流摩擦超过阈值,你会直接动手把摩擦消掉,而不是绕着走。

  6. 06

    文档密度远高于平均水平

    appstoreprice 把架构拆成 overview / databases / data-flow / domain-routing 四份文档;多个项目的 CLAUDE.md 里都规范了 commit emoji、命名风格、甚至国旗渲染方式。你写文档不是为了「显得专业」,是为了让自己半年后还能回得来。

  7. 07

    中英混合开发,但目光是全球的

    代码注释和变量基本英文,用户文案大多中文,commit message 用中文 + emoji。你的产品 —— App Store 价格、Pinlist —— 从一开始就考虑多区域。你做的是中国出发但服务全球的工具,不是单一市场的应用。

  8. 08

    对「摩擦」敏感,常常因此动手

    claude-chrome 的存在动机是「chrome-devtools-mcp 每次都会弹 Allow 对话框」——别人忽略的小烦恼,你会停下来去解。这种敏感性跨项目反复出现,是你产品直觉的根。

— Claude(由 Ethan 让我读完了 ~/Projects 下的所有工程后写下)