先说结论Archify这波增长不是营销吹出来的它确实踩中了一个特别痛的开发痛点。我七周前第一次听说这个工具当时GitHub星标还不到一千现在已经是七倍多。这增长速度在开发者工具圈非常罕见尤其是它还是一个相当垂直的编码代理。我自己的项目里已经用了一轮今天把完整的原理拆解、实操流程和踩坑记录一次性写清楚。先说它是什么。Archify是一个编码代理但和普通编码代理的区别在于它在生成代码的同时会产生一份结构化的架构图谱关键点是这个图谱不是一次性写死的而是可以对照实际代码反复校验和回溯的。通俗点说以前AI写代码是闷头给你吐代码你根本不知道它心里怎么想Archify则是把它的“设计思路”画成图摆在你面前而且你还能回头检查这张图画的到底对不对。这个逻辑直接影响后续所有使用体验。我用它接入了Trae作为主力开发环境整个过程大概花了一个小时但是配置完之后原本每天要做的模块梳理、接口排查、依赖分析这类活效率提升非常明显。这篇文章就围绕Archify怎么用、为什么能直出可校验架构图、以及怎么把它放进Trae工作流中给出一份完整指南。1. 先搞清楚Archify到底解决了什么问题1.1 一个让我头疼了三年的老问题先从我自己的实际体验说起。我在维护一个中大型Java项目模块数量超过40个代码量在百万行级别。最折磨我的不是写新功能而是每次改一个公共接口都要搞清楚它被哪些服务引用、依赖链路有多长、改完会影响哪些模块。我试过用文档记录写的时候挺认真两个月之后必然过期也试过用静态分析工具导出依赖图图和代码同步不了永远慢半拍。后来我尝试让生成式编码工具直接帮我梳理效果也很一般。原因很简单传统编码代理是基于对话生成代码它脑子里没有全局结构的概念只能在一个文件一个文件的上下文里工作。我问它“这个接口被哪些模块引用了”它能给我答案但答案经常是猜的。因为它的训练数据里没有我项目的完整结构。这不是模型笨是工作方式决定的。Archify化解这个问题的方式很巧妙。它不是在对话里回答“你觉得这个接口被谁引用了”而是实时从当前仓库抽取代码结构构建一张事实图谱再基于这张图谱回答问题。这就相当于给了编码代理一张真实的地图它基于地图指路而不是凭记忆瞎猜。1.2 架构图“可校验”到底是什么意思很多工具都能生成架构图但Archify强调的核心词是“可校验”。这个词一开始我没太在意用熟了才发现这是全场最重要的设计决策。一般AI画架构图画出来的是一张静态图片或者是一个PlantUML/Mermaid文本。这种图的问题是它是一次性输出你无法验证它是否准确也没法追溯它的依据。代码改了图就过期了。可校验的意思是说这张架构图不是画出来的而是从一份事实数据模型里渲染出来的。这份数据模型记录了每个类、每个方法、每个接口之间的真实调用关系图只是它的一个可视化投影。也就是说Archify生成的架构图背后有一张“事实表”你可以随时对着源码核实。如果代码变了这张事实表也会跟着变架构图重新渲染出来就是新的。这个差异非常关键它把架构图从“印象派绘画”变成了“工程图纸”。1.3 它和普通AI画图有什么区别我拿同一个项目对比过几种方案差距很明显普通AI画图工具你给它一段代码或一个需求描述它生成一张架构图。问题在于生成的过程是一次性的图里如果有错误你没法定位错误是哪里来的只能手动改图。静态图分析工具比如纯可视化插件能准确生成依赖图但不理解业务语义只是一个结构投影不会告诉你“这个模块设计得有问题”。Archify先建立事实图谱再在这个图谱上增加分析能力最后渲染架构图。所以它既能保证图的准确性又能基于图谱做智能分析。这两者的差异用一句话来形容普通工具是在画画Archify是在施工完的建筑上做测绘。测绘出来的图纸每一根柱子都是真实存在的。2. 核心原理拆解编码代理是怎么“直出”架构图的2.1 先理解Archify的工作流程Archify的工作逻辑可以拆成四步理解了这四步你就能明白它哪些能做、哪些不能做。第一步是仓库索引。它会在你的项目里建立一个轻量索引读取源代码中的类定义、接口声明、调用关系、依赖引用。这一步相当于给项目做了一个快照但它不是简单的是字符串扫描而是解析出语义级的关联。比如它知道某个方法调用是真实的运行时代码路径里的调用而不是只是同名文本。第二步是图谱构建。解析出来的信息会被组织成一张知识图谱节点是代码实体类、接口、方法边是它们之间的关系继承、实现、调用、组合。这是整个系统最核心的资产。第三步是对话推理。你在对话中提问时编码代理不只是把问题直接丢给大模型而是先从图谱中检索出相关代码实体和关系再把这些信息拼进上下文最后让大模型基于这些真实信息做推理。第四步是渲染输出。当你需要架构图时它从图谱中提取指定范围的节点和边渲染成SVG格式的架构图图里所有元素都能点击和溯源。这个流程的核心价值在于所有回答都有“依据”不是大模型编的而是从图谱里查出来的。这就把生成式AI最常见的“一本正经瞎说”问题在架构梳理这个场景里大幅消解掉了。2.2 “可校验”背后的三层机制用了一段时间之后我认为Archify在“可校验”上做了三层设计每一层都对应一个层面的问题。第一层是事实可校验。图谱里的每个节点都能对应到具体的源码文件、文件行数、依赖定义。你可以随时点开任何一个模块定位到代码位置。这解决的是“这个图到底靠不靠谱”的问题。第二层是推理链可校验。当你让Archify分析“这个模块为什么要依赖那个模块”的时候它会把分析依据列出先看哪里定义了调用再看这个调用的上下文是什么然后得出依赖的结论。整个过程是可溯源的不是黑盒。第三层是变更可校验。这也是我认为最实用的一层。代码改了之后Archify会感知到变化并重新渲染相关的图谱部分。你不需要手动同步架构图它跟着代码走。我自己的体会是这一步才是“可校验”三个字的灵魂。因为前期画图准确不难难的是代码持续演进之后图还能保持准确。2.3 图数据与渲染的分离设计这里想多说一句Archify的底层设计因为很多人会忽略这个细节。它的架构图不是“生成”的而是“渲染”的。这两者有什么区别呢生成是从无到有渲染是数据到视图的映射。Archify构建了一份标准化的架构数据模型所有架构图都是这个模型在不同视角下的投影。比如你可以投影成模块依赖图、类关系图、时序调用图但底层数据是一份。这个设计带来了一个隐藏优势你可以在架构图上叠加多种分析结果。比如依赖图中可以看出循环依赖类关系图中可以看出过度耦合时序图中可以排查链路瓶颈。这些分析不是基于图做的而是基于底层数据模型做的图只是分析结果的展示。这个思路和我们做数据可视化是一个道理。Excel的图表之所以好用不是因为它画图厉害而是因为它背后有一张真正的数据表。改了数据图表跟着变。Archify做的就是把代码变成那张“数据表”。这个思路很值得借鉴尤其是在项目规模上涨之后你会发现这个设计带来的长期收益远大于短期的图表效果。3. 实操篇Archify怎么用含Trae里的Skill用法3.1 安装与前置准备Archify的使用门槛不算高但要做好几点准备。首先它不是一个独立的图形化软件它是以编码代理的形态嵌入到你的开发环境里的。也就是说你需要有一个支持的IDE或编辑器然后在里面安装Archify插件或者Skill模块。我用的环境是Trae先说在Trae里的安装步骤。Trae的扩展商店里直接搜索Archify就能找到官方插件。安装完成后需要在项目的根目录下初始化一次索引。这一步很重要很多人在这一步卡住因为Archify默认不会自动扫描你的整个仓库需要你手动触发一次初始索引。初始化的命令很简单在Trae的终端里执行archify index --init这个命令会读取项目根目录下的archify.config.json没有会自动创建然后开始扫描代码。我的项目有40多个模块、几十万行代码初始索引大约用了两分钟。大型项目可能需要更久但这是一次性的之后都是增量更新。索引完成后会在项目目录下生成一个.archify/文件夹里面存放的是图谱数据和索引缓存。这里建议把它加进.gitignore不要让图谱数据进入版本控制因为它是本地派生资产团队其他人可以自己构建。3.2 在Trae里安装Archify Skill如果你用的是Trae除了插件方式还可以通过Skill的方式使用Archify这也是官方推荐的做法。所谓Skill就是一套预定义的工作流指令它能让Archify在特定场景下自动执行一组动作而不是每次都用对话提问。安装路径在Trae的Skill配置区域选择“添加Skill”在源里指定Archify/archify-skill这个仓库地址添加后重新加载一次IDESkill就会出现在你的技能列表里。Skill装好之后你不需要再手动输入繁琐的提示词直接以自然语言描述目标就行。比如我在Trae里输入“分析支付模块对订单模块的依赖原因”Archify的Skill会自动分包执行这几步定位相关模块代码提取依赖关系查询图谱中的关联路径生成分析报告最后附带可视化的架构图。这里面有个使用习惯值得分享不要让Skill每次都全量分析整个项目成本高且噪音大。我习惯在描述任务时加上范围限定比如“只看service层的调用关系”或者“focus在xxx包下的接口”这样Skill会只处理指定范围的图谱数据结果更精准响应也更快。3.3 五种高频使用场景我实际用下来最值得分享的是五个高频场景几乎每天都会用到。第一个是“改代码之前的依赖影响分析”。这是我最常用的场景。改动一个公共方法之前我会先在Archify里提问“如果改了这个方法的签名会影响哪些模块”它能快速列出所有调用方和受影响范围甚至能给出风险等级建议。省去了挨个搜索引用的时间。第二个是接手不熟悉的项目。之前接手过一个微服务项目Stream相关代码有一百多个文件如果只看代码理清结构至少需要一天。我用Archify生成了模块依赖总览图先看整体再看局部一个下午就把核心链路弄明白了。第三个是Code Review辅助。这个功能很实用。Archify能在PR提交时对比改动前后两版架构图谱标出哪些依赖路径发生了变化。这比人肉review时猜“这行代码改了影响什么”要靠谱得多。有一次我在PR里改了一个工具类的底层实现本来以为影响范围不大Archify标出来三个远端模块会受到影响还好提前发现了。第四个是查询历史关联。比如我想知道“订单模块在哪些版本迭代中和库存模块发生过关联改动”它会结合版本历史和图谱数据给出分析。这在排查回归问题的时候价值很大。第五个是自动生成架构文档。以前我们团队写架构文档全靠人肉代码一旦更新文档立刻过期。现在我用Archify生成模块架构图直接嵌入到项目的docs目录配合CI流程每次代码合并后自动重新生成保证文档永远和当前代码同步。这个习惯养成了之后新同学熟悉项目的时间能缩短一半以上。4. 参数与细节配置按项目规模调整4.1 关键配置项说明用Archify不是安装完就能用得好有几个配置项建议根据项目规模调整。打开项目根目录下的archify.config.json可以看到类似这样的结构{ scan: { include: [src/main/java, src/modules], exclude: [src/test/java, build, generated], depth: 3, maxFiles: 20000 }, graph: { enableLombokAware: true, enableSpringAware: true, mergeModuleByPackage: true }, ai: { contextWindow: 32000, repoSummaryMode: balanced, autoIndexInterval: 60 }, export: { defaultFormat: svg, includeDependencies: true, includeImpactAnalysis: true } }scan.depth是索引时递归解析的包深度值越大分析越细但索引时间和graph的体积也会显著增加。我个人建议中大型项目控制在3到4你不要设成10否则索引一次要等半小时。scan.maxFiles是扫描文件上限超过这个数值的仓库会自动忽略多余文件如果你的项目特别大建议主动调高并配合exclude缩小范围。graph.enableSpringAware是Spring框架的特殊解析支持开关打开后它会识别Service、Repository、FeignClient这些注解把Spring的容器关系也纳入图谱。这个开关对Spring项目建议必须开启否则图中只会看到类与类的直接引用看不到运行时装配的关系链。mergeModuleByPackage是按包名聚合等价模块如果你的项目是Maven多模块结构开这个选项可以按业务域合并聚合避免出现几十个节点挤在一张图里的情况。ai.contextWindow是大模型推理时使用的上下文窗口大小。这个参数建议根据你IDE插件配置的大模型能力来调整比如你的模型支持128K上下文可以设在64000左右如果只有32K设太大反而浪费。autoIndexInterval是自动增量索引的间隔单位是分钟代码变动频繁的项目可以设小一点但太小的代价是后台扫描会占一点CPU。4.2 我踩过的坑与注意事项踩坑记录也是干货的一部分。有几个问题我用了两周才彻底搞明白提前分享出来你们能少走弯路。第一个坑是索引范围控制不好导致图和内存爆炸。我第一次跑大型项目时没有设exclude把node_modules和target生成目录全扫了进去结果图谱节点数量直接飙升到几十万个图渲染得极其卡顿问答响应也慢到怀疑人生。后来把生成目录和测试目录全部排除只保留源码目录性能才恢复正常。这个教训很重要包括排除目录字段不是一个“增强选项”索引性能的生死线就是它。第二个坑是.archify/目录误提交到Git仓库。有一次同事把本地图谱数据提交到了远程仓库整个仓库体积瞬间增大几百MB后面所有拉取代码的同事都遇到磁盘爆满的问题。一定要在最初阶段就把.archify/写入.gitignore并且给团队立好规矩。第三个坑是Lombok前端的影响。项目用了Lombok但是索引阶段没有启用Lombok感知导致生成的类关系图里getter/setter方法全部缺失某些依赖分析结果明显不准。这个问题的排查也花了一些时间后来在配置里打开enableLombokAware才修复。如果你的项目大量使用Lombok这个配置项务必首轮就打开。第四个坑是自动索引可能引起缓存过期。默认的autoIndexInterval是60分钟如果你改完代码马上问它问题它用的还是旧图谱数据。别急着怀疑工具损坏或配置失效先手动触达一次增量索引archify index --incremental顺手养成一个习惯改完代码、准备开始分析之前先执行这个增量索引命令。这个小操作基本能杜绝八成“分析结果不对”的文章类问题。5. 常见问题速查表与排查实录5.1 高频问题与解决方法基于社区讨论和实际操作中遇到的情况我整理了一份高频问题速查表可以直接当排障手册用表现可能原因处理办法索引成功但架构图为空源码目录配置不对扫描路径没有覆盖真实代码检查scan.include确认包含主代码目录图里少了Lombok相关的方法没有开启Lombok感知打开enableLombokAware后重新索引依赖分析和实际运行逻辑不符自动索引过期问答用的旧图谱执行archify index --incremental增量索引大项目渲染图非常卡图谱节点规模太大返回数据过多调整scan.depth和maxFiles用树状过滤器缩小范围在Trae中Skill不生效Skill安装后未重新加载IDE重载Trae窗口然后在依赖中重新选择SkillSpring的注入关系没有在图中体现enableSpringAware没有开启打开该开关并重新做一次全量索引生成内容太泛全是套话当前提示词范围太宽没有聚焦用focus限定包名、模块名或层次关系模块图里节点太多重叠看不清没有启用模块聚合打开mergeModuleByPackage按业务域合并节点5.2 排查思路与实操技巧遇到问题别急着怀疑工具坏了大部分情况是配置或者使用习惯的问题。我介绍一套我的排查套路先看索引是否最新再查图谱数据是否合理最后才看渲染和上下文。先说索引层面。出现“分析结果和实际代码不一致”时第一反应就是更新索引。这一点在代码密集改动期特别容易发生改完一个方法名比如intents重命名方法如果忘记增量索引后面所有和这个方法相关的分析都会基于旧数据得到的结果自然不准。执行增量索引后还要花几秒钟在对话里让它重新拉取相关模块的数据再提问八成以上会解决。第二步是图谱数据检查。如果你觉得图里的依赖关系有问题可以用查询指令直接看原始图谱数据确认节点是否存在、边是否连接archify graph query --focuscom.example.order.service --depth2这个命令会输出指定包或类周围的原始关系数据有利于判断问题出在图谱构建阶段还是后面的渲染阶段。如果这里的边是对的那就是渲染或者上下文理解的问题。第三层才是模型上下文的问题。如果图谱数据是对的但Archify给出的分析结论还是不对基本就是大模型在基于图谱推理时自己发挥过度了。解决办法是把提问范围缩得更窄不要问“分析下这个项目”要问“分析com.example.order.service.OrderServiceImpl调用OrderMapper的这3条路径给出其中风险最高的一条”。问题越聚焦推理越靠谱。这一点和任何大模型工具的使用道理是一样的上下文收窄幻觉就会减少。6. 使用Archify之后的架构工作流变化6.1 我的日常工作流改造用了三周后我原来的架构梳理工作流发生了实实在在的变化这笔账值得算一算。以前我做一个跨模块改造准备阶段通常是这样的先在IDE里全局搜索所有调用方关键词搜索、逐个打开文件读上下文再手动记录调用关系最后画出一个粗糙的Excel思维导图。这套流程通常耗时半天而且画出来的图只能在当时有效代码一改就作废。现在我让Archify做同样的事整个流程缩短到大约二十分钟以内提出需求、它自动定位边界、跨模块路径分析、依赖影响面排序图渲染出来还能直接溯源验证。Code Review的变化也很显著。以前Review 500行以上的大PR我至少需要一个小时来理清什么数据流产生了变化、有哪些外部调用受影响了。现在Archify会在PR对比模式下直接给出变更相关的影响模块列表我会先看它的影响面分析再逐段读代码。实测Review时间减少了大概一半而且发现的问题类型更接近深层的设计关联问题而不是结构表面上能看到的拼写和常识问题。6.2 团队协作模式的变化我们团队的架构文档协作方式也在不知不觉中被改变了。以前写架构设计文档的责任原子化地落在架构师一个人身上文档更新需要相当多的人工打磨和维护成本。现在我们将Archify的图谱导出作为基准图放置到团队知识库每次重大架构调整时更新图谱、再在图谱基础上补充文字决策说明和背景上下文。这份文档中的人力比重发生了迁移从“画图的人”变成“解释图的人”而图本身始终保持最新准确状态。这里有一个非常重要的注意点不要完全信任图谱自动生成的结论——尤其是它给出的影响面分析可以辅助你缩小关注范围但它不替代Code Review和测试用例。自动生成的架构图再准确它也只是捕获了代码的结构关系没有捕获业务语义和演进历史。代码生态的整体变化与评估比如“为什么要保留这个模块”这类决策问题还是得靠人的判断。7. 我个人的一点体会聊到最后说点主观感受。Archify并不是一个完美的工具它还有一些做得不够好的地方比如对多语言项目支持还不均衡——Java的图谱质量明显好于Python和Go比如它索引大型仓库时的资源占用还有优化空间但整体方向我非常认可。我真正看好的是它代表了编码工具下一个阶段的演进方向从单纯的代码生成走向结构感知。一个只会生成代码的代理就像是一个只会码砖但不看图纸的施工队而一个能感知结构、追溯关系、校验事实的编码代理才是真正意义上的“工程师”。Archify让我第一次感觉到AI编码工具的终点不只是一个更强的打字员而是一个能真正理解系统的交付助手。如果你已经重度使用编码代理或者说你需要经常面对以前没有接触过的耦合边界错综复杂的系统我建议你找一个下午把Archify接入到你常用的环境里试一轮。不要急着用它跑大项目先从一个小模块开始生成一张模块关系图再对比你的认知你会感受到这个工具的独特之处——它不一定让你写出更多代码但一定能让你更清楚自己在写什么。最后再分享一个小技巧每周五下班前我会让Archify把本周所有改动涉及的模块生成一张增量变化图快速回顾这一周代码演进的全貌。这个习惯坚持了一个月之后我对项目的全局掌控感明显比过去更强。这个小动作只需要五分钟但带来的价值非常高推荐你们也试试。