版本号:v0.1.0 最后更新:2026-04-04
本文档用于定义本项目的模块注册表设计,用于支撑以下能力:
模块注册表是本项目的重要基础设施,不是附属功能。
模块注册表是系统中的“工具目录”和“能力边界层”。
其职责不是执行算法,而是回答以下问题:
换句话说,AI分析员不能直接面对一堆裸代码,而必须通过模块注册表来理解和调用系统能力。
模块是否可用,不应由使用者记忆或硬编码决定,而应由机器可读元数据决定。
任何模块在进入实验链之前,应先被注册、校验和分类。
如果只注册单模块,不注册链模板,AI分析员仍然很难高效规划实验。
因此注册表中应同时存在:
AI分析员的可选工具集合必须来自注册表。
AI 不应绕过注册表直接调用未知代码、隐藏模块或未声明参数。
第一版建议注册三类对象:
算法模块是算法链中的最小可组合单元。
模块通常只负责一个明确步骤,例如:
type ModuleSpec = {
id: string
name: string
version: string
stage: string
signalProfiles: string[]
goals: string[]
inputFormat: string
outputFormat: string
params: Record<string, ParamSpec>
evidenceKinds: string[]
failureModes: string[]
cost: CostSpec
runtime: RuntimeSpec
trustLevel: "core" | "trusted" | "experimental"
enabled: boolean
}
id
name
version
stage
signalProfiles
goals
inputFormat
outputFormat
params
evidenceKinds
failureModes
cost
runtime
trustLevel
enabled
模块参数必须显式声明,不能依赖 AI 或调用方猜测。
建议结构:
type ParamSpec = {
type: "int" | "float" | "bool" | "string" | "enum"
required?: boolean
defaultValue?: unknown
range?: [number, number]
choices?: string[]
description?: string
tunableByAI: boolean
riskLevel?: "low" | "medium" | "high"
}
关键点:
tunableByAI 必须明确range 和 choices 必须明确AI分析员不应只知道“能不能跑”,还应知道“跑起来代价大不大”。
建议结构:
type CostSpec = {
cpu?: number
memory?: number
latency?: number
battery?: number
}
type RuntimeSpec = {
location: "local_mobile" | "remote_host" | "either"
invocation: "ffi" | "native" | "rpc"
realtimeSafe: boolean
}
这些信息会直接影响 AI分析员的实验规划。
例如:
链模板是对常见分析方法的标准化封装。
它的意义在于:
type ChainTemplateSpec = {
id: string
name: string
version: string
purpose: string
signalProfiles: string[]
goals: string[]
inputFormat: string
nodes: ChainTemplateNode[]
expectedEvidenceKinds: string[]
typicalFailureModes: string[]
costClass: "low" | "medium" | "high"
enabled: boolean
}
type ChainTemplateNode = {
moduleId: string
required: boolean
presetParams?: Record<string, unknown>
}
AI分析员在大多数情况下应优先从链模板出发,而不是直接从裸模块拼接。
为了避免模块间随意拼接,输入输出格式也应进入注册表统一管理。
建议格式:
type DataFormatSpec = {
id: string
family: string
encoding: string
description?: string
}
示例:
audio.wav_pcm16audio.spectrogram_f32audio.embedding_f32audio.segment_listanalysis.evidence_list模块注册表至少应支持以下查询:
例如:
detect 阶段模块classify 阶段模块例如:
periodic_pulse 的模块或链模板例如:
周期验证 的链模板例如:
spectrogram_extract 后面的模块例如:
例如:
不是所有注册对象都必须对 AI分析员完全可见。
建议至少区分三类:
AI 可以自由选择和调度。
AI 需要额外条件才能使用,例如:
AI 不应看到,更不应调用。
模块或链模板注册时应至少通过以下检查:
未通过校验的对象不得进入可用目录。
第一版建议采用最小可行方案:
这足以验证:
模块注册表不是给用户直接使用的,而是给 AI分析员和实验执行器共同使用的。
推荐关系如下:
这样可以形成双保险:
模块注册表是本项目的核心基础设施之一。
它的价值在于:
第一版应优先支持: