Skip to Content
文档引擎技能

Runex

Agent 的共享世界模型。

Object: { type, # 是什么(人 / 项目 / 风险 / 矿机…) fields, # 有哪些属性(名称、金额、日期…) links, # 和哪些对象关联 state, # 现在处于哪个阶段(谈判中 / 已签约…) actions # 能做哪些动作(推进 / 取消 / 归档…) } Link: { from, relation, to } # A —[关系]→ B

什么时候用

你说Runex 做什么
”红杉口头确认了,周五签TS,帮我记一下”写入 Commitment,关联 Person 和 Deal
”字节把估值砍一半,这事有风险,先别动”写入 Risk,Deal 状态不变,Thought 快照
”王总这个人拖单的概率有多大?“查询 Person 关联的 Deal / Risk / Commitment
”把这笔交易推进到谈判阶段”执行有验证的生命周期动作
”签约之前,先让我看看会影响什么”preview 干跑,不提交任何变更
”我现在所有 pending 的承诺都有哪些?“按类型 + 状态过滤,跨所有 session
另一个 skill 需要这里的数据读写同一批共享对象,不用重新告诉它背景

为什么需要它

你的邮件 skill 找到了一个承诺。日历 skill 看到了会议。任务 skill 建了截止日期。每个 skill 只记得一个碎片。

邮件 skill ────┐ 日历 skill ────┤ 任务 skill ────┼──> Runex ──> 人、项目、交易、承诺、风险 笔记 skill ────┤ 关联、状态、动作 CRM skill ────┘

Runex 给它们同一套持久的世界模型。


预置对象

加载后立即可用:

# 人与组织 Person: { 名称, 别名?, 邮件? } Organization: { 名称, 类型? } Client: { 名称, 联系方式?, 背景? } # prospect → active ↔ inactive → lost # 工作管理 Project: { 名称, 描述?, 截止日期? } # active ↔ paused → completed / cancelled Task: { 标题, 优先级?, 截止日期? } # open → in_progress → done / cancelled Goal: { 标题, 周期?, 关键结果? } # draft → active → achieved / abandoned Sprint: { 标题, 周期, 聚焦 } # draft → active → completed / cancelled # 内容与知识 Event: { 标题, 时间?, 参与者? } Document: { 标题, 链接?, 摘要? } Note: { 标题, 正文 } Thought: { 标题, 正文, 时间?, 触发源? } # 时间锚定快照,写完即封存 Message: { 摘要, 发送方?, 接收方?, 渠道? } # 商务 Deal: { 名称, 金额?, 客户? } # prospecting → negotiating → won / lost Product: { 名称, 定价?, 版本? } # concept → in-development → launched → retired # 决策追踪 Commitment: { 描述, 承诺方?, 截止日期? } # pending → fulfilled / broken / cancelled Decision: { 描述, 背景?, 依据? } # proposed → accepted → superseded / rejected Risk: { 描述, 发生概率?, 严重程度?, 应对策略? } # open → mitigating → resolved / accepted / dismissed

以上是默认核心(17 种类型)。按需还可加载领域包:packs/knowledge(Atom 原子知识/Topic/ HowTo/MOC)、media(自媒体作品/书签)、session(LLMSession 抽象 + ClaudeSession / CodexSession / OpenCodeSession / WeChatConversation)、 time(Thread + closure-aware 日程:closure≠completion,每日 TODO/Done 派生自 Task)、 wiki-links(写 [[名称]] 进关系字段 → 反应式建成 typed 边,无需链接动词)。 运行时查看已装类型:runex schema(表视图)或 runex schema <Supertag> --json

不够用时,告诉 agent 你需要什么——当场写 schema,加载即生效。


从记忆到本体(ontology)

普通 agent 记忆存文字。知识图谱加了类型和关联。Runex 再给对象加行为——

每个对象知道自己现在处于哪个阶段(比如”谈判中”),能做哪些动作(“推进到签约”),满足什么条件才能做(“合同草稿必须存在”),以及做完之后会触发什么(关联任务自动变更状态)。

这些规则写在 ontology 文件里,一次定义,所有 agent 永远有效——不用每次开新对话都把规则重新解释一遍。


例子:小行星关矿

假设你在用 OpenClaw 经营一家太空矿场。小行星 2029-YX 正在接近,监控系统写入最新距离:

runex node update asteroid-2029-yx --field "距离地球公里" "380000"

距离低于警报阈值,规则链依次触发:

AsteroidThreat 2029-YX monitoring → alerted ← 距离低于警戒线 OreMachine 矿机 A / B / C producing → stopped ×3 ← 警报触发停机 Employee 全体矿工 available → suspended ×12 ← 矿机停工触发挂起

一条数据写入,三层对象的状态自动联动——你不用守着 agent 一步步喂信息:“警报了,去停矿机”,“矿机停了,去中止矿工上班”。

规则写在 ontology 文件里,不是写在某个 agent 的对话里。任何来源触发同一条写入,响应链都会执行。这套规则可以在对话中现写,加载即生效。


一分钟上手

runex init runex ontology manifest

然后直接和 agent 说话:

红杉开完会了。王总口头说周五出TS,但他提到监管层面有点顾虑, 感觉拖的可能性不小,帮我记一下。

Agent 写入三个对象:

Commitment: 王总周五出TS # pending,截止周五 Risk: 监管顾虑导致投资人犹豫 # open,发生概率 medium Thought: 王总倾向拖延 # 时间戳快照,封存

周一回来:

今天到期的承诺有哪些?

不用翻上周的聊天记录——直接查到,有状态,有关联。


执行前,先 preview

对任何对象触发一个状态变更,都可能连带影响关联的其他对象。比如”把这笔交易标记为签约”,可能同时触发相关任务完成、承诺履行、风险归档——具体连带了什么,取决于你的 ontology 里定义了哪些规则。

执行前先模拟跑一遍,看看会动哪些东西:

# 模拟执行,不写入任何数据 runex ontology preview win_deal series-a # 确认无误,再真正提交 runex ontology run win_deal series-a

如果条件不满足,Runex 会说明原因,而不是静默失败。


本地运行

~/.runex/data/data.db

不上云,不需要账号。通过 pip/uv 安装,支持 Claude Code、Codex CLI、OpenCode。


Runex 把分散的 agent 记忆,变成有类型、有关联、有生命周期的共享对象。

Last updated on