chore: audit public exports — #277

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

背景

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

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

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

统计

总 export 外部使用 未使用 使用率
10 5 5 50%

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

备注

LLM 调用和 thread reactor 的内部类型,外部无直接消费者。

操作

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

  1. 保留 — 属于公共 API 契约,外部 bundle 作者可能需要
  2. 内部化 — 从 移除 re-export,保留在包内部使用
  3. 删除 — 确认为死代码
## 背景 Bundle 全部自包含后(#270),审计各 package 的 public API,识别未被其他 package import 的符号。 未被使用 ≠ 应该删除。这些是收敛候选,需逐个判断: - 是否为外部 bundle 作者需要的公共 API - 是否只在包内部使用 - 是否为冗余 re-export ## 统计 | 总 export | 外部使用 | 未使用 | 使用率 | |----------|---------|--------|-------| | 10 | 5 | 5 | 50% | ## 未被外部 import 的符号(候选) - [ ] - [ ] - [ ] - [ ] - [ ] ## 备注 LLM 调用和 thread reactor 的内部类型,外部无直接消费者。 ## 操作 逐个检查上述符号,决定: 1. **保留** — 属于公共 API 契约,外部 bundle 作者可能需要 2. **内部化** — 从 移除 re-export,保留在包内部使用 3. **删除** — 确认为死代码
Author
Owner

\u53ef\u8fbe\u6027\u5206\u6790 \u2014 @uncaged/workflow-reactor\n\n### \u5305\u804c\u8d23\n\nLLM \u8c03\u7528 + Thread Reactor\u3002 \u63d0\u4f9b LlmFn\uff08LLM \u8c03\u7528\u7b56\u7565\uff09\u548c createThreadReactor\uff08tool-call \u5faa\u73af\uff09\u3002\n\n### \u53d7\u4f17\n\n\u4e3b\u8981\u662f \u7cfb\u7edf\u5185\u90e8\uff08execute, agent-react\uff09\u3002\u4f46\u5982\u679c bundle \u4f5c\u8005\u4f7f\u7528 createReactAdapter\uff0cLlmFn \u7c7b\u578b\u4f1a\u51fa\u73b0\u5728 ReactAdapterConfig \u4e2d\uff0c\u6b64\u65f6\u662f\u53ef\u8fbe\u7684\u3002\n\n### \u53ef\u8fbe\u6027\u5224\u5b9a\n\n**\u2705 \u53ef\u8fbe \u2014 \u4fdd\u7559\uff1a**\n- createThreadReactor \u2014 execute + agent-react \u4f7f\u7528\n- createLlmFn \u2014 execute \u4f7f\u7528\uff1b\u4e5f\u662f ReactAdapterConfig.llmFn \u7684\u6784\u9020\u51fd\u6570\n- LlmFn \u2014 ReactAdapterConfig \u7684\u6210\u5458\u7c7b\u578b\uff08Layer 4 \u53ef\u8fbe\uff09\n- ThreadReactorFn \u2014 execute \u4f7f\u7528\n- ToolDefinition \u2014 agent-react \u4f7f\u7528\n\n**\u274c \u4e0d\u53ef\u8fbe \u2014 \u5185\u90e8\u5316\u5019\u9009\uff1a**\n- ChatMessage \u2014 LlmFn \u7684\u53c2\u6570\u7c7b\u578b\uff0c\u4f46 bundle \u4f5c\u8005\u4e0d\u76f4\u63a5\u6784\u9020 ChatMessage\uff0c\u7531 reactor \u5185\u90e8\u5904\u7406\n- StructuredToolSpec \u2014 reactor \u5185\u90e8\u5de5\u5177\u89c4\u683c\n- ThreadReactorConfig \u2014 reactor \u5185\u90e8\u914d\u7f6e\uff0c\u901a\u8fc7 createThreadReactor \u7684\u53c2\u6570\u4f20\u5165\uff0c\u4f46\u7c7b\u578b\u672c\u8eab\u4e0d\u9700\u8981 export\n- ThreadReactorInvokeArgs \u2014 reactor \u5185\u90e8\u8c03\u7528\u53c2\u6570\n- ToolCall \u2014 reactor \u5185\u90e8\u7c7b\u578b\n\n\u6ce8\u610f\uff1a\u5982\u679c ChatMessage \u51fa\u73b0\u5728 LlmFn \u7684\u7b7e\u540d\u4e2d\uff08LlmFn :: ChatMessage[] -> IO ChatMessage\uff09\uff0c\u90a3\u5b83\u5c31\u662f\u53ef\u8fbe\u7684\uff0c\u9700\u8981\u4fdd\u7559\u3002**\u9700\u8981\u786e\u8ba4 LlmFn \u7684\u5b9e\u9645\u7c7b\u578b\u7b7e\u540d\u3002**\n\n\u2014 \u5c0f\u6a58 \ud83c\udf4a\uff08NEKO Team\uff09

