把一个开源项目改成自家产品,很多人以为难点是画个新图标。真做过一次就知道,图标是最容易的那一步。
这次改的是一个开源 AI 编辑器,MIT 协议,允许改、允许卖、也允许换名字发出去。光是改名,就动了 68 个文件、59 个语言文件、297 行文案。
一、先查 appId,它比 logo 重要
原来的应用标识形如 ai.opencode.desktop.dev,读法很清楚:别人的公司、别人的产品、开发通道。
这个字符串看着不起眼,但它决定三件事:程序装到哪个目录、数据存在哪个目录、系统里跟哪个快捷方式算同一个应用。不改,它永远住在上游家里,用户升级一次就可能被拉回去。
二、59 个语言文件,一个也躲不掉
这类项目的文案按语言拆文件,59 个文件加起来 297 行。
59 个文件不等于 59 种语言都有人用,但改的时候一个也躲不掉——他哪天在英文界面里崩一次,弹出来的还是别人家的名字。
做法是脚本只扫指定的几类键:菜单名、崩溃提示、权限说明。其余一律不碰:模型提供商的名字、命令行工具名、配置文件名全部原样保留。这三类如果一起改,程序会连不上真实的账号体系。
三、小尺寸图标必须单独画
图标一共出了 16 到 256 七个尺寸。256 上两个字母很精神,缩到 16 一看,中间那条缝被像素吃掉,糊成一个白块。
所以小尺寸换了字形:16、24、32 用单个字母,48 以上才用完整字标。Windows 的任务栏、窗口标题栏、文件列表用的恰恰就是 16 到 32 这几档。
验证不靠眼睛:打包完从 exe 里把图标提取出来看,看到的是字母而不是方框,才算真装上。
四、默认目录的坑在数据库里
新装的默认项目目录在系统的文档目录下——听起来无所谓,但你每天开工的第一个动作,都发生在别人的目录结构里。
改代码只要一行,麻烦的是数据:第一次启动时它已经把这个目录记进数据库了。删掉记录、重启,它又从旧会话里把那条写了回来。项目 id 是目录路径的哈希,最后只能反着做:先把新目录写进表里,把旧的那条归档,再把最近打开过的会话切过去,三样齐了它才认新工位。
默认值大概是最难改的东西,它不在代码里,在数据里。
五、能改的是「我是谁」,不能改的是「我用了谁」
改名时有一批东西必须留着:
- 署名:关于页加一行「Built on OpenCode (MIT)」。不是客气,是协议要求。
- 服务名:模型列表里的账号体系是人家真实的,改了就是骗自己的用户。
- 链接协议:
opencode://这个开头不动,动了别人存的旧链接全部失效。
还有一个差点漏掉的:打包工具默认写一份自动更新配置,指向上游的更新服务器。留着它,程序第一次联网就会把自己换回官方版——构建出来的是你改过的版本,更新拉回来的是没改过的版本,一次覆盖,前面全白干。
六、这套流程能复用到别的项目吗
能,三条:
- 改名前先查 appId,它决定安装目录、数据目录和快捷方式归属。
- 小尺寸图标单独画,16、24、32 用简化字形。
- 默认目录改完要清数据,路径哈希写在库里,光改代码会被旧记录复活。
一个 AI 员工真正入职,不是它能干活那天,是它开始用自己的名字、住自己的房子那天。这个项目的完整做法记在陆吾案例;如果你也在评估「用开源改还是从零写」,可以看AI 应用那页。