Skip to content

Qoder 组织大型项目的核心优势

核心问题

Growth 产品横跨两个仓库(Client + Components)、57 个 .NET 项目、168 个前端 package、桌面端和 Web 端混合架构——面对这种规模的代码库,Qoder 怎么帮你理清楚?

在进入具体的开发流程之前,这一章先展示 Qoder 组织大型项目的几个核心能力。这些能力贯穿整个第三部分,是后续所有章节的基础。


能力一:多工作区拆分——工程太大,一个工作区放不下

双工作区拆分架构

使用篇

传统 IDE 的做法是一个工程一个窗口。但 Growth AIOS 的代码量太大了——两个仓库、57 个 .NET 项目、168 个前端 package,再加一堆外部参考框架。

如果全部塞到一个工作区里,文件数量太多,RepoWiki 都无法正常生成知识摘要。所以实际的配置是拆成两个工作区

工作区一:COMPONENTS(组件库)
├── AiAgent/               ← AI Agent 管道
├── AiAgent.Integration/   ← 多 Agent 流水线
├── CLI/                   ← PowerShell 执行引擎
├── CodeRunner/            ← 代码运行器
├── Workflow/              ← 工作流引擎(72 节点)
├── Framework/             ← 基础框架
├── LLM/                   ← LLM 集成
├── MCP/                   ← MCP 协议集成
├── Plugin/                ← 插件系统
├── Runtimes/              ← 运行时
├── VarVault/              ← 变量存储
├── Video/                 ← 视频处理
├── Trigger/               ← 触发器
├── Endpoints/             ← 端点服务
├── Diagnostics/           ← 诊断工具
├── Documents/             ← 文档
├── ...                    ← 以及外部参考框架(见能力二)
工作区二:CLIENT(桌面端 + Web)
├── Desktop/               ← WPF 桌面端
├── Desktop.Auth/          ← 桌面端认证
├── Desktop.Components/    ← 桌面端组件
├── Desktop.Server/        ← 桌面端服务器
├── Desktop.UIControls/    ← 桌面端 UI 控件
├── Desktop.Test/          ← 桌面端测试
├── Web/                   ← React 前端(Rush monorepo)
├── Web.Server/            ← Web 服务器
├── Documents/             ← 文档
├── publish/               ← 发布目录
├── ...

两个工作区独立存在,各自有各自的 RepoWiki、Rule、Memory

当需要跨工作区协作时(比如 Client 依赖 Components 的更新),在对话中告诉 AI "去参考 Components 的某某模块"即可。

为什么这么拆

一个工作区文件太多,RepoWiki 就没法用了。RepoWiki 需要为每个模块生成知识摘要,如果文件数量超过一定阈值,生成的摘要会变得冗长且不精确。

所以拆分的核心原则是:按业务边界拆,使每个工作区的 RepoWiki 保持可维护。

工作区定位包含RepoWiki 覆盖范围
COMPONENTS底层组件库CLI 引擎、工作流引擎、AI Agent、节点系统所有组件模块
CLIENT面向用户的产品桌面端、Web 前端、认证、UI 控件桌面端 + Web

贯穿案例中的应用

回到贯穿案例——"从零到部署一个新工作流节点"。因为节点开发在 Components 中,你打开的是 COMPONENTS 工作区。所有节点相关的代码(CLI 引擎、Workflow 节点系统、Rule 规范)都在这里,RepoWiki 也已经覆盖了这些模块的摘要。

当你需要查看节点发布后在 Client 桌面端中的表现时,切换到 CLIENT 工作区。


能力二:外部参考框架——让 AI 参考第三方开源库

使用篇

大型项目不可避免要引用第三方开源库。但 AI 默认不认识这些库的内部实现——它只能凭训练数据的记忆去猜。

Growth 项目中会参考大量 AI Agent 领域的开源框架来设计自己的架构。这些框架的代码需要让 AI 能够直接阅读。

做法是:把参考框架的代码目录直接放在工作区中。

以 COMPONENTS 工作区为例,它的目录下除了自有代码,还有:

COMPONENTS (工作区)
├── Components/              ← 自有组件代码
├── cli/                     ← 自有 CLI
├── agent-framework/         ← 参考:Agent 框架
├── deer-flow/               ← 参考:基于 LangGraph 的 Agent 系统
├── OpenViking/              ← 参考:其他 Agent 框架
├── hermes-agent/            ← 参考:Hermes Agent
├── dotnet-extensions/       ← 参考:.NET 扩展库
├── ahk-mcp/                 ← 参考:AHK MCP 集成
├── new-api/                 ← 参考:API 设计
└── ...

