OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  Cody 面向代码库查询理解与导航的AI开发助手工具

Cody 面向代码库查询理解与导航的AI开发助手工具

 
  blush ·  2026-03-23 04:12:05 · 5 次点击  · 0 条评论  

🤖 Cody - 你的 AI 编码助手

Star History Chart

欢迎使用 Cody!这是一个 AI 助手,旨在让你能够使用自然语言交互式地查询你的代码库。通过利用向量嵌入、分块技术和 OpenAI 的语言模型,Cody 可以帮助你以高效、直观的方式浏览代码。💻

https://www.star-history.com/#ajhous44/cody&Date
image

演示视频链接

https://www.loom.com/share/eba1d0dcee20430fbd412580d1c0ea0e?sid=4998cf6f-45b4-480d-b742-6f22f3a49dc3

每次保存文件时,Cody 都会持续更新其知识库,确保你拥有最新的信息。你可以通过在 ignore_list 中指定要忽略的目录来自定义设置。

🚀 快速开始

  1. 克隆仓库。
  2. (可选)通过运行 pip install -m venv .venv 设置虚拟环境,然后在项目根目录的终端中运行 pip install -r requirements.txt
  3. .local.env 文件重命名为 .env,并将 YOUR_API_KEY_HERE 替换为你的 OpenAI API 密钥。
  4. 修改脚本顶部的 IGNORE_THESE 全局变量,以指定你希望从监控中排除的目录和文件。(你应该注释掉任何大型文件,如虚拟环境、缓存、已下载的 JS 库等...)
  5. 使用 Python 运行脚本:python cody.py 并按照终端提示进行设置。它会提示你选择使用文本聊天(终端)还是会话模式(语音输入/输出)。如果你从忽略列表中移除了 .env,它也会发出警告。

🎯 功能特性

  • 文件监控:实时监控项目目录及其子目录中的所有文件。👀
  • 基于嵌入的知识库:使用 OpenAI 嵌入创建知识库。Cody 收集所有文本和 JSON 文件的内容并将其添加到该知识库中。📚
  • 交互式问答:接收用户输入。提出问题,Cody 将利用知识库生成回答。🧠
  • 可定制:轻松指定在监控期间要忽略的文件或目录。

🛠 依赖项

  • dotenv:将 .env 文件中的变量加载到环境中。
  • langchain-community:用于嵌入和向量存储的语言处理库。前身为 langchain
  • langchain_openai:提供 OpenAIEmbeddings 功能,将 OpenAI 模型直接集成到 langchain 架构中。
  • litellm:使用 OpenAI 格式调用所有 LLM API (https://github.com/BerriAI/litellm)。
  • watchdog:实时监控文件系统事件。
  • openai:使用 OpenAI 的语言模型生成智能响应。
  • speech_recognition:将语音转换为文本,用于语音交互。
  • gtts:Google 文本转语音库,用于从文本生成音频。
  • pygame:播放音频文件的库。

💡 使用方法

  • 要停止脚本,请键入 'exit' 或说出 'exit' 然后按回车键。Cody 将优雅地终止程序。

配置忽略列表

Cody 允许你指定在文件监控期间应忽略哪些文件和目录。这对于排除频繁更改、与查询无关或可能包含敏感信息的文件特别有用。

要自定义你的 ignore_list,请添加与要排除的文件或目录匹配的模式。Cody 支持简单的通配符模式以提供灵活性。以下是一些示例供你参考:

示例

  • 忽略特定文件:如果你想忽略所有 .env 文件,可以将 *.env 添加到忽略列表中。
    python IGNORE_THESE = ['*.env']

  • 忽略目录:要忽略整个目录,例如 node_modules 或虚拟环境目录如 .venv,只需添加目录名称。
    python IGNORE_THESE = ['node_modules', '.venv']

  • 忽略文件扩展名:要忽略具有特定扩展名的所有文件,例如 .log.tmp,请使用通配符模式 *
    python IGNORE_THESE = ['*.log', '*.tmp']

  • 复杂模式:你可以组合目录名称和通配符来忽略特定目录中的特定类型文件。例如,要忽略 docs 目录中的所有 .md 文件:
    python IGNORE_THESE = ['docs/*.md']

配置忽略列表的技巧

  • 定期审查:随着项目的发展,你可能需要忽略的文件和目录也会发生变化。定期审查和更新你的 ignore_list 有助于确保 Cody 的性能保持最佳状态。
  • 明智使用通配符:虽然通配符提供了强大的灵活性,但也可能导致无意中忽略重要文件。在模式中要具体,以避免此类问题。
  • 测试更改:更新 ignore_list 后,执行一些测试以确保更改按预期运行,尤其是在使用复杂模式时。

通过仔细配置你的 ignore_list,你可以定制 Cody 以更好地满足项目需求,从而提高其效率以及与编码任务的相关性。

⚠️ 注意事项与提示

  • Cody 使用 FAISS 库来高效存储和搜索向量。请确保你有足够的内存可用,尤其是在监控大量文件时。
  • 此外,请务必监控你的 OpenAI API 使用情况。一个有用的建议是在你的 OpenAI 账户中设置每月支出限额,以防止发生意外情况。作为一个额外的辅助功能,它会打印你每次调用使用的令牌数量。
  • "实时"编码问题:为了充分发挥其潜力,我建议打开一个单独的终端,甚至命令提示符,cd 到你的项目目录,然后启动 python cody.py。然后将其与你的代码分屏显示,放在左侧或右侧的一个小查看窗口中。这样,你可以使用另一个终端来实际运行你的代码,而无需担心 Cody 或每次都要运行它!Cody 仍会随着你对任何文件的每次保存而更新,因此它始终使用最新的数据。

贡献

欢迎贡献。请提交拉取请求或针对任何错误或功能请求开启议题。

祝你和 Cody 一起编码愉快!💡🚀🎉

5 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 26 ms
Developed with Cursor