Skip to content

Core

Core 位于 packages/core/,是 Harness 的业务无关运行时。

Core 负责什么

能力说明为什么放在 Core
配置加载读取 .fe-harness/project.yaml,解析项目、平台、技术栈、facts 和命令映射所有工作流都依赖同一个配置入口
运行时校验检查产品类型、平台、stack、命令和 verify mode 是否受支持早失败,避免 Agent 在错误配置上继续实现
命令解析unit_testcoverage_closure 等符号命令映射到真实 shell 命令项目拥有命令,Core 只执行映射
验证执行支持 fail-fast 和 audit 式继续执行不同场景需要不同反馈成本
Doctor检查 Node、pnpm、脚本、页面注册、输入、Token、Agent 工作流等诊断应只读且可重复
初始化计划init / create 生成 create、unchanged、conflict 等状态写文件前必须能预览和保护已有项目
报告写 Markdown、JSON 和 command log人、CI、Agent 都能读取同一份结果
输入分析读取 manifest,发现未登记输入,抽取文本事实和冲突输入证据是任务开始前的共同事实
OpenAPI 生成保护记录 generated hash,拒绝覆盖手改 generated 文件自动生成层和业务层必须分开
UI/Token 检查协议检查唯一 Token 真值和 UI System Adapter 描述Core 只理解通用描述,不导入具体组件库

Core 不负责什么

Core 不包含:

  • 业务页面。
  • 业务状态。
  • API endpoint。
  • 品牌名。
  • Design Token 值。
  • 具体 UI 组件库实现。

也就是说,Core 可以知道“项目声明了一个 API snapshot”,但不知道“这是酒店搜索接口”;可以知道“某个页面注册缺失”,但不知道“酒店列表页应该有哪些卡片”;可以知道“Token 未提炼”,但不知道“品牌主色应该是什么”。

为什么 Core 要克制

Core 一旦理解业务,扩展 profile 和 platform 时就会出现隐性耦合。保持 Core 只理解通用协议,才能让 Consumer H5 之外的产品形态在未来进入同一套 Harness。

与配置的关系

Core 通过项目配置工作:

yaml
project:
  product_type: consumer_h5
platforms:
  - web_mobile
stack:
  adapter: uni_app
verify:
  feature:
    commands:
      - unit_test
      - coverage_closure

项目选择能力,Core 执行协议。

Core 内部文件视角

文件大致职责
config.mjs项目配置加载和校验
runner.mjs命令执行、fail-fast、状态归一
doctor.mjs只读诊断
init.mjs初始化和创建计划、安全写入
inputs.mjs输入清单、发现和分析
openapi.mjsOpenAPI operation 检查、类型和 wrapper 生成
design.mjsDesign Token inspect/discover/diff
ui-system.mjsUI System Adapter 检查
history.mjs任务历史和快照
report.mjs报告和日志输出

Business-neutral by design. Project-owned by default.