ANIMA V0.1.0 — 首个参考实现落地

过去两周,ANIMA 这个独立仓一直是个占位骨架:一个 7 行的 Python 文件,__version__ = "0.0.0",模块边界画好了但真正可运行的代码几乎没有。同一时间,在一个 BCI 医疗护理研究原型(human-brain-interface-demo)里,L0–L5 六层 + 五因素 + LLM-as-Parser 的一套参考实现长了出来——11 个文件、1037 行代码、pytest 全绿、pip 可装。

2026-04-21 把这两件事合了:参考实现从原型仓搬进 ANIMA 主仓,剥离 BCI 专属术语后通用化,版本从 0.0.0 直接跳到 v0.1.0

六层 L0–L5 全部有代码

   上游信号(BCI / 语音 / 视觉 / 文本)
            ↓
   ┌─────────────────────────────┐
   │ L0 Signal                   │  signal → intent token + confidence + drift
   ├─────────────────────────────┤
   │ L1 Parser (LLM)             │  instruction → TaskSpec(强制 tool-calling)
   ├─────────────────────────────┤
   │ Test-and-Check(六门守卫)    │  JSON / intent / skill / params / safety / preconds
   ├─────────────────────────────┤
   │ L2 Planner                  │  TaskSpec → py_trees 行为树
   ├─────────────────────────────┤
   │ L3 Skill                    │  Function-Calling + Affordance Scoring
   ├─────────────────────────────┤
   │ L4 Adapter                  │  设备无关执行(机械臂 / 底盘 / ...)
   ├─────────────────────────────┤
   │ L5 Assessment               │  ITA · MQA · SQA · GOA · PEA(Pre / Runtime / Post)
   └─────────────────────────────┘

每一层都有实际源码文件(src/anima/l0_signal.pysrc/anima/l5_assessment.py),不再是 docstring 占位。

五因素公式落地

v0.0.0 只定义了五因素的名字;v0.1.0 给了它们具体公式:

  • ITA 意图对齐度,吸收上游 drift:MQA_ita = 1 − drift_score
  • MQA 动作质量:轨迹平滑度 / 接触力包络 / 抓取余量
  • SQA 技能胜任度:Beta 先验从历史 pea_log.jsonl 滑窗更新
  • GOA 目标达成:乘法组合 P(success) = ∏ Pᵢ不做平均
  • PEA 偏好-经验检索:三因素加权 recency × 0.5 + relevance × 3.0 + importance × 2.0

这些不是占位符——是从研究原型里跑通过的实现。

LLM-as-Parser,LLM-agnostic

L1 通过 LLMToolCaller 协议接 LLM,不绑任何厂商。当前参考实现同时支持 DeepSeek 和 OpenAI(100% OpenAI SDK 兼容)。核心约束是强制 tool-calling——LLM 只能输出结构化 TaskSpec JSON,不能自由生成低层命令。

剥离 BCI 独有术语

原始参考实现是从一个 BCI 研究原型里长出来的,所以里面带不少 BCI 独有语义。这次合进主仓时把这些通用化:

  • drift_score 不再专指神经信号漂移,docstring 改成"upstream signal uncertainty, e.g. BCI drift or ASR confidence"
  • IntentToken 的 35 词词表保留,但标注"example vocabulary; extend per application"
  • README / docstring 里的 "BCI" / "neural" / "patient" / "clinician" 字样换成通用语言
  • EmbodiedAdapter 协议本来就通用,这次在 README 里说清楚能接 manipulator / mobile base / wheelchair / humanoid

关键词从 bci / assistive-robotics 换成 cognitive-architecture / embodied-ai / behavior-tree / llm-tool-use / intent-to-action / self-assessment

开源脚手架就位

之前只有 LICENSE 和 README。v0.1.0 带来了:

  • pyproject.tomlpip install -e . 可装
  • tests/test_pipeline.py — 6/6 绿
  • CONTRIBUTING.md / SECURITY.md / CODE_OF_CONDUCT.md / CHANGELOG.md
  • PR 模板

安装方式:

pip install git+https://github.com/jeffliulab/anima.git@main

下游应用(soma-care)就是这样依赖的,不再内嵌副本。

两条应用分支同步就位

同一天把 SOMA Care 作为独立仓(jeffliulab/soma-care)开出来,从 human-brain-interface-demo/demo/ 搬过来作为 v0.4 起点。它的 core/pyproject.toml 已经改成 anima @ git+https://github.com/jeffliulab/anima.git@main,测试 17/17 绿,import 链从 anima 框架一路到 soma-care 的 FastAPI main.py 通。

加上原来的 SOMA Arm(棋类操作),ANIMA 现在有两条活跃的应用分支:

分支 做什么
SOMA Care jeffliulab/soma-care 仿真病房护理意图-行动闭环
SOMA Arm jeffliulab/soma-arm 桌面棋盘操作(真机)

领域特定的 skill(抓杯子 / 走棋 / 翻身)都留在各自应用仓的 L4 adapter 层,不进框架。

Status:Alpha

v0.1.0 是 Alpha 发布。API 在 v1.0 正式发布前还可能变动——破坏性改动会在 commit message 前缀带 !,并在 CHANGELOG 里明确列出。

下一个 anima 路线图节点是扩展 skill 库 + 稳定 v0.2 API(配合 soma-care v0.4 的接触密集技能),再往后是 v1.0 稳定发布(API 冻结、文档完整、PyPI)。

署名

ANIMA Framework © Jeff Liu Lab。Apache-2.0 许可证。