mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-08-13 16:28:38 +00:00
mask_local_paths_in_output runs once per glob/grep match (tools.py:1540, :1625) and once per bash/ls output, and each call rebuilt every skills / ACP / user-data masking regex from scratch — Path.resolve() syscalls + re.escape + re.compile. A grep returning up to 100 matches recompiled the same patterns 100x. Compile the host->virtual patterns once per ordered source set via functools.lru_cache (keyed on the config-stable + per-thread (host, virtual) pairs, so it self-invalidates when they change) and collapse the three byte-identical replacer blocks into one applier. Behavior is unchanged: same patterns, same application order, same per-thread mappings. Verified behavior-preserving with an equivalence harness (original vs refactored logic over 54 inputs incl. slash-style variants, base-only matches, subpaths, overlapping mappings, missing skills/ACP, thread_data None) -> 0 mismatches. Added cache/consistency tests alongside the existing masking tests. Fixes #3712.