Reality · 事件改变状态,文章解释事件
成立、发布、融资、量产、退出等是历史事件;文章是叙事入口。展会是一段观察窗口,其中的产品亮相和厂商声明,需要与后来发生的事实分别记录。
Model · 三个入口不可混用
| 入口 | 数据语义 | 身份与状态 |
|---|---|---|
/api/timeline | 独立产业 Event Store,公开读取 verified 的 industry_events;文章可选关联 | 既有事件 ID / eventKey;面向站点时间线 |
/api/world/timeline | approved 的 canonical world_events,包含实体、发生区间与 stateChanges | UUID;与产业 Event Store 尚无一对一桥接 |
/api/world/events | 展会系列与届次观察窗口,不是通用 world_events 列表 | 届次 UUID / canonicalId;schemaVersion: event-observation-window/1 |
World State 由批准的 canonical 事件产生:当前接口返回处于有效时间范围的每实体、每维度最新状态;history 返回前值、后值、来源事件和证据。stateStatus: unknown/conflict 与空的 states 不能混为一谈。
Interface · 查询事件、状态和展会
curl -fsS -G https://www.aiman.world/api/timeline \
--data-urlencode 'company=宇树' --data-urlencode 'limit=10'
curl -fsS 'https://www.aiman.world/api/world/timeline?limit=10'
curl -fsS 'https://www.aiman.world/api/world/events?limit=10'
先从机器人详情或公司详情获得规范身份,再请求:
GET /api/world/state?subjectType=robot&canonicalId={robotCanonicalId}
GET /api/world/state/history?subjectType=robot&canonicalId={robotCanonicalId}
公司用 subjectType=company,canonicalId 为规范公司名。两项必须同时提供;可选 dimension 与 limit(默认 100、上限 300)。示例占位符必须替换并编码。
| 展会任务 | REST | MCP |
|---|---|---|
| 读取届次窗口 | /api/world/events/{key} | event.get:editionId |
| 比较 2–10 届 | /api/world/events/compare?editionIds=…(逗号分隔) | event.compare:editionIds 数组 |
| 读取关联实体 | /api/world/events/entities | event.entities |
| 查首次亮相标记 | /api/world/events/first-appearances | event.first_appearances |
| 读取现场声明 | /api/world/events/claims | event.claims |
| 查后续兑现与变化 | /api/world/events/claim-resolution | event.claim_resolution |
MCP 各工具参数以 tools/list 的 schema 为准;状态工具为 get_current_state 与 get_state_transition_history。并非每个 REST 端点都有 MCP 对应工具。
/api/timeline 可按 type/class/event/company/robotId/from/to/limit 查询,日期为 YYYY-MM-DD。当前错误日期可能被当作未提供;客户端应先校验日期。World Timeline 仅支持 limit,不要给它传产业时间线的过滤器。详见 REST 校验边界。
Agent behavior · 事件先后不自动等于因果
按发生时间解释事件,按有效期解释状态。occurredFrom/occurredTo 为空时不能用列表位置还原日期:当前 World Timeline 的排序可能回退到录入时间,但返回的未知时间仍保持空值。
firstPublicAppearance 是已记录的标记,不保证覆盖世界上所有历史记录;展会上提出的量产或价格声明不等于已经兑现,应继续查询 claim resolution。不要凭相同标题把三个入口中的 ID 相互替换。
实现依据:emibot-rs/src/routes/timeline.rs、emibot-rs/src/routes/world_read_model.rs、emibot-rs/src/routes/world_state.rs、emibot-rs/src/routes/exhibitions.rs、docs/adr/0007-world-state-model-phase1.md。