Skip to content

Conversation

@qdaxb
Copy link
Contributor

@qdaxb qdaxb commented Jul 1, 2025

Related GitHub Issue

Closes: #5301

Description

When asking the model to “summarize the current project” in projects with a large number of files, it may make inferences based on the content returned by the Current Workspace Directory or the List Files tool.

However, the current List-files tool uses a depth-first search strategy, which can result in returning detailed structures for only part of the project directories, while the model has no awareness of the other directories at all. In some weaker models, instead of requesting the agent to fetch all subfolders, they directly infer based on the partial information available, which can lead to completely incorrect results.

Changes:

  • If the number of files retrieved by list-files reaches the limit, perform an additional retrieval of all directories and files under the top-level folders separately, then merge the results before proceeding with further processing.
  • formatAndCombineResults uses a breadth-first traversal approach.
  • (Note: listFilesWithRipgrep still uses depth-first search, which may lead to incomplete results in some cases, but at least the first-level directory structure will not be missing.)

Test Procedure

When viewing the prompt in human-relay mode, the Current Workspace Directory will include at least all files in the first-level directories.

Pre-Submission Checklist

  • Issue Linked: This PR is linked to an approved GitHub Issue (see "Related GitHub Issue" above).
  • Scope: My changes are focused on the linked issue (one major feature/fix per PR).
  • Self-Review: I have performed a thorough self-review of my code.
  • Testing: New and/or updated tests have been added to cover my changes (if applicable).
  • Documentation Impact: I have considered if my changes require documentation updates (see "Documentation Updates" section below).
  • Contribution Guidelines: I have read and agree to the Contributor Guidelines.

Screenshots / Videos

Documentation Updates

Additional Notes

Get in Touch


Important

Enhance listFiles to include first-level directory contents when file limit is reached, ensuring complete directory awareness.

  • Behavior:
    • listFiles in list-files.ts now performs an additional non-recursive retrieval of top-level directories if the file limit is reached in recursive mode.
    • Ensures at least first-level directory contents are included in results.
  • Functions:
    • formatAndCombineResults updated to sort paths by depth, ensuring directories are listed before files.
  • Misc:
    • listFilesWithRipgrep still uses depth-first search, but first-level directory structure is guaranteed.

This description was created by Ellipsis for e64dd2a743d22008ac788e5e4806ed3a738759b6. You can customize this summary. It will automatically update as commits are pushed.

@qdaxb qdaxb requested review from cte, jr and mrubens as code owners July 1, 2025 06:31
@dosubot dosubot bot added size:M This PR changes 30-99 lines, ignoring generated files. enhancement New feature or request labels Jul 1, 2025
@hannesrudolph hannesrudolph added the Issue/PR - Triage New issue. Needs quick review to confirm validity and assign labels. label Jul 1, 2025
@daniel-lxs daniel-lxs moved this from Triage to PR [Needs Prelim Review] in Roo Code Roadmap Jul 1, 2025
@hannesrudolph hannesrudolph added PR - Needs Preliminary Review and removed Issue/PR - Triage New issue. Needs quick review to confirm validity and assign labels. labels Jul 1, 2025
@dosubot dosubot bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:M This PR changes 30-99 lines, ignoring generated files. labels Jul 1, 2025
Copy link
Member

@daniel-lxs daniel-lxs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @qdaxb for your contribution!

LGTM

@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Jul 1, 2025
@daniel-lxs daniel-lxs moved this from PR [Needs Prelim Review] to PR [Needs Review] in Roo Code Roadmap Jul 1, 2025
@qdaxb qdaxb force-pushed the update_list_files branch 2 times, most recently from 6c2b856 to 54ee901 Compare July 7, 2025 16:55
@daniel-lxs daniel-lxs moved this from PR [Needs Review] to PR [Needs Prelim Review] in Roo Code Roadmap Jul 15, 2025
qdaxb and others added 3 commits July 15, 2025 15:07
…it is reached

