核心概念
处理大型项目
在 Bob IDE 中管理大型代码库。了解上下文窗口优化、文件处理和企业级项目的最佳实践。
理解大型项目中的上下文限制
Bob 使用具有有限上下文窗口的大型语言模型。这是 Bob 一次可以处理的最大文本量(以标记衡量)。如果上下文太大,Bob 可能无法理解您的请求或生成准确的响应。
上下文窗口包括:
- 系统提示(Bob 的指令)
- 对话历史
- 您使用
@提及的任何文件的内容 - 使用 Cmd + L(Mac)或 Ctrl + L(Windows/Linux)发送到聊天的选定文本
- Bob 使用的任何命令或工具的输出
管理上下文的策略
- 具体明确:在引用文件或代码时,使用特定的文件路径和函数名称。避免像"主文件"这样的模糊引用。
- 有效使用上下文提及:使用
@/path/to/file.ts包含特定文件。使用@problems包含当前错误和警告。使用@后跟提交哈希来引用特定的 Git 提交。您还可以在编辑器中突出显示文本,并使用 Cmd + L(Mac)或 Ctrl + L(Windows/Linux)将其直接发送到聊天。 - 分解任务:将大型任务分解为更小、更易于管理的子任务。这有助于保持上下文的集中。
- 必要时总结:如果您需要引用大量代码,请考虑在提示中总结相关部分,而不是包含整个代码。
- 优先考虑最近的历史:Bob 会自动压缩对话历史中较旧的消息以保持在上下文窗口内。请注意这一点,并在需要时重新包含重要的上下文。
- 配置大文件处理:调整大文件处理设置以控制 Bob 如何处理超过特定大小阈值的文件。这有助于在处理大文件时管理上下文使用。
- 管理 MCP 工具使用:您可以在 MCP 服务中禁用和启用特定工具,以便只使用您需要的工具,从而减少未使用工具定义的上下文消耗。
- 对独立工作使用 subagent 或 subtask:对于大型、独立的工作,考虑使用 subagent 或 subtask。两者都在自己独立的上下文窗口中运行,保持主对话简洁。有关
spawn_subagent和start_subtask的详细信息,请参阅 Tools。 - 使用符号工具而不是完整文件提及:与其使用
@提及整个文件,Bob 可以使用GetSymbolsOverview和FindSymbol等工具直接导航到相关的类或函数。这只检索所需内容,避免将完整文件加载到上下文中。
示例:重构大文件
如果您需要重构一个大型 TypeScript 文件(src/components/MyComponent.tsx),这里有一个有效的方法:
- 获取初步概述:
@/src/components/MyComponent.tsx 列出此文件中的函数和类。 - 针对特定函数:
@/src/components/MyComponent.tsx 重构 `processData` 函数以使用 `async/await` 而不是 Promise。 - 进行迭代更改:进行小的增量更改,审查并批准每个步骤。
通过分解任务并提供特定的上下文,您可以在上下文窗口限制内有效地处理大文件。
这个主题怎么样?