Orisumi

Observer

对一份观测负责的实体

Observer 是对一份 Observation 负责的业务实体,也就是 observerVersionId 引用的实体。程序实例和人都可以是 Observer:前台状态 Observer 对它采集的前台时段负责,用户对自己写下的“在开会”负责。

Observer 是一种角色,就像“作者”。同一个实体可以在一份观测中是 Observer,在另一份中被观测:用户否定一条推断时是 Observer,被记下睡眠时是被观测的对象。

一份观测有没有依据已保存的数据,由它的输入集表达,与 Observer 是人还是程序无关。同一个人可以凭亲身经历陈述,也可以读完日志再推理。

责任

OBSERVER-1 被引用者负责

定义

被 observerVersionId 引用的业务实体是这份观测的 Observer,对其中的陈述负责。一个实体是不是 Observer,只取决于它在某份 Observation 中的位置。

划分

OBSERVER-2 按陈述划分

执行方:写入方

Observer 按负责的陈述划分。例如前台状态、输入事件和设备状态由三个 Observer 负责,三者可以运行在同一个进程中。

OBSERVER-3 多种内容

执行方:写入方

一个 Observer 可以形成多种观测内容,多个 Observer 也可以使用同一种业务类型。不同平台的实现,只要字段、约束和事实含义相同,就必须共用同一种业务类型。

程序实例

OBSERVER-4 重启沿用身份

执行方:写入方

程序实例重启或升级后沿用原来的 EntityId,SDK 必须持久保存它。实例的信息变化时,形成新版本。推断 Observer 更换模型或提示词也属于升级;模型、提示词和参数需要保存时,由业务内容表达。

OBSERVER-5 一个实例一个身份

执行方:写入方

每个程序实例有自己的 EntityId。同一个进程可以运行多个程序实例;同时运行的不同推断方法是不同的程序实例。

陈述

OBSERVER-6 谁形成谁负责

执行方:写入方

形成观测的 Observer 对陈述负责:

情况负责的 Observer
内部模块只读取或检测证据使用该模块的 Observer
内部模块独立形成观测该模块自己的 Observer
程序只传输或组合已有观测原 Observation 的 Observer
程序依据已有观测形成新的观测形成新观测的 Observer
另一个 Observer 重新解释证据重新解释证据的 Observer
用户确认、否定或陈述用户本人

不同 Observer 的陈述冲突时,以谁为准由业务规则决定。

OBSERVER-7 确认与否定

执行方:写入方

确认或否定的对象写在观测内容中。例如用户否定模型的推断:用户这份观测的内容引用被否定的那一版推断,并写出自己的结论;用户参考过的日志列在输入集中。用户补充亲身信息时,同样形成新的 Observation。

OBSERVER-8 失败作为诊断

执行方:写入方

读取、解析或匹配失败不形成观测,作为采集诊断处理。

贡献者

页面历史