乐于分享
好东西不私藏

我用AI给自家做了一套家谱软件

我用AI给自家做了一套家谱软件

一个人,一个月,迭代17个版本。不是程序员,但确实做出来了。

先上结果

这是我家关氏的部分族谱,家谱树形展示,可以搜索家庭成员并在家谱树中定位到他/她。点开可以编辑以及看到该家庭成员的详情。

照片墙,可以拖拽排序、批量上传、关联成员;

故事集,可以添加照片,关联成员;

打印预览,可以选定某一个节点以及后代代次数量来进行预览和打印。保存pdf时的规格是A5纸张,包含封面、世系图、成员表、照片墙,浏览器打开后Ctrl+P就能导出PDF:

还支持一键备份,导出为一个文件夹,包括了家庭成员表、照片(及关系)、故事文件。

不是买的现成软件,不是找外包做的,是我自己用AI Agent做的。

更准确地说,是我和AI一起做的。所有代码都是WorkBuddy帮我写的,我负责提需求、调细节、测功能。

怎么开始的

家里有一张老族谱,是我的爷爷多年前整理的。关氏从他们还记得的人到现在,传了八代。纸质的家谱有几个问题:不好更新、不好翻阅、不好保存、也不好分享给住在其他城市的亲戚。

去年就想把它数字化。试过几个方案:

  • 族谱网站:注册填一大堆信息,界面丑,数据不安全,效果还差
  • Excel:能记信息,但做不出家谱树,看着就是一张表
  • 免费/付费软件:功能繁杂,使用限制太多

想来想去,我既然想做AI 相关的项目,干嘛不自己写一个?


做了什么

说”写一个软件”听起来很大,但拆开来看,就是一个个具体的功能:

功能
做了什么
成员管理
增删改查,姓名/性别/出生逝世/寸照/简介,支持批量导入导出CSV
家谱树
Canvas画的可视化树,按代次排布,支持折叠展开、点击定位
照片墙
多选上传、拖拽排序、编辑说明、关联成员、批量删除
故事集
记录家族事迹,支持配图,批量导入导出JSON
打印预览
HTML生成,A5纸张布局,封面+世系图+成员表+照片墙,Ctrl+P导PDF
备份恢复
一键备份全部数据(成员+照片+故事+照片墙元数据),一键恢复
CSV批量导入
11列模板,自动编码检测,三步事务(入库→计算→冲突检测),失败整批回滚

技术栈很简单:Python + tkinter(系统自带)+ SQLite(系统自带)+ Pillow(唯一的第三方库)。

纯离线,不联网,数据全在本地。


技术选型

作为一个做项目管理的人,不是程序员,技术选型的思路跟工程师不一样。我不是看哪个框架性能好、哪个语言流行,我就看三条:

能不能自己搞?tkinter是Python自带的,不用装环境,双击就能跑。其他的框架太重,Web又要搞前端。(之前搞了VUE,发现代码写来调试还是要花大量的时间,放弃了)。就Python我还熟悉一点儿,虽然也不算熟。(事实上,这个项目我全程没有看代码,只看了readme.md)

数据安不安全?家族信息不想放到别人的服务器上。SQLite就是一个本地文件,备份就是复制文件,简单粗暴。

AI能不能帮?这是最关键的。这个项目所有代码都是AI辅助写的,我需要选一个AI最擅长的技术栈。Python是AI写代码最熟练的语言。

三条都满足,就它了。


迭代过程

从v1.0到v2.6f,一共17个版本,横跨一个月。

前期很猛。4月16日一天迭代了9个小版本(v1.0到v1.9),每个版本解决一个具体问题。当天的工作方式是:提需求→AI写代码→我测→发现问题→提修改→再测。循环往复。

中期踩了大坑。家谱树的可视化做了三遍。

第一版用的是递归布局,画出来节点位置和连线终点对不上,子树互相重叠。我用了一周,凑合着用。

后来让AI做了一次代码评审,一下报了10个问题,其中家谱树绘制被判”严重Bug”。评审报告写得详细:问题在哪、怎么改、给了示例代码。我花了半天照着修,改成了逐代排布——先按代次分组,再居中分配位置,最后统一画线。问题彻底解决。

后期打磨细节。折叠展开、点击定位、照片墙多对多关联、批量删除、UI重构……这些功能单个都不大,但加起来让软件从一个”功能堆叠”的东西变成了一个”可用”的东西。


最大的收获

有人问我:花一个月做一个家谱软件,值得吗?

说实话,如果只看”值不值”,这个问题没法回答。因为家谱软件本身不需要花一个月——市面上的工具半小时就能搞定,虽然对我的需求满足上不一定有我这个好。

但这个月的价值不在于软件,在于”我做出来了”这件事本身。

做了多年IT项目交付,我一直在管别人做东西。需求是我写的,验收是我做的,但很多年我自己没写过一行生产代码了。这个项目让我完整经历了一个软件从零到交付的全过程:需求分析、技术选型、迭代开发、代码评审、Bug修复、用户测试、版本管理。

不是在公司,是在自己家,给自己做。心态完全不同。

另一个收获是验证了一件事:AI辅助非程序员开发产品这条路,确实跑得通。我不是程序员,但我有一个完整的软件,4600行代码,12个文件,功能齐全,已经在用了。而且已经开源了,代码在GitHub上,谁都能看。


开源了

毫不犹豫,决定开源。

原因很简单:这个软件解决的是真实的需求,不止我一个人有这个需求。家族想数字化族谱的人很多,但大部分人不是程序员。如果我的代码能让别人参考、甚至直接用,那就应该开源。

项目地址:https://github.com/xingxinginworld/family-tree

纯Python,零网络依赖,装个Pillow就能跑。如果你也想给自己家做家谱,可以试试。