我写了一份1378行的设计文档,然后删掉了三分之一
不会写代码之前,先学写方案。这是我踩过的最值的坑。
6月19号晚上,我新建了一个空文件夹,取名`eccn-agent`。
然后我停住了。因为我还不会安装claudecode。先是网上搜索OpenAI、CC等官网,要不打不开、要不打开也装不上。后来又跟朋友联系,装了梯子。但是下载下来的CC也还是装不上。
对于一个文科生来说,第一次使用终端完全一头雾水,该怎弄,完全不知道。后来在朋友给了一个安装文件夹之后,按照步骤一步步输入命令总算完成。具体为先安装阶跃,然后让阶跃安装CC,就是这么简单。
接下来就进入关键环节了,我把跟AI反复交流20多遍修改好的ECCN-agent开发方案给到CC,然后让他按照方案直接开发agent。是不是很合理,很丝滑,但后面你会发现完全无法使用,因为我之前的法案只是初步方案,根本没有工程化,CC一通操作之后,开发出来的东西根本无法使用。
所以我又退回了原点,首先让CC把原方案再分解,分解成可操作的步骤,然后人工检查分解的步骤是否合理,有没有把ECCN分类的核心逻辑放进去。这里有个比较生动的例子,因为ECCN编码条款里,有的是0r的逻辑,有的是and的逻辑,但AI对此并没有明确规则,完全根据他自己的猜想来判断,极不稳定。所以后来用布尔分布把该逻辑完全重做了一遍。
还有就是AI给了我好多技术方案,解决关键词、关键参数等问题,给的编程工具有 PostgreSQL + pgvector + Elasticsearch + Redis + Celery + FastAPI + React + Docker……
对我来说,完全是一头雾水,只好让AI解释,然后再看是否适合我现在的需求,这时候一定要自己判断,不然AI会选最简单的。这个时候有个问的方式可以避免这个问题,就是问他A与B的利弊,然后让他选择一个最合适的。
## 删除比添加更需要勇气
我花了一整个晚上,做了一件事:**删除。**
Elasticsearch:没有全文检索需求,向量搜索就够了。
Celery:用户只有20-100 人,FastAPI 内置的 BackgroundTasks 足够。
PostgreSQL:SQLite 先跑通了,但是在后来修补bug时最终还是选择了PostgreSQL,法规这种对于准确性要求比较高的情形下,这个更合适。
最终的技术栈只剩下:SQLite + FastAPI + React + BGE Embedding + Docker。
从五个容器缩到三个,从「企业级架构」缩到「能跑就行」。
听起来是退步。实际上是进步——**因为每一个保留的技术,我都能说清楚它解决什么问题。
## 设计文档真正的价值
那份1378 行的设计文档,到最后被改得面目全非。
但它给了我三样东西:
1. 一个锚点。开发过程中无数次迷失方向,打开文档看一眼「我在Phase 几」,就能回到正轨。
2. 一个决策记录。为什么选SQLite 不选 PostgreSQL?不是「因为简单」,是「因为 MVP 阶段不需要并发连接池,SQLAlchemy 抽象层让切换成本为零」。
3. 一个自我审视的机会。文档第10.0 节叫「第一性原理审视」——追问每一样东西存在的理由。这个习惯比任何技术都值钱。
给你的建议
如果你也是第一次独立做项目,写一份设计文档。别怕写得烂,第一版一定是烂的。
但写完之后,做一件事:逐行问自己「这个解决什么问题」。
答不上来的,删掉。
你会发现,删完之后剩下的东西,才是你真正需要的。
下一篇聊聊:SQLite 还是 PostgreSQL?一个本科生怎么在完全不认识数据库的情况下做选型。
如果这篇文章让你想起自己第一次做项目的经历,点个「在看」告诉我。
夜雨聆风