处理大型项目

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

大型项目中的上下文限制

Bob 使用的大型语言模型具有有限的上下文窗口,即 Bob 一次能处理的最大文本量(以 token 计)。如果上下文过大,Bob 可能无法理解你的请求或生成准确的响应。

上下文窗口包括:

  • 系统提示(Bob 的指令)
  • 对话历史
  • 你在聊天提示词中包含的任何文件内容
  • Bob 使用的任何命令或工具的输出

管理上下文的策略

  1. 具体化:引用文件或代码时,使用具体的文件路径和函数名。避免"主文件"之类的模糊引用。
  2. 精确引用文件:在聊天提示词中通过路径引用具体文件(例如 src/components/MyComponent.tsx),或引用 commit hash 将 Bob 指向特定的 Git 状态。
  3. 分解任务:将大型任务分解为更小、更易管理的子任务。这有助于保持上下文专注。
  4. 必要时进行总结:如果需要引用大量代码,考虑在提示词中总结相关部分,而不是包含全部代码。
  5. 优先考虑近期历史:Bob 会自动压缩对话历史中的旧消息以保持在上下文窗口内。注意这一点,必要时重新提供重要上下文。
  6. 管理 MCP 工具使用:你可以在 MCP 服务中禁用和启用特定工具,只使用你需要的工具,减少未使用工具定义的上下文消耗。
  7. 使用子智能体或子任务处理独立工作:对于大型、自包含的工作,考虑使用子智能体或子任务。两者都在各自独立的上下文窗口中运行,保持主终端会话精简。有关 spawn_subagentstart_subtask 的详细信息,请参阅工具

示例:重构大型文件

如果你需要重构大型 TypeScript 文件(src/components/MyComponent.tsx),以下是一种有效的方式:

  1. 获取初步概览
    列出 src/components/MyComponent.tsx 中的函数和类
  2. 针对特定函数
    将 src/components/MyComponent.tsx 中的 `processData` 函数重构为使用 async/await 而非 Promises。
  3. 进行迭代修改:逐步进行小的增量修改,检查并批准每个步骤。

通过分解任务并提供具体上下文,你可以在上下文窗口限制内有效处理大型文件。

这个主题怎么样?