Phase 3: 明确 core 包定位 — 评估是否下沉更多领域逻辑 #87
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent Issue
#82 架构优化:模块职责拆分建议
前置
Phase 1、Phase 2 完成后评估
目标
根据 Phase 1/2 完成后的代码形态,决定 core 的最终定位。
待评估
产出
Phase 3 评估(基于当前
refactor/core-evaluation分支代码)以下对照 issue 中四项「待评估」结论与理由。
1.
signal-bus是否应下沉到core?建议:保持留在
daemon。packages/daemon/src/signal-bus.ts约 52 行,仅被 kernel、reflex-scheduler、daemon 测试引用;cli不依赖 SignalBus,仅 status 文案里提到「pending persistence」。core已承载 Signal 数据契约(packages/core/src/types.ts),与 issue 描述一致;总线实现则是 引擎进程内的同步派发与订阅,含console.error、聚合首个 handler 错误后throw,属于运行时编排而非「可被多包复用的纯类型/解析」。core,会把带副作用的运行时实现放进当前以 配置解析 + 类型 + 轻量纯函数(parseNerveConfig、sense-workflow-directive、Result)为主的包,边界变模糊;且短期内没有第二消费者(例如 CLI 内嵌 kernel)需要共享同一实现。core或抽极小nerve-engine-runtime子包;现阶段 类型在 core、实现在 daemon 的分工清晰、成本低。2.
Result工具类型是否应独立为utils?建议:不拆独立包;可继续留在
core。packages/core/src/result.ts体量极小(Result+ok/err),与 RFC/规范中「预期失败用 Result」的约定一致,放在 共享契约层 很自然。daemon的ipc.ts、sense-runtime.ts等引用;cli当前未从 core 引入Result,IPC 响应多用内联{ ok: true } | { ok: false; error: string },拆utils不会立刻减轻 cli 依赖。@uncaged/nerve-utils会增加发布/版本矩阵与 import 路径成本,而收益有限;若日后 generic 工具变多,再评估 monorepo 内子路径或新包 即可。3.
core是否应改名为nerve-shared/nerve-types?建议:维持
@uncaged/nerve-core与目录名core。parseNerveConfig、sense-workflow-directive等业务向解析/路由,命名为nerve-types易误导;nerve-shared更准确但属于 全仓 rename + 文档 + 发布坐标 的大改动,与当前包体量不匹配。core已收敛为 小模块集合(types、config、sense-workflow-directive、result),职责可读,无强 rename 动机。4. 是否维持现状?
建议:维持现状;本阶段以 issue comment 作为产出即可,无需为上述项单独开 PR。
Result— 与cli/daemon的依赖方向一致(二者均依赖 core,互不依赖)。signal-bus)— 与架构说明「Signal 经总线分发、不持久化」一致。若后续有明确新需求(例如第三方扩展要 import 与 daemon 完全一致的 bus 实现),再 reopen 对应子项即可。
test connectivity from CI agent