核心概念

处理大型项目

在 Bob IDE 中管理大型代码库。了解上下文窗口优化、文件处理和企业级项目的最佳实践。

理解大型项目中的上下文限制

Bob 使用具有有限上下文窗口的大型语言模型。这是 Bob 一次可以处理的最大文本量(以标记衡量)。如果上下文太大,Bob 可能无法理解您的请求或生成准确的响应。

上下文窗口包括:

  • 系统提示(Bob 的指令)
  • 对话历史
  • 您使用 @ 提及的任何文件的内容
  • 使用 Cmd + L(Mac)或 Ctrl + L(Windows/Linux)发送到聊天的选定文本
  • Bob 使用的任何命令或工具的输出

管理上下文的策略

  1. 具体明确:在引用文件或代码时,使用特定的文件路径和函数名称。避免像"主文件"这样的模糊引用。
  2. 有效使用上下文提及:使用 @/path/to/file.ts 包含特定文件。使用 @problems 包含当前错误和警告。使用 @ 后跟提交哈希来引用特定的 Git 提交。您还可以在编辑器中突出显示文本,并使用 Cmd + L(Mac)或 Ctrl + L(Windows/Linux)将其直接发送到聊天。
  3. 分解任务:将大型任务分解为更小、更易于管理的子任务。这有助于保持上下文的集中。
  4. 必要时总结:如果您需要引用大量代码,请考虑在提示中总结相关部分,而不是包含整个代码。
  5. 优先考虑最近的历史:Bob 会自动压缩对话历史中较旧的消息以保持在上下文窗口内。请注意这一点,并在需要时重新包含重要的上下文。
  6. 配置大文件处理:调整大文件处理设置以控制 Bob 如何处理超过特定大小阈值的文件。这有助于在处理大文件时管理上下文使用。
  7. 管理 MCP 工具使用:您可以在 MCP 服务中禁用和启用特定工具,以便只使用您需要的工具,从而减少未使用工具定义的上下文消耗。
  8. 对独立工作使用 subagent 或 subtask:对于大型、独立的工作,考虑使用 subagent 或 subtask。两者都在自己独立的上下文窗口中运行,保持主对话简洁。有关 spawn_subagentstart_subtask 的详细信息,请参阅 Tools
  9. 使用符号工具而不是完整文件提及:与其使用 @ 提及整个文件,Bob 可以使用 GetSymbolsOverviewFindSymbol 等工具直接导航到相关的类或函数。这只检索所需内容,避免将完整文件加载到上下文中。

示例:重构大文件

如果您需要重构一个大型 TypeScript 文件(src/components/MyComponent.tsx),这里有一个有效的方法:

  1. 获取初步概述
    @/src/components/MyComponent.tsx 列出此文件中的函数和类。
  2. 针对特定函数
    @/src/components/MyComponent.tsx 重构 `processData` 函数以使用 `async/await` 而不是 Promise。
  3. 进行迭代更改:进行小的增量更改,审查并批准每个步骤。

通过分解任务并提供特定的上下文,您可以在上下文窗口限制内有效地处理大文件。

这个主题怎么样?