## \u53ef\u8fbe\u6027\u5206\u6790 \u2014 `@uncaged/workflow-reactor`\n\n### \u5305\u804c\u8d23\n\n**LLM \u8c03\u7528 + Thread Reactor\u3002** \u63d0\u4f9b `LlmFn`\uff08LLM \u8c03\u7528\u7b56\u7565\uff09\u548c `createThreadReactor`\uff08tool-call \u5faa\u73af\uff09\u3002\n\n### \u53d7\u4f17\n\n\u4e3b\u8981\u662f **\u7cfb\u7edf\u5185\u90e8**\uff08execute, agent-react\uff09\u3002\u4f46\u5982\u679c bundle \u4f5c\u8005\u4f7f\u7528 `createReactAdapter`\uff0c`LlmFn` \u7c7b\u578b\u4f1a\u51fa\u73b0\u5728 `ReactAdapterConfig` \u4e2d\uff0c\u6b64\u65f6\u662f\u53ef\u8fbe\u7684\u3002\n\n### \u53ef\u8fbe\u6027\u5224\u5b9a\n\n**\u2705 \u53ef\u8fbe \u2014 \u4fdd\u7559\uff1a**\n- `createThreadReactor` \u2014 execute + agent-react \u4f7f\u7528\n- `createLlmFn` \u2014 execute \u4f7f\u7528\uff1b\u4e5f\u662f ReactAdapterConfig.llmFn \u7684\u6784\u9020\u51fd\u6570\n- `LlmFn` \u2014 ReactAdapterConfig \u7684\u6210\u5458\u7c7b\u578b\uff08Layer 4 \u53ef\u8fbe\uff09\n- `ThreadReactorFn` \u2014 execute \u4f7f\u7528\n- `ToolDefinition` \u2014 agent-react \u4f7f\u7528\n\n**\u274c \u4e0d\u53ef\u8fbe \u2014 \u5185\u90e8\u5316\u5019\u9009\uff1a**\n- `ChatMessage` \u2014 LlmFn \u7684\u53c2\u6570\u7c7b\u578b\uff0c\u4f46 bundle \u4f5c\u8005\u4e0d\u76f4\u63a5\u6784\u9020 ChatMessage\uff0c\u7531 reactor \u5185\u90e8\u5904\u7406\n- `StructuredToolSpec` \u2014 reactor \u5185\u90e8\u5de5\u5177\u89c4\u683c\n- `ThreadReactorConfig` \u2014 reactor \u5185\u90e8\u914d\u7f6e\uff0c\u901a\u8fc7 createThreadReactor \u7684\u53c2\u6570\u4f20\u5165\uff0c\u4f46\u7c7b\u578b\u672c\u8eab\u4e0d\u9700\u8981 export\n- `ThreadReactorInvokeArgs` \u2014 reactor \u5185\u90e8\u8c03\u7528\u53c2\u6570\n- `ToolCall` \u2014 reactor \u5185\u90e8\u7c7b\u578b\n\n\u6ce8\u610f\uff1a\u5982\u679c `ChatMessage` \u51fa\u73b0\u5728 `LlmFn` \u7684\u7b7e\u540d\u4e2d\uff08`LlmFn :: ChatMessage[] -> IO ChatMessage`\uff09\uff0c\u90a3\u5b83\u5c31\u662f\u53ef\u8fbe\u7684\uff0c\u9700\u8981\u4fdd\u7559\u3002**\u9700\u8981\u786e\u8ba4 `LlmFn` \u7684\u5b9e\u9645\u7c7b\u578b\u7b7e\u540d\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-reactor` to chore: audit public exports — 2026-05-16 10:34:17 +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#277