@telorun/kernel

中文文档
0.127.0发布于 2026/11/02SEE LICENSE IN LICENSETypeScriptES Module

Telo运行时-一个轻量级的多语言执行主机。

中文使用文档
文档目录8 节
  1. 1.核心概念
  2. 2. 资源定义
  3. 能力
  4. 拓扑结构
  5. 继承
  6. 3. 玻璃纸插值
  7. 插值
  8. 4. Telo定义

Telo内核

Telo内核是Telo清单的声明性执行主机。它加载YAML,编译CEL表达式,解析和注册控制器,索引资源实例,并协调它所知道的各种启动/拆除生命周期。

目标: Node.js (Rust/Go端口计划)

输入: 一个模块清单YAML文件或一个YAML文件目录

1.核心概念

Telo内核是一个 声明式执行主机.你用YAML描述资源;内核加载它们,连接控制器,并保持进程活动,直到所有工作完成。

内核执行三个功能:

  • 加载程序: 读取YAML文件,编译CEL (!cel 值, !interpolate 孔),并解析控制器入口点。
  • 注册表: 索引资源实例的复合键 module.Kind.name.
  • 内核: 编排引导序列、管理事件总线和路由调用。

模块加载和资源发现 发生在加载阶段,在初始化任何资源之前。


2. 资源定义

清单中的每个资源都是类的实例 Telo.Definition。定义声明了几个正交方面:

方面场目的
capability生命周期的作用其中一个 Runnable, Service, Invocable, Mount, Provider -互斥
topology成分这种类型的内部结构是怎样的: Sequence, Router, Workflow
extends继承抽象接口这种实现(跨模块插件模式)
controllers执行PURL引用的控制器实现

能力

capability 分配单个生命周期角色。内核使用它来确定何时调用 init(), run(),或者 invoke() 在控制器上。定义只声明一个功能。

→ 文档/ capabilities.md

拓扑结构

topology 命名某种类型的结构组成模式-如何从步骤,路由或节点内部组装它。当没有声明控制器时,它驱动内置执行,分析器中的结构验证以及编辑器中的画布渲染。

→ 文档/ topology.md (设计方案-尚未实施)

继承

extends 声明定义满足抽象接口 (Telo.Abstract),由另一个模块声明。这是子系统(如工作流后端)的插件模式。

→ docs/inheritance.md

对于完整的 Telo.Definition 字段引用,请参见 文档/resource-definition.md.


3. 玻璃纸插值

在处理清单对象之前,每个CEL表达式(a !cel 价值,每孔一根 !interpolate 或者 !sql -是编译的。这作为加载的一部分运行-任何编译错误都会立即停止引导序列。

主机环境变量仅通过类型化的根条目到达CEL: 声明一个 variables:/secrets:/ports: 带有的条目 env: 键并读为 !cel "variables.X" / !cel "secrets.X" / !cel "ports.X".

variables:
  manifestPath:
    env: MY_MANIFEST_PATH
    type: string
resources:
  - !cel "variables.manifestPath"

插值

  • !cel "expr" -一种表达;该值保持其CEL类型(整数,布尔值,…)。
  • !interpolate "text ${{ expr }} text" -带孔的文本,总是字符串;每个孔通过CEL转换 string().

一个普通的字符串举行 ${{ 从未编译: 它是不推荐使用的未标记的拼写,在加载时由 untagged-interpolation 移民和拒绝(ERR_UNTAGGED_INTERPOLATION) 它生存的地方。


4. Telo定义

模块声明它们处理所使用的资源类型 Telo.Definition:

kind: Telo.Definition
metadata:
  name: Server # fully-qualified kind: Http.Server
  module: Http
capability: Service # one of: Runnable, Service, Invocable, Mount, Provider, Template
schema: # JSON Schema — validated against each resource before create()
  type: object
  properties:
    port: { type: integer }
    host: { type: string }
  required: [port]
controllers:
  # Ordered list of Package URL (PURL) candidates — first match for the current runtime is used
  - pkg:npm/@telorun/run@>=1.0.0?local_path=./nodejs#sequence
  - pkg:cargo/telorun-run@>=1.0.0?local_path=./rust#sequence

当一个 Telo.Definition 实例初始化,它解析并加载控制器模块 并将其注册到内核。对于全分辨率算法 (本地路径、主机 node_modules,注册表缓存)和PURL格式,参见 controllers.md.

版本与发布记录

@telorun/kernel 共发布 169 个版本,首次发布于 2026/02/28;过去 12 个月发布了 169 个版本。

版本发布日期距今
0.127.0latest2026/11/02今天
0.126.02026/11/021 天前
0.125.12026/10/313 天前
0.125.02026/10/304 天前
0.124.02026/10/295 天前
0.123.12026/10/268 天前

关于 @telorun/kernel 的常见问题

@telorun/kernel 是什么?

Telo运行时-一个轻量级的多语言执行主机。

如何安装 @telorun/kernel?

在项目目录运行 npm install @telorun/kernel,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@telorun/sdk(*)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@telorun/kernel 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@telorun/kernel 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@telorun/kernel 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@telorun/kernel 可以商用吗?

@telorun/kernel 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@telorun/kernel 还在维护吗?

最新版本 0.127.0 发布于 2026/11/02(今天);至今共发布 169 个版本,其中过去 12 个月发布了 169 个;首次发布于 2026/02/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。