会议导入
将一份转录内容转化为带有来源的会议页面、更新的实体档案以及结构化的声明,然后进行验证。仅在需要时读取对应的参考文档:
- setup:始终首先读取(状态、本体、搜索)
- source acquisition:从API获取数据,包括Granola
- sources:保留原始文件;引用格式
- speakers:可能存在的拆分、重复或不明确的发言人
- identity:解析个人、公司或项目身份
- writing:在撰写任何页面正文之前阅读
- meeting page:编写会议页面
- profiles:创建或更新档案
- assertions:声明、参会关系、重复运行
- publish:批量或单页写入
- recovery:任何不确定、被拒绝或冲突的写入
- verify:验证与报告
契约
- 一次真实会议对应一个页面。保留完整的转录内容;录音设备提供的摘要属于声明,而非事实。
- 发言人的身份必须基于证据进行解析,并附带置信度,绝不能猜测。使用所有真实信号;仅当完全没有证据时,才将发言人标记为未解析。
- 每个参会者(发言、被提及或以其他方式参与)都应获得一个带有时间线条目和参会关系的档案。仅在邀请名单上出现的人不获得这些信息。
- 会议中提到的公司、项目或概念,如果涉及实质性内容,都应获得一个页面(查找或创建)、一个时间线条目以及双向链接。仅提及的不处理。
- 页面内容应像优秀的人类笔记一样:先列出名字,减少限制性说明,不包含过程性评论。
- 决策、承诺和事件将被记录为声明。未经核实的声明不会传播到其他页面。
- 在验证通过之前,切勿标记会议已完全导入。
步骤
1. 获取与标准化
获取完整的转录内容。空输入、仅摘要或进行中的输入将导致此步骤失败:报告该情况。如果用户只想保存笔记,请使用knowledge-capture技能,并说明会议导入未完成。
在工作上下文中标准化为以下字段:source、source_id、title、date、time、duration、attendees(来源原始声明)、带speaker、speaker_raw和text的有序片段、source_summary、URL。未知值设为null。录音设备的特定处理在此结束;此后所有录音设备执行相同的步骤。
保留原始导出文件和转录内容(sources)。标准化文本是带有标签的衍生内容。分别报告获取、保留和发布情况,附带真实数量(例如“保留了9/16份原始文件”)。
一次读取约150行的标准化转录片段。每读取一个片段后,向工作摘要文件追加:行号范围、发言者、话题、候选决策、承诺和事实(附带精确行号引用)、引语候选以及新的专有名词。后续步骤将根据此摘要进行起草。仅当需要检查措辞或精确引用时,才返回到转录文件中查找特定行范围,绝不进行全文重读。
完成条件: 完整转录已保留;证据收据已拿到;摘要覆盖了所有行。
2. 拆分、去重、解析发言人
检查是否存在多会议录音、此会议是否已有现有页面,以及发言人映射表(speakers)。
完成条件: 每个真实会议都确定了其片段范围;发现了重复项;每个发言人标签都已映射或明确标记为未解析,并附有依据。
3. 门控每个声明
根据转录内容和知识库中关于同一实体的现有信息,检查每个提议的声明。
- 角色或关系:必须有明确的段落支持,而非暗示。
- 所有权:必须有明确的所有权表述;提及名称不等于拥有所有权。
- 新专有名词:在知识库中搜索(如果允许,则在网络上搜索)标准拼写;否则将其写为“名称(未验证拼写)”,并为其附加任何页面或链接。
- 重大生活或交易事件:必须有逐字的支持,并与现有时间线核对。
仅有转录支持还不够。还需检查:
- 矛盾性: 是否与知识库已确立的内容冲突?默认情况下,已确立的内容优先。不要将冲突的声明写入档案;将其保留在会议页面上,同时引用冲突双方,并在报告中列出,供用户自行解决。仅当有明确、逐字的支持时,才能覆盖已有内容,并且仍需报告此次更改。
- 合理性: 在已知信息背景下,此事是否可能发生?(两个人不可能同时启动同一个项目;去年成立的公司不可能五年前被收购。)不可能的情况通常意味着转录错误。
- 意外性: 如果用户会说“等等,什么?”,请应用所有检查。将意外内容作为一个问题提出来;不要试图解释掉它。
推理出的内容和不确认的身份必须保留在会议页面上,并附带相关标签,绝不作为事实录入档案、时间线、元数据或关系中。
完成条件: 每个声明都被标记为“发布”、“标记为不确定”或“保留”。
4. 发布
顺序:会议页面 → 实体页面 → 声明和关系 → 链接编辑。批量处理相关记录(publish)。
- 会议页面遵循meeting page指引。
- 对于每个参会者和有实质内容的实体,遵循
knowledge-entities技能的SKILL.md中的步骤:它负责解析实体、决定是否为其创建页面,并撰写档案和时间线条目。该技能中与本技能同名的参考文档是相同的副本;请使用您已读取过的文档,无需重新读取。它唯一的额外参考是“enrichment”(请阅读其“导入期间”部分)。 - 声明遵循assertions指引:决策、承诺、事实以及一个代表会议本身的
source_event: true事件,并附带所有相关的entities。其他事件保留它们自己的日期。 - 为每个参会者创建一条有证据支持的
attended关系。在已交付的本体论中,它由参会者指向会议;请在定义中确认这一点。设置source_page。 - 被提及且有对应页面的人也获得链接。不要为未知的发言者创建页面。
- 对于涉及法律或个人隐私的内容,保持会议页面的事实性,并限制信息只传播到档案中;如果范围不明确,请询问用户。
完成条件: 每个计划中的记录都在您的工作日志中有一个已发布的收据。
5. 验证(硬性门控,每次会议都执行)
首先运行verify。然后检查:
- 内容实质: 必需的章节有内容或有基于来源的正当理由。
- 链接:
knowledge_verify的expectedLinks参数需包含会议↔每个实体的链接,以及声明的entities/dependencies、承诺的owner以及关系的from/to/label/source_page。每个链接的档案都必须有本次会议对应的时间线条目。 - 状态: 任何更新的档案中都不能有以日期或会议命名的“State”主题。
- 风格: 在发布前,对照writing检查您工作文件中的草稿:先列名字、不堆砌限制性说明、不写给自己看的备注、没有填充行。不要为了检查风格而重新读取已发布的页面;在修改之后,只需重读您更改的部分。
- 发言人: 不应有任何原始标签被当作已知人物;运行speakers中的“伪造参会者检查”。
- 引用: 使用
knowledge_evidence_read读取每个引用片段的对应行。仅允许填充词(“嗯”、“那个”)存在差异。修复失败的引用:要么恢复原话,要么选择更清晰的片段;切勿在引用中保留释义。 - 时序: 对比叙述顺序(之前/期间/之后、地点、人物)与时间戳,独立于标题顺序。使用
knowledge_chronicle_day(会议日期和时区)和knowledge_timeline获取相关实体的时间线。时间倒置或不可能的地点/时间属于矛盾;不要自己编造过渡。修复并重新检查,或者记录为明确的用户豁免(标记为WAIVED,而非已解决)。豁免仅覆盖时序问题。若时间线中缺少某位参会者,通常意味着缺少一条时间线条目:需要调查,不应阻止流程。真正的时间顺序模糊情况应在报告中标记,而非阻止发布。
完成条件: 所有检查均通过,或者失败的检查已被修复并重新验证。
报告
每次会议一行(拆分录音的每个页面一行):页面、保留的来源、丰富的参会者信息、更新或重用的实体、待办事项、声明和关系、验证结果、时序PASS或WAIVED(附带未解决的矛盾)。列出与现有知识库的矛盾、被保留的声明、未解析的身份以及剩余的工作,均放在报告中,而非页面上;由用户解决。如果某检查无法通过,则报告该会议未被导入,并指出是哪个检查失败。部分报告是诚实的进展记录,不代表完成。