Commit 0da8811
refactor: 按 code review 重构 code_executors,强化 cube 子包的依赖契约
主要变更(按评审意见整理):
- code_executors 父包不再 lazy 重导出 Cube 符号;业务方需显式
`from trpc_agent_sdk.code_executors.cube import ...`,让 [cube]
依赖在调用点显性暴露,避免错把可选依赖伪装成核心依赖。
- 移除 cube 子包"未装 [cube] 也能 import"的隐含契约:
`cube/_e2b.py` 删除,`_sandbox.py` / `_code_executor.py` 改为顶层
`import e2b_code_interpreter as e2b`;缺失 extra 时直接以
ImportError 在 import 处失败,而非延迟到 sandbox 打开时。
- 工作空间收集流水线:删除 utils/_collect.py,将
`build_code_files` / `build_manifest_output` 上提为
`BaseWorkspaceFS._build_code_files` / `._build_manifest_output`
保护静态方法;local/container/cube 三个后端通过 self.* 调用,
子类可直接复用或重写。`max_read_size` 由
`Optional[int]=None` 改为 `int = MAX_READ_SIZE_BYTES`,签名更直接。
- `CubeCodeExecutor.code_block_delimiters` 改用 `default_factory`
复用基类默认值并追加 bash fence,避免重复声明 tool_code/python;
父类未来扩展默认列表时自动跟随。
- `cube/_runtime.py::_copy_remote`:rm -rf 调用加 Safety 注释,
记录 normalize_remote_relative + join_remote + shell_quote +
GNU rm `--preserve-root` 的多层校验不变量,作为后续维护合同。
测试同步:
- 新增 tests/code_executors/test_base_workspace_fs_collect.py,针对
BaseWorkspaceFS 上的保护方法测试,并新增子类覆写用例。
- tests/code_executors/cube/conftest.py 重写 `fake_e2b` fixture,
patch `_sandbox.e2b` / `_code_executor.e2b` 模块级符号。
- 删除 test_e2b.py、test_package_lazy_import.py,新增
test_package_imports.py(保留父包 non-reexport + 父包 import
不触发 e2b 的两条契约)。
- 其余测试更新 monkeypatch 目标到新的实现位置。
Assisted-by: Cursor:claude-opus-4.7
Co-authored-by: Cursor <cursoragent@cursor.com>1 parent 50d8995 commit 0da8811
23 files changed
Lines changed: 741 additions & 703 deletions
File tree
- examples/code_executors
- tests/code_executors
- cube
- local
- trpc_agent_sdk/code_executors
- container
- cube
- local
- utils
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | | - | |
38 | | - | |
39 | | - | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
13 | 20 | | |
14 | 21 | | |
15 | 22 | | |
| |||
44 | 51 | | |
45 | 52 | | |
46 | 53 | | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
47 | 67 | | |
48 | 68 | | |
49 | 69 | | |
50 | 70 | | |
51 | 71 | | |
| 72 | + | |
52 | 73 | | |
53 | 74 | | |
54 | 75 | | |
| |||
61 | 82 | | |
62 | 83 | | |
63 | 84 | | |
64 | | - | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
65 | 93 | | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | 94 | | |
75 | | - | |
76 | | - | |
| 95 | + | |
| 96 | + | |
77 | 97 | | |
78 | 98 | | |
79 | | - | |
80 | | - | |
| 99 | + | |
| 100 | + | |
81 | 101 | | |
82 | 102 | | |
83 | 103 | | |
| |||
92 | 112 | | |
93 | 113 | | |
94 | 114 | | |
95 | | - | |
96 | 115 | | |
97 | 116 | | |
98 | 117 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
556 | 556 | | |
557 | 557 | | |
558 | 558 | | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
0 commit comments