使用方法:

# 在 COMPONENTS 工作区中,直接让 AI 阅读参考框架的代码:
"看 deer-flow 的 Agent 管道设计,跟我们现有的 AiAgent.Integration 做个对比"

# 或者参考具体实现:
"参考 hermes-agent 的 tool 注册机制,看看我们能不能借鉴"

实践篇

三个核心价值:

  1. AI 不需要「猜」开源库的实现——它可以直接读源码
  2. 参考框架的代码时,能精确到文件和函数级别——不是模糊的"这个功能大概是这样"
  3. 避免了「AI 生成了一个开源库里已有的功能,但我们不知道」的问题——重复造轮子的最大原因不是 AI 不会,而是 AI 不知道

一个真实场景:我们在设计 Agent 管道架构时,需要参考 deer-flow(一个基于 LangGraph 的 Agent 系统)和 hermes-agent 的设计。有了参考代码目录,我们可以直接让 AI:

"对比 deer-flow 的 Middleware 链和 hermes-agent 的 tool 分发机制,
分析它们的优缺点,给出适合我们 AiAgent.Integration 的方案"

AI 会同时读取两个框架的源码,输出对比分析——不需要我们提前理解这些框架,AI 边读边分析。

知识篇

外部参考框架的本质是扩展 AI 的知识边界

大模型的训练数据是固定的——它知道的知识截止于某个时间点。但开源框架在不断更新,而且你参考的可能是小众框架。把参考代码放在工作区中,AI 就能"临时学习"这些不在训练数据中的知识。

这和人类开发者的工作方式一致:遇到不熟悉的库,我们也会去看它的源码。外部参考框架就是让 AI 也拥有这个能力。


能力三:快速定位文件——路径即定位

路径即定位

使用篇

大型项目最常见的问题:同名文件太多

Growth 产品矩阵中,LoggerConfig.cs 出现在 10+ 个项目中,CLIModule.cs 也有多个重复。如果不指定路径,AI 经常读错文件。

Qoder 的解决方案很简单:路径即定位

❌ 模糊描述:"帮我看看 LoggerConfig 的配置"  
   → AI 可能读错文件

✅ 精确描述:"帮我看看 Desktop\Desktop.Server\LoggerConfig.cs 的配置"
   → AI 精确定位

编辑器内的可视化目录树是天然的优势——你可以直接复制文件路径给 AI,或者在提示词中指定目录范围:

# 限定修改范围
"只修改 Workflow/ 目录下的文件,不要碰其他地方"

# 限定参考范围
"参考 deer-flow 的 Middleware 链设计,不要参考 hermes-agent 的"

实践篇

这对于多工作区 + 大量参考框架尤其重要——不指定路径,AI 根本不知道你要读的是自有代码还是参考框架。

举个例子:

❌ "分析一下 Agent 的 tool 注册机制"
   → AI 可能分析的是 hermes-agent 的,而不是你们自有 AiAgent 的

✅ "分析 AiAgent.Integration/Tools/ 下的 tool 注册机制"
   → AI 精确定位到自有代码

路径即定位不仅解决了"改哪个文件"的问题,还解决了"不能改哪个文件"的问题——参考框架的代码是只读的,通过路径限定可以避免 AI 意外修改参考代码。

知识篇

路径即定位的背后是目录结构即信息结构的编程思想。

一个好的项目目录结构本身就是代码的"地图"。当你告诉 AI "去 Components/CLI/Engine/ 看看"时,这个路径已经传达了多层信息:

  • Components/ → 是自有代码,不是参考框架
  • CLI/ → 命令行执行引擎模块
  • Engine/ → 核心引擎代码,不是接口定义

路径本身就在帮助 AI 理解代码的上下文层级。这就是为什么 Qoder 强调"路径即定位"——不只是为了找文件,更是为了让 AI 理解文件在项目中的位置和角色。


本章小结

能力解决什么问题实际配置
多工作区拆分工程太大,一个工作区 RepoWiki 不可用Components + Client 两个工作区
外部参考框架AI 不认识第三方开源库参考框架代码直接放在工作区目录下
路径即定位同名文件太多,AI 容易读错精确到文件级别的定位

关联:第一部分 02(工作区管理与 RepoWiki)。