B.1 完整事件表

事件流是 NDJSON,一行一个。data 是载荷,meta 是信封(id、at,有时有 deliveryIds)。

会话与 turn

事件 何时发 关键载荷
session.started 会话建立 trace?、predecessor?
turn.started 新 turn turnId、trace?
message.received 输入到达 扁平文本 + 结构化 parts
turn.waiting turn 停泊 turnId、on: "input" \| "tasks"
turn.completed turn 完成 —
turn.failed turn 失败 { code, message, details?, terminal? }
turn.cancelled turn 被取消 后面必跟 session.waiting
session.waiting 会话空闲 usage
session.failed 会话失败 —
session.completed 会话终结 —

模型步骤

事件 何时发 关键载荷
step.started 模型调用开始 modelId、stepIndex
step.completed 模型调用结束 finishReason、usage
step.failed 模型调用失败 { code, message, details? }
reasoning.appended 推理增量 reasoningDelta
reasoning.completed 推理定稿 全文
message.appended 文本增量 messageDelta
message.completed 文本定稿 message、finishReason、sequence
result.completed 结构化结果 result(请求了 outputSchema 时)

动作与工具

事件 何时发 关键载荷
actions.requested 模型请求动作 actions[],执行前就流出
action.input.appended 工具输入流 inputTextDelta、callId
action.partial 生成器工具中间快照 完整快照,后写覆盖前写
action.result 工具返回 result(含 toolName、isError、output)
input.requested 停下来等人 requests[](kind、requestId、options)
input.resolved 人已应答并被接受 resolutions[](outcome:answered / approved / cancelled / denied / ignored / invalid)
approval.candidate 有人提交了审批,服务端开始校验 candidateId、requestId、outcome(pending / rejected / failed / timed-out / stale)、responderPrincipalId、reason?
approval.settled 审批最终落定 requestId、outcome(approved / cancelled)、responderPrincipalId
authorization.required 连接需要 OAuth authorization(url / userCode / instructions)
authorization.completed 授权结束 outcome:authorized / declined / failed / timed-out

任务与子代理

事件 何时发 关键载荷
task.started 调用开始一个任务 taskId、callId、turnId、name、kind
task.settled 任务结束 taskId、status、output 或 error.message
agent.started 子会话打开 sessionId、streamPath、taskId?、callId、turnId

上下文

事件 何时发 关键载荷
compaction.requested 压缩开始 modelId、usageInputTokens
compaction.completed 检查点写入 同上
context.cleared 清空历史完成 —

B.2 事件顺序:一次带审批的调用

session.started
turn.started              turn_0
message.received
step.started
actions.requested          restart_service
input.requested            tool-approval, req_A
turn.waiting               on: "input"
                          ← 人点批准
approval.candidate         req_A, outcome: pending      ← 只有配了 response 策略才有
approval.settled           req_A, outcome: approved
input.resolved             req_A → approve
step.started               (同一个 turn_0,续跑)
action.result              restart_service 完成
step.completed
message.completed          finishReason: "stop"
turn.completed
session.waiting

没有 response 策略时,审批直接落定,不会出现 approval.candidate——只看到 input.resolved。

B.3 HTTP 路由

方法 路径 说明
GET /eve/v1/health 公开,{ ok, status, workflowId }
GET /eve/v1/info 编译后 agent 快照(agent-info v6)
POST /eve/v1/session 建会话,可带 message / operationId
POST /eve/v1/session/:id 追问或 inputResponses
POST /eve/v1/session/:id/cancel 取消当前 turn
POST /eve/v1/session/:id/clear 清历史
POST /eve/v1/session/:id/compact 压缩
POST /eve/v1/session/:id/reset 终止
GET /eve/v1/session/:id/stream NDJSON,startIndex / follow / includeTailIndex
POST /eve/v1/dev/schedules/:id 仅 dev,手动触发定时任务
POST /eve/v1/slack 等 平台通道的 webhook

B.4 CLI

命令 作用
eve init [target] 建项目 / 给已有项目加 agent
eve dev 本地服务 + 终端 UI
eve build / eve start 构建 / 启动生产服务
eve info 检查本地应用发现结果
eve set model [id] [--reasoning x] 改模型
eve eval [pattern] 跑评测
eve add [item] 装通道 / 工具 / 技能 / 连接
eve registry search <q> 搜注册表
eve link / eve deploy 关联 / 部署 Vercel
eve remote connect --url <u> 连远端 agent 的 TUI
eve remote invoke --url <u> [prompt] 一次性调用远端
eve remote info --url <u> 检查远端
eve logs list / eve logs show [id] 本地日志
eve traces list / eve traces show [id] 本地 trace
eve extension init / build 扩展包
eve acp [url] 通过 ACP over stdio 暴露 agent
eve telemetry disable 关 CLI 遥测

eve 不带子命令时:不在项目里就跑 init,在项目里就跑 dev。

常用 eve add 目标

eve add channel/web
eve add channel/slack
eve add tool/glob
eve add tool/grep
eve add tool/ask_question
eve add tool/no_reply
eve add tool/sleep
eve add memory/supermemory

B.5 环境变量

常用几个列在这里,完整规则(哪些命令读 .env*、编译期求值、沙箱边界、泄漏面)见附录 C。

变量 用途
AI_GATEWAY_API_KEY AI Gateway 模型
ANTHROPIC_API_KEY / OPENAI_API_KEY 直连 provider
EVE_TELEMETRY_DISABLED=1 单次命令关遥测
AI_AGENT=eve 沙箱命令里自动注入,标识 agent 环境

B.6 模型配置速查

// Gateway 字符串
model: "anthropic/claude-sonnet-5"

// 直连(内置 helper,读对应 API key)
model: anthropic()            // claude-sonnet-5
model: openai()               // gpt-6-luna-fast
model: chatgpt()              // 本地订阅,不能部署

// 本地 OpenAI 兼容服务
const ollama = createOpenAICompatible({ name: "ollama", baseURL: "http://localhost:11434/v1", includeUsage: true });
model: ollama("gpt-oss:20b"),
modelContextWindowTokens: 64_000,

reasoning 可选值:"provider-default"、"none"、"minimal"、"low"、"medium"、"high"、"xhigh"。

B.7 限制字段速查

字段 默认
maxInputTokensPerSession 根会话 40,000,000
maxOutputTokensPerSession 不设
maxTokenCostUsdPerSession 不设
sessionTimeoutMs 30 天
compaction.thresholdPercent 0.9
experimental.workflow.modelCallsPerStep 1
experimental.workflow.retention 由追踪策略推导

任何限制设成 false 表示不设限。


返回:教程目录 · 附录 A:术语与速查