Skip to content

Anima URI

面向壳 UI(深链、浮层、剪贴板)以及未来 Markdown / 富文本点击处理的稳定、可解析实体定位符。

协议: anima:(无 //)。示例:

anima:42?component=task_item&present=overlay
  • 之后从文本(Markdown、通知)识别并打开实体,经 openEntityResource
  • 今日即可分享 / 深链 / 跨模块打开
  • PG / 栖息地中的结构化外键仍是数字 id — Anima URI 不是持久化格式

本任务交付:语法 + parse/format + 浮层注册表 + task_item 样例。尚未: 聊天室 Markdown 链接拦截。

anima:{id}[?component={component}][&present=navigate|overlay]
部分含义
identities.id(正整数)
component作为视图切面的组件标签(哪个浮层 / 模块映射)。可选;省略时打开会解析 primary_component
presentnavigate = 切换壳模块并选中;overlay = 打开已注册浮层。默认依组件而定(如 task_itemoverlay
habitat_instance_id可选。Habitat 实例 id(fa_inst_…)。省略 = 本机;异机值仅保留解析,暂不远程打开。见 habitat-identity.md

无短别名(如 task 无效)。取值必须是完整组件名。

不要使用 anima://… 作为规范形式(id 会被误解析为 URL host;anima://42:task_item 是非法 URL)。

同一 id 配不同 component= 可打开不同浮层(实体可携带多个 components[])。注册表键是组件标签,不是壳模块 id。

存储Anima URI
PG / 栖息地 body / RPC实体 id(如番茄钟 task_item_id永不作为外键字符串
壳 UIformatAnimaUri / parseAnimaUri / openEntityResource

Anima URI 是壳 / UI 定位协议,不是数据库外键。用户撰写的正文里碰巧出现的 anima:… 是内容,不是结构化关系。

每个可展示组件可 registerEntityOverlay(component, OverlayComponent)
present=overlay → 解析组件(默认 primary_component)→ 查注册表 → EntityOverlayHost
present=navigate → 经 navigateAppModulePath 将组件映射到壳路径。EntityOverlayHost 在可映射时提供统一「在模块中打开」按钮(关浮层后 present=navigate)。

component壳路径
task_item/tasks?item={id}&present=…
task_list/tasks?list={id}
project/projects?project={id}
calendar_event/calendar?event={id}
note/note?id={id}
diary_entry/diary?id={id}
email_account/email?account={id}
  • anima: 的 OS 协议 / intent 处理
  • 非实体资源(对话等)
  • 在外键字段存储 Anima URI 字符串
  • 聊天室完整 Markdown 点击拦截

另见 entity-model.md

助手 / 用户消息正文用 [[anima:{id}]][[anima:{id}?component=…]] 引用实体。聊天室 Markdown 将其转为可点击 chip(首屏 #id,后台按 entity.get 异步补最多 10 字摘要:优先 title,否则 content),用户与助手气泡均渲染。点击调用 openEntityResource。URI 省略 component 时经 entity.get 解析 primary_component(任务 → task_item 浮层,语义记忆 → semantic_memory 浮层等;窄布局为底部 Sheet)。输入框键入 [[ 弹出实体选择器(user/agent 合并、不限种类),选中插入 [[anima:{id}]]

系统提示段 anima-uri-protocol:标记 = 任意实体的 entities.id(不限记忆)。解析:toolset_load(["entity"])entity_get({id}) → 按 primary_component(或 ?component=)再调领域工具。语义记忆引用义务仍由 memory-citation 约束(仅当回复使用了语义记忆时末尾追加)。

壳侧点击 chip:openEntityResource;有专用浮层(task_item / semantic_memory / calendar_event)用专用面板,否则 通用实体叠加层GenericEntityOverlay:标题 / 摘要 / 正文 / 类型与组件等基础字段)。primary_component 缺失时仍打开通用浮层。