术语表
Noeta 的规范词汇。每个术语在整个代码库和文档中都有单一、稳定的含义。权威来源是仓库根目录的CONTEXT.md。
核心抽象
Task
代理的一个执行实例;它可以生成子任务,可以挂起和恢复。系统中唯一的一等公民。 避免使用: Run、Job、Execution、Workflow Instance。
另见:核心概念、ADR:任务作为唯一原语
Subtask
通过 spawn_subtask 从父任务生成的任务。结构上与父任务相同,仅通过 parent_task_id 关联。 避免使用: Child Run、Sub-agent。
Agent
一个命名的、可生成的配置(policy + 工具 + 上下文规范 + 预算)。不是运行时实体——只是任务的"类"。每个 Agent 携带一个 description,用于渲染子代理分派控制工具 schema。 避免使用: Bot、Assistant、AI。
另见:预设代理、ADR:工具与代理目录
Options
声明式代理配置(公开接口 noeta.sdk.Options)。由 compile_options 编译为 AgentSpec。表达官方代理集和自定义代理的唯一方式。
Step
任务在一次 Engine 主循环中前进的片段:compose_view → decide → dispatch。 避免使用: Iteration、Turn、Cycle。
Decision
Policy.decide 的返回值,Engine 分派的输入。一组中立机制变体:tool_calls、spawn_subtask、yield_for_human、wait_timer、wait_external、finish、fail、spawn_subtasks、state_patch。 避免使用: Action、Command、Intent。
另见:核心概念
Policy
"在给定当前 View 的情况下决定下一步"的函数。可以是纯 LLM(ReActPolicy)、纯 FSM 或混合体。 避免使用: Pattern、Strategy、Brain。
Tool
代理可以调用的外部动作。结构化契约三元组 name / input_schema / description 是手写的、面向 LLM 的。还携带 risk_level。通过 Options 提供的开放扩展接口。 避免使用: Function、Action、Skill。
另见:工具参考、ADR:工具描述规范化
Provider
外部服务(LLM / 存储 / 向量存储)的 Noeta 形态 adapter。LLMProvider 通过 Options.provider 开放,并通过 noeta.sdk 重新导出。存储后端通过主机配置配置,而非 Options。不是上下文内容来源。避免使用: Vendor、Backend、Connector。
另见:配置、ADR:Provider adapters and multimodal、ADR:提供者中立
Skill
位于 .noeta/skills/<name>/SKILL.md 的本地静态 LLM 工作流模板,可选附带资源文件。三层合并(内置 < 全局 ~/.noeta/skills < 工作区)。两阶段按需加载:菜单渲染到 skill 控制工具 schema;选中后主体渲染到半稳定上下文。与 Tool 不是一回事。避免使用: Plugin、Module、Macro。
状态与事件
EventLog
每任务的只追加 EventEnvelope 记录流。因果关系和决策的真相来源。避免使用: Journal、Log、Audit Trail。
另见:核心概念、ADR:事件溯源真相
Event / EventEnvelope
EventLog 中的一条记录。Envelope 持有 seq / type / actor / trace_id / causation_id;载荷是一个类型化的 dataclass。 避免使用: Message、Record。
ContentStore
内容寻址、不可变的大对象存储。大对象的真相来源。 大于 4 KB 事件载荷上限的主体存放在此处;envelope 仅携带 ContentRef。 避免使用: BLOB Store、Asset Store、Object Store。
另见:核心概念、ADR:存储协议 L0
ContentRef
指向 ContentStore 的引用:hash + size + media_type。 避免使用: URL、Path、Pointer。
Artifact
由 Tool 或 Provider 产生的大对象,通过 ContentRef 引用。 避免使用: File、Attachment、Blob。
Snapshot
EventLog 中的一个特殊事件,其主体存入 ContentStore。在每次挂起之前写入;是 fold 的加速点。 避免使用: Checkpoint、State Dump。
Task State(四个切片)
四个类型化切片,每个切片恰好有一个写者:
- RuntimeState —— messages / usage(写者:Engine)
- TaskState —— goal / phase / todos / decisions / active_content(写者:Policy 的
state_patch) - ContextState —— current plan ref(写者:Engine fold)
- GovernanceState —— cost / denied(写者:Engine)
执行模型
Engine
通过一步推进单个 Task。≤ 500 行。对 worker / dispatcher / workflow 一无所知。锁定:不是扩展点。 避免使用: Runtime、Executor。
Worker
从 Dispatcher 租用 Task 并调用 Engine 推进它的进程。一个租约运行到下一次挂起或终止状态,然后释放。避免使用: Runner、Daemon。
Lease
Worker 对 Task 的短期独占持有,带有 lease_id / expires_at。 避免使用: Lock、Claim。
Dispatcher
管理 Task 入队、Lease 授予、唤醒事件交付和过期回收。 避免使用: Scheduler、Queue Manager。
Suspended
Task 的 4 种状态之一,等待唤醒事件。等待子任务 / 批准 / 计时器 / 外部事件的统一表达。 避免使用: Yielded、Paused、Blocked、Waiting。
WakeCondition / WakeEvent
描述 Task 正在等待什么。SubtaskCompleted / HumanResponseReceived / TimerFired / ExternalEvent。
上下文
View
ContextComposer 为 Policy 组装的 LLM 输入。不等于 Task——它是一个投影。 避免使用: Prompt(View 是 Prompt 的结构化形式)、Frame。
ContextComposer
将 Task 组装为 View。主路径不调用 LLM。具体的 ThreeSegmentComposer 在用户界面上是一个封闭的扩展点(stable-prefix KV-cache 可重现性是硬约束)。唯一的开放钩子是注册一个 ContentKindSpec。 避免使用: PromptBuilder、ContextAssembler。
ContextPlan
给定 LLM 调用的 View 元数据(选择了哪些块、压缩了什么、丢弃了什么)。用于审计和调试。 避免使用: Prompt Trace。
Stable Prefix / Semi-stable / Dynamic Suffix
View 三段组装中的固定段名称。Stable Prefix 的缓存友好性是硬约束。
Content Channel
常驻内容(技能、内存索引)进入上下文的通用机制。两部分:事件记录(ContextContentRecorded)+ 组装渲染(ContentChannelRegistry 将每种类型渲染到半稳定段)。注册 ContentKindSpec 是开放扩展钩子。 避免使用: Provider、ContentSource、Middleware。
origin
Message 上的可选作者标记,取值 human / system / memory,默认为 None = 角色的自然作者。单写者守卫:只有 Engine 的记录路径可以写入它。 避免使用: Author、Sender、Role。
另见:ADR:事件来源标记
Memory
跨任务长期内存 v1:写 = memory_write 工具,读 = memory_read 工具,常驻索引 = 内容通道租户(kind="memory",policy evolving),自动召回 = 主机在用户消息接缝处检索。由 Capabilities.memory 控制。 避免使用: 用 "Memory" 指代 TaskState(那是任务内状态;这是跨任务的)。
治理
Principal
Task 的发起者或责任方;持有 identity / capabilities / allowed_side_effects / delegation chain。 避免使用: User(User 是一种 Principal)、Actor。
Contract
Task 的输入、预期输出 schema、拒绝条件和副作用声明。冻结到 TaskCreated 事件中。 避免使用: Spec、Schema。
Budget
Task 的资源上限(iterations / cost_usd / wall_seconds / tool_calls)。 避免使用: Quota、Limit。
Guard
在三个点运行的同步钩子——before_tool_call / before_spawn_subtask / before_finish——返回 allow / deny / require_approval。 避免使用: Middleware、Interceptor、Filter。
Observer
订阅 EventLog 的异步钩子;其失败不影响 Task。 避免使用: Listener、Subscriber。
Mutator
在 Noeta v2 中已弃用。 钩子不得修改 ctx / payload。要修改,请改为更改 Policy 或 Composer。
操作
Inspect
读取 EventLog + ContentStore 并向人类呈现历史。无外部 IO。 避免使用: View Log、Dump。
Resume
从挂起状态继续实际执行。一个操作紧急停止杠杆;正常路径由唤醒事件触发。 避免使用: Restart、Continue。
另见:故障模式
标记的歧义
"Workflow"
不是一等概念。用确定性 Policy + spawn_subtask 表达固定过程。模型即兴创作的编排脚本表现为一个 Task + 一个解释该脚本的 Policy。
"Session"
不是一等概念。多轮对话只是一个 Task 反复接收用户输入:一个交互会话 = 一个 Task。
"Run"
不是一等概念。始终使用 Task。