CHAPTER 15 · STAGE 03 · 理解可靠性与扩展
常用概念词典
这份词典用于阅读时快速查阅。定义优先解释它在 DeepSeek Harness 中的具体含义,不追求覆盖同名术语在整个软件行业里的所有用法。这份词典用于阅读时快速查阅。定义优先解释它在 DeepSeek Harness 中的具体含义,不追求覆盖同名术语在整个软件行业里的所有用法。
A
ACP(Agent Client Protocol)
一种让外部客户端通过协议创建、驱动和取消 Agent Session 的接口。仓库中的 ACP 入口面向自动化客户端,处理 JSON-RPC/stdio、权限回答、状态和生命周期;它不是 AgentLoop 本身。
Adapter
把外部 Provider 的 API 转换成 Harness 统一接口的实现。LLM Adapter 把统一 GenerateOptions 转换成厂商请求,再把厂商流式事件转换成 StreamChunk。
Agent
一个可接收输入、运行 Turn、取消、等待 idle 并拥有 Session 的活动对象。外部消费者依赖公开 Agent 接口,而不是 AgentLoop 的内部具体类。
AgentHandle
程序化创建 Agent 后返回的所有权 handle。持有者通过它访问 Agent,并负责 dispose;dispose 需要等待 Agent 资源与进行中的工作安全收敛。
AgentLoop
默认的具体 Agent 驱动。它领取 Inbox、建立 Turn/Step、组装模型请求、调用 LLM、执行工具并写 SessionEvent。新产品功能通常挂扩展点,而不是直接修改循环。
Append-only
只在末尾追加新记录,不原地修改旧记录。Session 使用 append-only event log;当前显示状态可以通过 replacement 或最新 snapshot 派生,但旧事实仍保留。
AsyncIterable
可以异步逐项产生值的对象。LLM 流式响应常以它表达,调用方使用 for await 消费 chunk。
AbortSignal
协作式取消信号。它通知异步操作应停止,但不能强制终止任意同进程代码。消费者必须观察或转发 signal,并在取消后释放资源。
B
Branded ID
在 TypeScript 中给字符串等基础类型加领域品牌,例如 SessionId、MessageId、CallId。运行时值可能相同,但编译器阻止不同 id 类型混用。
Bundle
可安装的 Cordis 配置与代码组合层。Profile 叠加一个或多个 Bundle,再应用本地 patch,形成实际部署。
C
Capability
一项可被其他组件使用的能力,例如 LLM、Shell、FS、Persistence、Subagent 或 Web。能力不一定面向模型,也可以供内部插件、入口或协议使用。
Capability Seam
可替换能力的完整分层,包括 Service Definition、Service Provider 和 Consumer。它还需要明确配置、取消、失败和测试,而不只是声明一个接口。
CallId
一次 Tool Call 的标识符。tool/call 与 tool/result 通过同一 CallId 配对。
Canonical Output
Tool 执行返回的规范 JSON 值。它先通过输出 schema 校验,再渲染成模型 ContentBlock 和 UI metadata。规范值用于保证成功结果可验证、可持久化。
Compaction
把一段当前模型 surface 替换为摘要节点,从而缩短后续模型上下文。它通过追加 replacement 表达,不删除原事件,并保持 Tool Call/Result 配对边界。
Consumer
使用某项 Service 的组件。模型 Tool 常是 Consumer,但命令、协议入口、UI 或内部插件也可以是 Consumer。
ContentBlock
模型消息内容的结构化块,例如文本、推理、图片、Tool Call 或 Tool Result。统一 ContentBlock 让不同 LLM Provider 使用相同上层协议。
Context(Cordis Context)
插件访问 Service、注册事件/effect、挂载子插件并携带作用域与生命周期所有权的对象。它不只是普通全局变量容器。
Context Window
模型一次请求能容纳的总上下文容量。历史、系统提示词、工具 schema 和预留输出都消耗容量;Compaction 和 pruning 用来控制增长。
D
Declaration Merging
TypeScript 允许多个模块声明合并到同一接口。Harness 用它扩展 Cordis Context、Events 和 SessionEventMap。它只改变类型,不会自动完成运行时注册。
Discriminated Union
通过共同标签字段区分分支的联合类型,例如 { kind: 'deny' } 与 { kind: 'allow' }。switch 标签后,TypeScript 能缩小具体字段。
Disposer
撤销注册或释放资源的函数。工具、Provider、事件监听器和提示词贡献都应有 disposer,并绑定插件生命周期。
Durability
数据在进程退出或崩溃后仍可恢复的性质。内存 Session append 不自动等于持久化完成,flush 是明确的 durability 观察点。
E
Effect
由 Cordis 生命周期拥有的注册或资源。ctx.effect() 把建立与释放配对,插件卸载或 HMR 时自动撤销。
ESM
JavaScript 的标准模块系统,使用 import/export。仓库全面采用 ESM,源文件相对导入带 .ts,发布产物通过 package exports 运行。
Event Sourcing
用按顺序记录的事实事件作为状态来源,再从事件派生当前状态。Session 是事件溯源模型:模型历史、UI 和恢复从 SessionEvent log 派生。
F
Fiber
Cordis 中承载插件实例及其生命周期状态的运行单元。父插件挂载子插件形成 fiber tree;dispose fiber 会释放它拥有的 effect 和子节点。
Flush
要求持久化层把此前待写事件写到后端并等待收敛的操作。它不是普通 append,也不等同于 Agent idle。
Followup
把用户角色消息放入 Agent 的 next-turn 队列并唤醒它,通常用于开始下一项工作。
Fork
从源 Session 某个边界复制事件前缀,创建具有新 SessionId 和 parent lineage 的子 Session。
G
Goal
同一 Session 内可持久化的目标领域状态。Goal Tool 和 Round Driver 通过公开扩展点读写状态并安排后续轮次。
Guard
在 Tool Registry 中表达不能被后续策略放宽的单调约束。普通 pre-execute waterfall 适合可组合决策,guard 适合最终安全拒绝。
H
HMR(Hot Module Replacement)
运行中卸载旧插件并挂载新插件。正确的 effect/disposer 让旧注册、计时器和资源不会残留。
Headless
没有 Web UI 的一次性 Agent 入口。它接收一项任务、运行 Agent、输出最终结果并退出,也用于真实模型和快照组合。
I
Inbox
Agent 的统一待处理输入结构,包含 next-turn 和 next-step 两个目标。followup、steer 和 inject 是不同预设。
Inject
把上下文消息放入 next-step Inbox,但不单独唤醒 Agent。适合技能内容、文件变化和运行时上下文,在下一次已有请求中进入模型。
inject(Cordis 插件字段)
插件声明的运行时 Service 依赖。与 Agent.inject 同名但含义不同;它让 Cordis 在依赖可用时激活插件。
Invariant
对拥有关系、事件关系或可重建性进行运行时验证的规则。Invariant 应检查权威数据关系,不靠“某个方法存在”之类弱信号。
J
Job
有 owner、状态、输出、取消与清理的后台工作。Job Registry 不要求任务一定是子 Agent,也不理解模型语义。
JSONL
每行一个 JSON record 的逻辑格式。Session Persistence 的 JSONL 后端为每个 Session 保存独立 artifact,物理编码可以压缩或保留原始行。
K
KV Cache
模型 Provider 对相同请求 token 前缀的计算复用。系统提示词、工具 schema 或早期历史改变时,变化点之后的缓存通常需要重算。
L
LLM
大语言模型能力。Harness 的 LLM Service 统一消息、内容块、调用配置、流式 chunk、模型发现与 Adapter 注册。
Loader
读取 Cordis 配置并挂载插件树的组件。它处理 config、disabled、include、依赖激活和 HMR 等组合行为。
M
Message
发送给 LLM 的角色消息,通常是 user、assistant 或 tool result。Message 是 Session surface 的派生结果,不是完整 Session 日志。
MessageId
一条用户或助手消息的品牌标识符,用于 Inbox、来源和协议关联。它不能与 CallId 或 SessionId 混用。
Model-visible
模型请求能够看到的内容。仓库要求模型可见输入可以从 Session log 与 request header 重建。
O
Overlay / Patch
在 Bundle 默认配置之上替换或插入 Cordis 配置行的层。后层按稳定 id 指向目标,常用于部署选择和本地覆盖。
Owner
负责资源生命周期的组件或 handle。Owner 必须决定何时释放、取消和等待 quiescence,不能只把资源放进全局 Map。
P
Persistence
把 SessionEvent 与 Header 写入耐久后端,并提供 locate、append、flush、prepare、load、inspect、list 等能力的 Service Definition 与 Provider。
Plan Mode
记录 Agent 与用户处于计划协作阶段的状态及交互插件。它影响提示词和策略,但不替代独立权限与沙箱限制。
Plugin
由 Cordis 挂载、拥有 Context 和生命周期的功能单元。插件可提供 Service、注册事件、贡献 Tool/Prompt 或挂载子插件。
Profile
一次部署的命名组合,列出要叠加的 Bundle,并拥有本地 patch。Web 与 Headless 可以使用不同 Profile。
Prompt Section
注册到 System Prompt 的有序文本贡献。不同插件可以贡献 identity、persona、工具说明等 section。
Provider
实现一项 Service Definition 或向注册表注册具体后端的插件。例如 bash-local 是 Shell Provider,llm-deepseek 是 LLM Adapter Provider。
Q
Quiescence
资源不再有进行中的自有工作、回调或未完成清理的稳定状态。Dispose 和取消通常需要等待 quiescence,不能只发信号就返回。
R
Replay
用已记录的事件重建 Session 与输出。测试中 Replay Adapter 可以根据录制输入产生确定模型流,不调用真实 API。
Request Header
记录模型调用 config、Adapter 默认来源、系统提示词和 Tool Schema 的 Session snapshot。它不直接成为聊天 Message,却是请求可重建性的一部分。
Resume
从持久存储加载同一 SessionId,并继续其历史与编号。不同于 Fork,Resume 不创建新的 child identity。
Runtime Context
当前运行环境等会变化的模型可见信息。它通过动态 context snapshot 持久进入 Session,避免 Resume 时依赖已丢失的临时变量。
S
Sandbox
在操作系统或执行 Provider 层限制进程能访问的资源。它不等同于 Permission;允许的命令仍可在受限环境中运行。
Schema
运行时验证配置、Tool 参数、Tool 输出或持久数据的规则。TypeScript 类型编译后消失,跨 JSON、模型、文件和进程的值需要 schema 校验。
Scope
贡献的可见范围。每个 Agent 可以拥有 scoped Context,使同名 Prompt、Tool 或模型选择覆盖或补充全局注册。
Service
通过稳定 ctx key 暴露的运行时 API。消费者依赖 Service,而不是具体 Provider 实现。
Session
一个 Agent 交互的 append-only typed event log 及 metadata。它是模型历史、回放、UI 和持久化的共同事实来源。
SessionEvent
Session 日志中的不可变事件,带 type、seq、time 和类型对应的 data。部分 surface 事件还带来源与替换 metadata。
Skill
可发现、按需加载的模型指导包。Skill Registry 聚合 Provider,Skill Tool 让模型查看和加载内容,加载内容进入可重建的 Agent 输入。
Step
一次模型请求,加上该次模型回复要求的 Tool 执行。一个 Turn 可以包含多个 Step。
Steer
把消息放入 next-step Inbox 并唤醒 Agent,适合在当前工作中追加下一步指令。
StreamChunk
LLM Adapter 产生的统一流式输出单元,包括文本增量、推理增量、Tool Call block 和结束信息等。
Surface
从完整 Session 日志中选出的当前模型可见节点序列。Compaction replacement 可以改变当前 surface,而不删除旧事件。
System Prompt
在每个模型 Step 组装的系统指令。它由有序 section、变量、动态 context 和 Tool Schema Provider 共同构造,不是单一硬编码常量。
T
Tool
模型可以调用的 Host 能力描述。ToolDefinition 包含模型 schema、canonical output、执行函数、调度 metadata 和 UI presentation。
Tool Call
模型输出的工具调用请求,包含 CallId、name 和 arguments。系统必须为每个 Call 形成对应 Result,包括解析失败、拒绝和取消。
Tool Result
工具调用的模型可见最终结果。它作为 Session surface 节点进入后续模型请求,并可携带 JSON meta 用于 UI replay。
Turn
从一次工作被接纳开始,到系统不再欠 Tool、next-step 或继续动作结束的生命周期。可以包含零个或多个 Step。
Typert
仓库的类型图生成、加载和运行时注册体系,用于 Host API 与 Client Remote projection。初学主线可以先跳过,学习 Web/API 层时再深入。
W
Waterfall
Cordis 的 around-middleware 事件模式。监听器调用 next 继续下游,也可以返回结果短路;请求、策略和工具执行管线大量使用。
Workflow
运行动态结构化流程或代码的能力。Worker Provider 提供执行环境,Tool Consumer 把它暴露给模型;最终结果仍通过普通 Tool Result 回到父 Step。
快速辨析
Turn 与 Step
Turn 是一项工作生命周期;Step 是一次模型请求及其工具执行。
Session 与 Message History
Session 是完整事件日志;Message History 是从当前 surface 派生的模型协议消息。
Permission 与 Sandbox
Permission 决定是否允许调用;Sandbox 限制被允许的执行能访问什么。
Resume 与 Fork
Resume 继续同一 SessionId;Fork 从历史前缀创建新 SessionId。
Plugin 与 Service
Plugin 是有生命周期的贡献单元;Service 是插件通过 Context 暴露给消费者的稳定 API。
Provider 与 Consumer
Provider 实现能力;Consumer 使用能力。Tool 经常是 Consumer,但不是唯一 Consumer。
Agent.inject 与插件 inject
Agent.inject 向 next-step Inbox 添加模型上下文;插件 inject 声明运行时 Service 依赖。