必须在项目根目录运行cody index构建本地代码图,并启用"cody.experimental.localGraph": true配置,确保VSCode工作区路径与索引路径一致,且语言服务器稳定。
VSCode 配置 Cody AI 读取整个项目代码库的关键前提
Cody AI 要真正理解你的本地项目,不是靠“打开文件”就能自动推断上下文的。它依赖明确的代码索引(code graph)和项目结构感知,而 VSCode 默认不提供这个能力——必须通过 Cody 官方 CLI
在本地构建并维护一个符号数据库。
常见错误现象包括:Cody 回答泛泛而谈、无法定位函数定义、对跨文件调用关系一无所知、提问“这个 service 是怎么被 controller 调用的”直接返回“我不清楚”。这些都不是模型问题,而是它根本没看到你的完整代码树。
必须在项目根目录运行
(不是
),且该命令需识别到
、
、
等语言标识文件
索引过程会扫描所有
、
等源码,但默认跳过
、
、
—— 若你有自定义的生成代码目录(如
),需手动加到
首次索引耗时取决于项目大小:10 万行 TypeScript 项目约需 2–5 分钟;若卡在 “Scanning files…” 超过 10 分钟,大概率是权限问题或符号链接环(
检查)
确保 Cody 插件加载本地索引而非仅依赖云端上下文
Cody VSCode 插件有两个独立的上下文来源:一个是当前编辑器打开的文件(轻量级),另一个是你本地运行
后生成的
目录(全量)。后者才是理解复杂项目的核心,但插件默认可能只用前者。
检查是否生效最直接的方式:在任意未打开的 .ts 文件里右键 → “Ask Cody about this file”,如果返回 “No local code graph available”,说明插件没连上本地索引。
确认 VSCode 设置中启用了本地索引支持:
(写入
,不是用户设置)
必须重启 VSCode 或重新加载窗口(
→
),因为插件在启动时才读取该配置
路径必须严格匹配:Cody CLI 运行
的目录,要和 VSCode 打开的工作区根目录完全一致(不能是子文件夹,也不能是符号链接路径)
Linux/macOS 用户注意:若用
启动 VSCode(如终端执行
),确保
命令在
中;否则插件找不到 CLI,会静默降级为无索引模式
处理多模块/单体仓库(monorepo)的典型陷阱
像 Nx、Turborepo、pnpm workspaces 这类结构,Cody 默认只索引工作区根目录,不会递归进
或
子目录——即使它们有独立的
。
VSCode 1.118
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
下载
结果就是:你在
里问“Button 组件被哪些测试文件 import 了?”,Cody 只能查到同目录下的
,却找不到
里的引用。
方案一(推荐):在每个子包根目录下单独运行
,然后在各自
中设
方案二:用
强制指定路径,但需确保
不拦截这些 glob
绝对不要依赖
这种相对路径,Cody 插件解析时容易出错,尤其在远程开发(SSH/Dev Container)场景下
为什么改了代码后 Cody 还“不知道”?增量索引没生效
不是监听文件变化的守护进程。它是一次性构建操作。你新增一个
,或者重命名了
→
,Cody 依然沿用旧索引,直到你手动重建。
这不是 bug,是设计权衡:实时监听会显著增加 CPU 和内存占用,尤其对大型项目。
日常开发中,建议把
加进 pre-commit hook 或 CI 流程,而不是每次改完立刻跑
快速验证索引更新:删掉
目录 + 重新运行
,比尝试
更可靠(后者在重命名/移动文件时经常漏掉引用)
VSCode 状态栏右下角会显示 “Cody: Indexed N files” —— 这个数字必须和你
的结果接近,否则说明部分文件被过滤了(查
或日志输出)
最常被忽略的一点:Cody 的本地索引能力高度依赖语言服务器(LSP)的稳定性。如果你的项目里
或
报错、反复崩溃,Cody 的符号解析就会退化成纯文本匹配——这时候再怎么配
都白搭。先确保
能正常跳转定义,再折腾 Cody。
codycody indexcody initpackage.jsonpyproject.tomlgo.mod**/*.ts**/*.pynode_modules/venv/.git/src/gen/.codyignorels -la | grep "\->"cody index.cody/"cody.experimental.localGraph": true.vscode/settings.jsonCtrl+Shift+PDeveloper: Reload Windowcody indexzshcode .cody$PATHpackages/apps/tsconfig.jsonpackages/ui/src/Button.tsx__tests__/apps/web/src/pages/Home.test.tsxcody index.vscode/settings.json"cody.codebase": "file:///full/path/to/packages/ui"cody index --include="packages/**/src/**/*.{ts,tsx,js,jsx}".codyignore"cody.codebase": "file://./"cody indexutils/date.tsservices/auth.tsservices/authentication.tscody index.cody/cody indexcody index --incrementalfind . -name "*.ts" | wc -l.codyignoretypescript-language-serverpyrightcody.indexCtrl+Click