Lzh on GitHub

使用大型项目

Roo Code 可以用于任何规模的项目,但大型项目需要额外注意以有效管理上下文。以下是处理大型代码库的一些技巧:

Roo Code 可以用于任何规模的项目,但大型项目需要额外注意以有效管理上下文。以下是处理大型代码库的一些技巧:

了解上下文限制

Roo Code 使用的大型语言模型(LLMs)有一个有限的“上下文窗口”。这是模型可以一次处理的最大文本量(以令牌为单位衡量)。如果上下文过大,模型可能无法理解您的请求或生成准确的响应。

上下文窗口包括:

  • 系统提示(Roo Code 的指令)。
  • 对话历史
  • 您使用 @ 提及的任何文件的内容。
  • Roo Code 使用的任何命令或工具的输出。

管理上下文的策略

  • 具体化:提及文件或代码时,请使用具体的文件路径函数名称。避免使用“主文件”之类的模糊引用。
  • 有效使用上下文提及:使用 @/path/to/file.ts 来包含特定文件。使用 @problems 来包含当前错误和警告。使用 @ 后跟提交哈希来引用特定的 Git 提交。
  • 分解任务:将大型任务分解为更小、更易于管理的子任务。这有助于保持上下文的集中。
  • 总结:如果您需要引用大量代码,请考虑在提示中总结相关部分,而不是包含整个代码。
  • 优先考虑最近的历史记录:Roo Code 会自动截断对话历史中较旧的消息,以保持在上下文窗口内。请注意这一点,如果需要,重新包含重要上下文。
  • 使用提示缓存(如果可用):一些 API 提供商,如 Anthropic、OpenAI、OpenRouter 和 Requesty,支持“提示缓存”。这会缓存您的提示以用于未来的任务,并有助于降低请求的成本和延迟。

示例:重构大型文件

重构一个大型 TypeScript 文件(src/components/MyComponent.tsx)时,可以采取以下方法:

1. 初始概述:获取文件结构

首先,通过提供文件路径并请求列出其中的函数和类,来了解文件的总体结构。这有助于你掌握文件的组织方式,从而为后续的重构工作提供清晰的蓝图。

@/src/components/MyComponent.tsx List the functions and classes in this file.

2. 定位特定函数:精确重构

接下来,将注意力集中在需要重构的特定部分。通过指定文件和函数名,你可以精确地告诉模型要处理哪个代码段,这比让模型处理整个文件要高效得多。

@/src/components/MyComponent.tsx Refactor the `processData` function to use `async/await` instead of Promises.

3. 迭代更改:分步进行,逐步审查

重构过程应分解成小的、增量式的更改。每完成一小步,就进行审查和批准。这种方法不仅可以管理上下文,防止模型因信息过多而“迷失方向”,还能确保每一步的更改都是正确的,从而显著降低引入错误的风险

通过这种将大任务分解为小任务、提供具体上下文并进行迭代更改的策略,即使面对大型文件和有限的上下文窗口,你也能高效地完成工作。