chore: audit public exports — #279

Closed
opened 2026-05-16 06:35:44 +00:00 by xiaoju · 2 comments
Owner

背景

Bundle 全部自包含后(#270),审计各 package 的 public API,识别未被其他 package import 的符号。

未被使用 ≠ 应该删除。这些是收敛候选,需逐个判断:

  • 是否为外部 bundle 作者需要的公共 API
  • 是否只在包内部使用
  • 是否为冗余 re-export

统计

总 export 外部使用 未使用 使用率
38 15 23 39%

未被外部 import 的符号(候选)

备注

使用率最低的核心包(39%)。大量内部实现细节暴露在公共 API 中,如 , , 等。优先收敛候选。

操作

逐个检查上述符号,决定:

  1. 保留 — 属于公共 API 契约,外部 bundle 作者可能需要
  2. 内部化 — 从 移除 re-export,保留在包内部使用
  3. 删除 — 确认为死代码
## 背景 Bundle 全部自包含后(#270),审计各 package 的 public API,识别未被其他 package import 的符号。 未被使用 ≠ 应该删除。这些是收敛候选,需逐个判断: - 是否为外部 bundle 作者需要的公共 API - 是否只在包内部使用 - 是否为冗余 re-export ## 统计 | 总 export | 外部使用 | 未使用 | 使用率 | |----------|---------|--------|-------| | 38 | 15 | 23 | 39% | ## 未被外部 import 的符号(候选) - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] - [ ] ## 备注 使用率最低的核心包(39%)。大量内部实现细节暴露在公共 API 中,如 , , 等。优先收敛候选。 ## 操作 逐个检查上述符号,决定: 1. **保留** — 属于公共 API 契约,外部 bundle 作者可能需要 2. **内部化** — 从 移除 re-export,保留在包内部使用 3. **删除** — 确认为死代码
Author
Owner

\u53ef\u8fbe\u6027\u5206\u6790 \u2014 @uncaged/workflow-execute\n\n### \u5305\u804c\u8d23\n\nEngine \u6267\u884c\u5c42\u3002 Worker \u5185\u90e8\u5b9e\u73b0\uff1a\u7ebf\u7a0b\u8c03\u5ea6\u3001\u72b6\u6001\u63a8\u8fdb\u3001CAS fork/GC\u3001LLM extract\u3002\n\n### \u53d7\u4f17\n\n**\u7eaf\u7cfb\u7edf\u5185\u90e8\u3002** Bundle \u4f5c\u8005\u5b8c\u5168\u4e0d\u5e94\u63a5\u89e6\u8fd9\u4e2a\u5305\u3002CLI \u901a\u8fc7\u5b83\u7ba1\u7406\u7ebf\u7a0b\u548c\u542f\u52a8 worker\u3002\n\n### \u53ef\u8fbe\u6027\u5224\u5b9a\n\n\u4ece bundle \u4f5c\u8005\u7684\u5b9a\u5236\u6811\uff1a**\u96f6\u53ef\u8fbe**\u3002\u8fd9\u662f worker \u7684\u5185\u90e8\u5b9e\u73b0\u3002\n\n\u4ece CLI \u5e94\u7528\u53ef\u8fbe\u7684\uff1a\n\n**\u2705 CLI \u9700\u8981\u7684 \u2014 \u4fdd\u7559\uff1a**\n- getBundleDir \u2014 bundle \u5b58\u50a8\u8def\u5f84\n- getWorkerHostScriptPath \u2014 \u542f\u52a8 worker\n- readThreadsIndex, removeThreadEntry, upsertThreadEntry \u2014 \u7ebf\u7a0b\u7d22\u5f15\u7ba1\u7406\n- walkStateFramesNewestFirst \u2014 \u7ebf\u7a0b\u72b6\u6001\u904d\u5386\n- prepareCasFork \u2014 fork \u64cd\u4f5c\n- garbageCollectCas, GcResult \u2014 GC\n- FORK_BRANCH_ROLE \u2014 fork \u5e38\u91cf\n- ThreadHistoryEntry, ThreadIndex \u2014 \u7c7b\u578b\n- removeThreadHistoryEntries \u2014 \u5386\u53f2\u6e05\u7406\n- workflowAdapter \u2014 template-solve-issue \u4f7f\u7528\n- createExtract \u2014 template-solve-issue \u4f7f\u7528\n\n**\u274c \u4e0d\u53ef\u8fbe \u2014 \u5185\u90e8\u5316\uff0823 \u4e2a\u4e2d\u7684\u5927\u90e8\u5206\uff09\uff1a**\n- CasForkPlan \u2014 prepareCasFork \u7684\u5185\u90e8\u7c7b\u578b\n- ChainState, EMPTY_CHAIN_STATE \u2014 engine \u5185\u90e8\u72b6\u6001\n- ExecuteThreadIo, ExecuteThreadOptions \u2014 executeThread \u7684\u53c2\u6570\uff0c\u4f46 executeThread \u672c\u8eab\u662f\u5185\u90e8\u7684\n- ExtractFn \u2014 engine \u5185\u90e8 extract \u673a\u5236\n- ForkContinuationOptions \u2014 fork \u5185\u90e8\n- LlmError, LlmExtractArgs \u2014 LLM \u8c03\u7528\u5185\u90e8\n- PrefilledDiskStep \u2014 \u5185\u90e8\u6b65\u9aa4\u7c7b\u578b\n- SupervisorDecision \u2014 engine \u5185\u90e8\u51b3\u7b56\u7c7b\u578b\n- ThreadIndexEntry \u2014 \u68c0\u67e5\u662f\u5426 ThreadIndex \u7684\u6210\u5458\u7c7b\u578b\uff0c\u5982\u679c\u662f\u5219\u8ddf\u968f ThreadIndex \u4fdd\u7559\n- ThreadPauseGate, createThreadPauseGate \u2014 \u5185\u90e8\u6682\u505c\u673a\u5236\n- appendThreadHistoryEntry \u2014 \u5185\u90e8\u5199\u5386\u53f2\n- createWorkflow \u2014 \u6b64\u5904\u7684 createWorkflow \u4e0e runtime \u7684\u4e0d\u540c\uff0c\u662f engine \u5185\u90e8\u7684\n- executeThread \u2014 engine \u6838\u5fc3\u5faa\u73af\uff0c\u5185\u90e8\n- extractFunctionToolFromZodSchema \u2014 \u5185\u90e8\u5de5\u5177\u8f6c\u6362\n- llmErrorToCause, llmExtract \u2014 LLM \u8c03\u7528\u5185\u90e8\n- tryParseWorkflowResultRecord \u2014 \u5185\u90e8\u89e3\u6790\n- WorkflowAdapterOptions, WorkflowAsAgentOptions, workflowAsAgent \u2014 \u5185\u90e8\n- writeThreadsIndex \u2014 CLI \u7528 upsert/remove \u5373\u53ef\uff0c\u4e0d\u9700\u8981\u76f4\u63a5\u5199\n\n**\u8fd9\u4e2a\u5305\u662f\u6536\u655b\u4f18\u5148\u7ea7\u6700\u9ad8\u7684** \u2014 39% \u4f7f\u7528\u7387\uff0c\u5927\u91cf\u5185\u90e8\u5b9e\u73b0\u7ec6\u8282\u66b4\u9732\u3002\n\n\u2014 \u5c0f\u6a58 \ud83c\udf4a\uff08NEKO Team\uff09

## \u53ef\u8fbe\u6027\u5206\u6790 \u2014 `@uncaged/workflow-execute`\n\n### \u5305\u804c\u8d23\n\n**Engine \u6267\u884c\u5c42\u3002** Worker \u5185\u90e8\u5b9e\u73b0\uff1a\u7ebf\u7a0b\u8c03\u5ea6\u3001\u72b6\u6001\u63a8\u8fdb\u3001CAS fork/GC\u3001LLM extract\u3002\n\n### \u53d7\u4f17\n\n**\u7eaf\u7cfb\u7edf\u5185\u90e8\u3002** Bundle \u4f5c\u8005\u5b8c\u5168\u4e0d\u5e94\u63a5\u89e6\u8fd9\u4e2a\u5305\u3002CLI \u901a\u8fc7\u5b83\u7ba1\u7406\u7ebf\u7a0b\u548c\u542f\u52a8 worker\u3002\n\n### \u53ef\u8fbe\u6027\u5224\u5b9a\n\n\u4ece bundle \u4f5c\u8005\u7684\u5b9a\u5236\u6811\uff1a**\u96f6\u53ef\u8fbe**\u3002\u8fd9\u662f worker \u7684\u5185\u90e8\u5b9e\u73b0\u3002\n\n\u4ece CLI \u5e94\u7528\u53ef\u8fbe\u7684\uff1a\n\n**\u2705 CLI \u9700\u8981\u7684 \u2014 \u4fdd\u7559\uff1a**\n- `getBundleDir` \u2014 bundle \u5b58\u50a8\u8def\u5f84\n- `getWorkerHostScriptPath` \u2014 \u542f\u52a8 worker\n- `readThreadsIndex`, `removeThreadEntry`, `upsertThreadEntry` \u2014 \u7ebf\u7a0b\u7d22\u5f15\u7ba1\u7406\n- `walkStateFramesNewestFirst` \u2014 \u7ebf\u7a0b\u72b6\u6001\u904d\u5386\n- `prepareCasFork` \u2014 fork \u64cd\u4f5c\n- `garbageCollectCas`, `GcResult` \u2014 GC\n- `FORK_BRANCH_ROLE` \u2014 fork \u5e38\u91cf\n- `ThreadHistoryEntry`, `ThreadIndex` \u2014 \u7c7b\u578b\n- `removeThreadHistoryEntries` \u2014 \u5386\u53f2\u6e05\u7406\n- `workflowAdapter` \u2014 template-solve-issue \u4f7f\u7528\n- `createExtract` \u2014 template-solve-issue \u4f7f\u7528\n\n**\u274c \u4e0d\u53ef\u8fbe \u2014 \u5185\u90e8\u5316\uff0823 \u4e2a\u4e2d\u7684\u5927\u90e8\u5206\uff09\uff1a**\n- `CasForkPlan` \u2014 prepareCasFork \u7684\u5185\u90e8\u7c7b\u578b\n- `ChainState`, `EMPTY_CHAIN_STATE` \u2014 engine \u5185\u90e8\u72b6\u6001\n- `ExecuteThreadIo`, `ExecuteThreadOptions` \u2014 executeThread \u7684\u53c2\u6570\uff0c\u4f46 executeThread \u672c\u8eab\u662f\u5185\u90e8\u7684\n- `ExtractFn` \u2014 engine \u5185\u90e8 extract \u673a\u5236\n- `ForkContinuationOptions` \u2014 fork \u5185\u90e8\n- `LlmError`, `LlmExtractArgs` \u2014 LLM \u8c03\u7528\u5185\u90e8\n- `PrefilledDiskStep` \u2014 \u5185\u90e8\u6b65\u9aa4\u7c7b\u578b\n- `SupervisorDecision` \u2014 engine \u5185\u90e8\u51b3\u7b56\u7c7b\u578b\n- `ThreadIndexEntry` \u2014 \u68c0\u67e5\u662f\u5426 ThreadIndex \u7684\u6210\u5458\u7c7b\u578b\uff0c\u5982\u679c\u662f\u5219\u8ddf\u968f ThreadIndex \u4fdd\u7559\n- `ThreadPauseGate`, `createThreadPauseGate` \u2014 \u5185\u90e8\u6682\u505c\u673a\u5236\n- `appendThreadHistoryEntry` \u2014 \u5185\u90e8\u5199\u5386\u53f2\n- `createWorkflow` \u2014 \u6b64\u5904\u7684 createWorkflow \u4e0e runtime \u7684\u4e0d\u540c\uff0c\u662f engine \u5185\u90e8\u7684\n- `executeThread` \u2014 engine \u6838\u5fc3\u5faa\u73af\uff0c\u5185\u90e8\n- `extractFunctionToolFromZodSchema` \u2014 \u5185\u90e8\u5de5\u5177\u8f6c\u6362\n- `llmErrorToCause`, `llmExtract` \u2014 LLM \u8c03\u7528\u5185\u90e8\n- `tryParseWorkflowResultRecord` \u2014 \u5185\u90e8\u89e3\u6790\n- `WorkflowAdapterOptions`, `WorkflowAsAgentOptions`, `workflowAsAgent` \u2014 \u5185\u90e8\n- `writeThreadsIndex` \u2014 CLI \u7528 upsert/remove \u5373\u53ef\uff0c\u4e0d\u9700\u8981\u76f4\u63a5\u5199\n\n**\u8fd9\u4e2a\u5305\u662f\u6536\u655b\u4f18\u5148\u7ea7\u6700\u9ad8\u7684** \u2014 39% \u4f7f\u7528\u7387\uff0c\u5927\u91cf\u5185\u90e8\u5b9e\u73b0\u7ec6\u8282\u66b4\u9732\u3002\n\n\u2014 \u5c0f\u6a58 \ud83c\udf4a\uff08NEKO Team\uff09
Owner

Completed in PR #283 + #284.

Completed in PR #283 + #284.
xiaomo changed title from chore: audit public exports \u2014 `@uncaged/workflow-execute` to chore: audit public exports — 2026-05-16 10:34:21 +00:00
Sign in to join this conversation.
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/workflow#279