- Modified list-files to check if limit was reached and ensure all first-level directories are included
- Added helper functions to get first-level directories and adjust results
- Updated tests to properly verify the new behavior
- Removed the breadth-first implementation in favor of a simpler approach that modifies results after the fact
@daniel-lxs daniel-lxs moved this from PR [Needs Prelim Review] to PR [Needs Review] in Roo Code Roadmap Jul 15, 2025
@mrubens mrubens merged commit 5557d77 into RooCodeInc:main Jul 15, 2025
11 checks passed
@github-project-automation github-project-automation bot moved this from PR [Needs Review] to Done in Roo Code Roadmap Jul 15, 2025
@github-project-automation github-project-automation bot moved this from New to Done in Roo Code Roadmap Jul 15, 2025
fxcl added a commit to tameslabs/Roo-Cline that referenced this pull request Jul 16, 2025
* main:
  fix: Resolve confusing auto-approve checkbox states (RooCodeInc#5602)
  fix: prevent empty mode names from being saved (RooCodeInc#5766) (RooCodeInc#5794)
  Format time in ISO 8601 (RooCodeInc#5793)
  fix: resolve DirectoryScanner memory leak and improve file limit handling (RooCodeInc#5785)
  Fix settings dirty check (RooCodeInc#5779)
  feat: increase Ollama API timeout values and extract as constants (RooCodeInc#5778)
  fix: Exclude Terraform and Terragrunt cache directories from checkpoints (RooCodeInc#4601) (RooCodeInc#5750)
  Move less commonly used provider settings into an advanced dropdown (RooCodeInc#5762)
  feat: Add configurable error & repetition limit with unified control (RooCodeInc#5654) (RooCodeInc#5752)
  list-files must include at least the first-level directory contents (RooCodeInc#5303)
  Update evals repo link (RooCodeInc#5758)
  Feature/vertex ai model name conversion (RooCodeInc#5728)
  fix(litellm): handle baseurl with paths correctly (RooCodeInc#5697)
  Add telemetry for todos (RooCodeInc#5746)
  feat: add undo functionality for enhance prompt feature (fixes RooCodeInc#5741) (RooCodeInc#5742)
  Fix max_tokens limit for moonshotai/kimi-k2-instruct on Groq (RooCodeInc#5740)
  Changeset version bump (RooCodeInc#5735)
  Add changeset for v3.23.12 patch release (RooCodeInc#5734)
  Update the max-token calculation in model-params to use the shared logic (RooCodeInc#5720)
  Changeset version bump (RooCodeInc#5719)
  chore: add changeset for v3.23.11 patch release (RooCodeInc#5718)
  Add Kimi K2 model and better support (RooCodeInc#5717)
  Fix: Remove invalid skip-checkout parameter from GitHub Actions workflows (RooCodeInc#5676)
  feat: add Cmd+Shift+. keyboard shortcut for previous mode switching (RooCodeInc#5695)
  Changeset version bump (RooCodeInc#5708)
  chore: add changeset for v3.23.10 patch release (RooCodeInc#5707)
  Add padding to the index model options (RooCodeInc#5706)
  fix: prioritize built-in model dimensions over custom dimensions (RooCodeInc#5705)
  Update CHANGELOG.md
  Changeset version bump (RooCodeInc#5702)
  chore: add changeset for v3.23.9 patch release (RooCodeInc#5701)
  Tweaks to command timeout error (RooCodeInc#5700)
  Update contributors list (RooCodeInc#5639)
  feat: enable Claude Code provider to run natively on Windows (RooCodeInc#5615)
  feat: Add configurable timeout for command execution (RooCodeInc#5668)
  feat: add gemini-embedding-001 model to code-index service (RooCodeInc#5698)
  fix: resolve vector dimension mismatch error when switching embedding models (RooCodeInc#5616) (RooCodeInc#5617)
  fix: [5424] return the cwd in the exec tool's response so that the model is not lost after subsequent calls (RooCodeInc#5667)
  Changeset version bump (RooCodeInc#5670)
  chore: add changeset for v3.23.8 patch release (RooCodeInc#5669)
@qdaxb qdaxb deleted the update_list_files branch July 17, 2025 05:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request lgtm This PR has been approved by a maintainer PR - Needs Review size:L This PR changes 100-499 lines, ignoring generated files.

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

When the agent uses list-files, it may not be able to retrieve the complete project structure

4 participants