乐于分享
好东西不私藏

我写了一份1378行的设计文档,然后删掉了三分之一

我写了一份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 足够

PostgreSQLSQLite 先跑通但是在后来修补bug时最终还是选择了PostgreSQL法规这种对于准确性要求比较高的情形下,这个更合适。

最终的技术栈只剩下:SQLite + FastAPI + React + BGE Embedding + Docker。

从五个容器缩到三个,从「企业级架构」缩到「能跑就行」。

听起来是退步。实际上是进步——**因为每一个保留的技术,我都能说清楚它解决什么问题。

## 设计文档真正的价值

那份1378 行的设计文档,到最后被改得面目全非。

但它给了我三样东西:

1. 一个锚点。开发过程中无数次迷失方向,打开文档看一眼「我在Phase 几」,就能回到正轨。

2. 一个决策记录。为什么选SQLite 不选 PostgreSQL?不是「因为简单」,是「因为 MVP 阶段不需要并发连接池,SQLAlchemy 抽象层让切换成本为零」。

3. 一个自我审视的机会。文档第10.0 节叫「第一性原理审视」——追问每一样东西存在的理由。这个习惯比任何技术都值钱。

给你的建议

如果你也是第一次独立做项目,写一份设计文档。别怕写得烂,第一版一定是烂的。

但写完之后,做一件事:逐行问自己「这个解决什么问题」。

答不上来的,删掉。

你会发现,删完之后剩下的东西,才是你真正需要的。

下一篇聊聊:SQLite 还是 PostgreSQL?一个本科生怎么在完全不认识数据库的情况下做选型。

如果这篇文章让你想起自己第一次做项目的经历,点个「在看」告诉我。