N.E.K.O × VRChat 架构 Wiki:69 张图逐图解释版

文章发布时间:

最后更新时间:

文章总字数:
13.5k

预计阅读时间:
54 分钟

页面浏览: 加载中...

同一套内容还有一篇可以从头读到尾的架构解析,主入口在 /neko-vrchat-wiki/。本页是逐图图鉴版:69 张图按原 Wiki 的七个章节排列,每张图都配「为什么出现在这里 · 小白版 · 可展开专业版」。

大家好呀~ 这里是星璃(Seira)

逸世在折腾的 N.E.K.O × VRChat AI 陪玩 bot,整套架构一共 33 张架构图 + 36 张终端说明卡。这一页把每张图都配上解释了——先说它为什么会出现在这个位置,再用大白话讲一遍,想看协议 / 端口 / 频率 / 优先级就点开每张图下面的「展开专业版」。

分析快照:2026-09-09 · 端口与频率以该日期公开源码为准。

Core

两级进程结构与职责边界。

01 · 整个系统总览

整个系统总览
整个系统总览

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

整篇文章的地图。先建立“脑—身体控制—执行—感知—反馈”的闭环,再下钻每条链。

小白版

把系统想成一个有脑、有小脑、有眼睛、有运动神经的人:N.E.K.O 决定想做什么,BodyScheduler 负责把动作跑顺,AnyaDance/SteamVR 把动作送进 VRChat,视觉和 OSC 再把结果告诉系统。

举个例子: 你说“去右边的人旁边打招呼”:LLM 选目标和意图,Navigator 走过去,Scheduler 120Hz 驱动身体,OSC/视觉判断是否真的接近,最后执行挥手。

优点: 分层后,LLM 慢一点不会让身体线程停;不同模块可以独立降级和调试。

缺点 / 代价: 系统组件多,状态同步复杂;必须区分“命令已受理”“驱动收到”“VRChat 真动了”。

展开专业版:模块、参数与技术取舍

这是 multi-rate hierarchical embodied-agent stack。高层语义工具驱动 Behavior/Navigator,低层 Scheduler 以 120Hz 生成 actuator frame;VMC 60Hz 提供 idle pose;screen perception 与 VRChat OSC 构成 observation side。

具体参数 / 协议: VMC 39539/60Hz;AnyaDance 39570/120Hz;VRChat OSC 9000→VRC、9001←VRC;Navigator 约10Hz;driver telemetry 39571。

技术层面的优劣: 收益是 separation of concerns、bounded latency、可验证反馈;代价是多进程、多协议和跨层一致性问题。


02 · N.E.K.O 本体职责

N.E.K.O 本体职责
N.E.K.O 本体职责

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释谁是“大脑”,避免把 VRChat 插件误解成一个独立聊天机器人。

小白版

N.E.K.O 本体负责人格、记忆、对话、语音和 Agent 决策;VRChat 插件只是给这个 AI 增加“能活动的身体”。

举个例子: “我喜欢这个世界”属于 N.E.K.O 的对话与记忆;“抬右手”“走向目标”属于插件暴露的工具。

优点: 复用已有角色人格与记忆,不需要为 VRChat 再造一套 AI。

缺点 / 代价: 插件能力受宿主工具契约和生命周期约束。

展开专业版:模块、参数与技术取舍

主应用提供 model/memory/avatar/plugin runtime,插件暴露 model-callable semantic tools。LLM 不应直接拿 driver socket 权限,而应通过 schema-validated tool surface。

具体参数 / 协议: N.E.K.O 主服务默认 127.0.0.1:48911。

技术层面的优劣: 高层接口稳定、实现可替换;但需要维护 host/plugin version compatibility。


03 · 插件进程隔离

插件进程隔离
插件进程隔离

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释为什么抓屏、视觉、120Hz UDP 不直接塞进 N.E.K.O 主进程。

小白版

像把高负载的“身体控制车间”放到独立房间:就算视觉模型卡住,也不应该把聊天界面一起拖死。

举个例子: OpenVINO 初始化失败时,后台可以报错/重启,而主 N.E.K.O 仍然能聊天。

优点: 故障隔离、依赖隔离、实时线程更稳定。

缺点 / 代价: 多一层 IPC 和生命周期管理。

展开专业版:模块、参数与技术取舍

结构近似 N.E.K.O plugin/hosted layer → local backend process。backend 承担 Scheduler、VMC relay、OSC、Vision、WorldState、Navigator。

具体参数 / 协议: IPC 应限制 loopback,并使用随机 token/明确 error mapping;具体端口由 backend 启动配置。

技术层面的优劣: process isolation 提高鲁棒性,但增加状态同步、restart/reconnect race 与诊断成本。


T01 · 两级进程隔离

两级进程隔离
两级进程隔离

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

用缩进快速展示两级隔离。

小白版

小白看成“大程序里有插件,插件再叫一个身体后台”;专业上是宿主插件边界和高频 backend 边界分离,利于依赖/故障隔离,但增加 IPC 生命周期。

展开专业版

小白看成“大程序里有插件,插件再叫一个身体后台”;专业上是宿主插件边界和高频 backend 边界分离,利于依赖/故障隔离,但增加 IPC 生命周期。

原始终端内容:

1
2
3
4
5
6
7
8
9
10
N.E.K.O
└── plugin process
└── VRC Body hosted plugin
└── local backend process
├── BodyScheduler
├── VMC relay
├── VRChat OSC
├── Vision
├── World State
└── Navigator


VMC / Body

身体动作从 LLM 语义到 120 Hz 驱动链路。

04 · VMC 输出链路

VMC 输出链路
VMC 输出链路

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释 N.E.K.O 内部 VRM 动作如何跨出浏览器,成为插件可消费的数据。

小白版

VMC 像“动作广播标准”:桌宠在 N.E.K.O 里做完动画后,把当前骨骼和表情广播给外部插件。

举个例子: VRM 眨眼、转头、挥手后,最终姿态被采样,而不是让插件自己猜桌宠正在做什么。

优点: 复用 N.E.K.O 已有自然动作;与具体接收软件解耦。

缺点 / 代价: 发送的是姿态数据,不是 VRChat 的实体身体,后面仍要转换。

展开专业版:模块、参数与技术取舍

PR #2463 将 VRM 最终 humanoid bones / expressions / T-Pose 经独立 WebSocket 数据面送到 VmcSender,再由 OSC/UDP 发出;控制面走 /api/vmc。采样点位于 animation/gaze/spring/expression 更新之后。

具体参数 / 协议: 频率可配置 1–120Hz;当前插件宿主输出默认 60Hz,目标 127.0.0.1:39539。

技术层面的优劣: 标准协议提高互操作性;WebSocket+UDP 两段链增加序列化、队列和终止状态管理。


05 · VMC 实际时序

VMC 实际时序
VMC 实际时序

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

把上一张静态图变成“启动—发送—释放”的真实时序。

小白版

先告诉 N.E.K.O 发到哪里,再拿到“发布资格”,随后每帧发送;退出时还要清空表情和状态,不能直接拔线。

举个例子: 关闭 VMC 时会发终止状态,避免接收端把最后一个笑脸一直保持下去。

优点: 生命周期清晰,异常恢复更容易。

缺点 / 代价: 需要 publisher lease、释放确认和重连逻辑。

展开专业版:模块、参数与技术取舍

REST 配置 sender;WS authenticate/claim lease;帧进入 bounded queue;sender 按频率 UDP 输出;release 后发送 terminal state、expression reset 和 /VMC/Ext/OK 0。

具体参数 / 协议: 单 publisher;CSRF/Origin;异常帧不应杀死 worker。

技术层面的优劣: 把控制面和高频数据面分开降低聊天链耦合,但状态机更复杂。


06 · 插件主动配置 N.E.K.O VMC

插件主动配置 N.E.K.O VMC
插件主动配置 N.E.K.O VMC

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释用户为什么不需要手工在多个软件里配置 VMC。

小白版

插件启动会先检查“动作广播开没开、端口对不对”,必要时自己打开,并让角色摆一次 T-Pose 做基准。

举个例子: 如果 N.E.K.O 正在把 VMC 发到别的端口,插件可通过 host API 改回自己的接收端口。

优点: 降低部署门槛,减少端口配错。

缺点 / 代价: 插件会管理宿主状态,必须谨慎处理用户原有配置。

展开专业版:模块、参数与技术取舍

HostVmcController 使用 /api/vmc/status、enable、disable、t_pose;vmc_idle.manage_host_output=true 时主动确保目标为自身 receiver。

具体参数 / 协议: host_api_url=http://127.0.0.1:48911;listen 127.0.0.1:39539;host_send_rate_hz=60;stale_after_ms=500。

技术层面的优劣: 自动化 setup 方便,但要避免覆盖其他 VMC consumer;端口冲突时需路由/改端口。


07 · Humanoid 骨骼到六点追踪

Humanoid 骨骼到六点追踪
Humanoid 骨骼到六点追踪

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释为什么“完整骨骼”最终只剩头、手、腰、脚六个点。

小白版

VRChat 不需要知道 N.E.K.O 模型每根骨头怎么转;插件只抽取六个关键追踪点,让 VRChat 自己用 IK 补出胳膊、脊柱等中间关节。

举个例子: 原 VRM 有肩→上臂→前臂→手腕;送进 VRChat 时主要变成“右控制器在哪里、朝哪”。

优点: 两个 Avatar 骨架可不同;复用 VRChat FBT/IK。

缺点 / 代价: 六点无法完整保留原骨架所有细节,会有 IK 重建差异。

展开专业版:模块、参数与技术取舍

VMC humanoid transform 经 FK 计算关键 end-effectors,映射到 hmd/left_controller/right_controller/hip/left_foot/right_foot。

具体参数 / 协议: AnyaDance recognized device IDs 正是这六类。

技术层面的优劣: 降低 rig coupling,但形成 underconstrained IK,结果依赖 avatar proportions/calibration。


08 · 六点姿态进入 VRChat

六点姿态进入 VRChat
六点姿态进入 VRChat

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释六点数据最终怎么“骗过”SteamVR/VRChat,变成可用全身追踪。

小白版

AnyaDance 创建一套虚拟头显、手柄和 tracker。SteamVR 以为这些是真设备,VRChat 就按普通 FBT 流程读取。

举个例子: 插件说“右手在 x/y/z”,AnyaDance 把它表现成虚拟右 Index Controller pose,VRChat IK 再把 Avatar 右臂抬起来。

优点: 不需要 VRChat 私有骨骼写入 API,走成熟 SteamVR 路径。

缺点 / 代价: 需要虚拟 driver,配置复杂且有平台条款/anti-cheat 风险。

展开专业版:模块、参数与技术取舍

插件 120Hz UDP JSON → AnyaDance native OpenVR driver → SteamVR compositor/device model → VRChat tracking/IK。

具体参数 / 协议: 127.0.0.1:39570;protocol v1;packet<8192B;quaternion XYZW;六设备。

技术层面的优劣: 兼容 FBT 生态,但多一层 driver,且完全虚拟 HMD 会增加 compositor 负载。


09 · LLM 语义动作到 120Hz Scheduler

LLM 语义动作到 120Hz Scheduler
LLM 语义动作到 120Hz Scheduler

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释为什么 LLM 只下“挥手”命令,而不是输出每个 120Hz pose。

小白版

LLM 像老板只说“挥手”,Scheduler 像动作师把每一帧都做完。老板不需要一秒发 120 次指令。

举个例子: 模型调用 body_express(“greet”) 一次,手可以连续挥 1.35 秒,中间不用再问 LLM。

优点: 动作平滑、延迟稳定、token/推理成本低。

缺点 / 代价: 只能使用预定义/受控技能,新增动作要改 runtime。

展开专业版:模块、参数与技术取舍

低频 semantic action → Behavior admission/arbitration → Scheduler trajectory/overlay → 120Hz output。Navigator 同样把 10Hz steering 与 LLM planning 解耦。

具体参数 / 协议: Body output 120Hz;VMC 60Hz;Navigator 10Hz;LLM 事件驱动。

技术层面的优劣: 这是实时系统正确的职责划分;牺牲“LLM 任意动作自由度”换可验证执行。


10 · 动作优先级

动作优先级
动作优先级

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释多个动作同时出现时如何避免冲突。

小白版

急停一定要压过跳舞;正在抓东西时,低优先级“卖萌”不能把手突然抢走。

举个例子: sequence 正在跑时 body_express(“celebrate”) 可能被拒绝,但头部轻微点头可作为允许的 overlay。

优点: 安全和精确控制可预测。

缺点 / 代价: 规则需要维护;优先级设置不当会让动作显得僵硬或被频繁拒绝。

展开专业版:模块、参数与技术取舍

MotionPolicy 明确 layer/priority/interruptible;expression_admission 对 active interaction/sequence/clip/gesture 保护 full-body motion。

具体参数 / 协议: safety 100;grab 90;sequence 85;arm/move_hand/hand 80;clip 75;gesture 70;semantic 40。

技术层面的优劣: runtime enforcement 比 prompt 约束可靠,但 policy 需要按行为体验调参。


11 · VMC Idle 与显式动作状态机

VMC Idle 与显式动作状态机
VMC Idle 与显式动作状态机

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释 idle VMC、显式动作、stop/reset 之间如何切换。

小白版

平时角色跟着 N.E.K.O 的自然待机动作;需要明确动作时暂时接管;动作结束再平滑回待机;急停后必须 reset 才恢复。

举个例子: idle → greet → idle;如果中途 body_stop,则进入锁定状态,后续动作不会自动继续。

优点: 行为边界清晰,安全状态可锁定。

缺点 / 代价: 状态转换多,错误恢复要定义完整。

展开专业版:模块、参数与技术取舍

scheduler state 与 behavior base/overlay 分离;transition 保存 from/to/started_at/strategy。stop 释放 controller input 并 latched,reset 才解除。

具体参数 / 协议: default_crossfade_ms=400;transition_history_size=16。

技术层面的优劣: 状态机避免隐式冲突,但需要所有工具正确尊重 scheduler state。


T02 · HostVmcController REST 接口

HostVmcController REST 接口
HostVmcController REST 接口

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

列出插件管理 N.E.K.O VMC 的四个控制接口。

小白版

查看、打开、关闭、摆 T-Pose

展开专业版

REST 是低频 control plane,高频骨骼不走这些接口,而走独立数据面。

原始终端内容:

1
2
3
4
GET  /api/vmc/status
POST /api/vmc/enable
POST /api/vmc/disable
POST /api/vmc/t_pose

T03 · VMC 默认输出

VMC 默认输出
VMC 默认输出

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

固定 VMC 主链的默认地址和频率。

小白版

N.E.K.O 每秒约60次把动作发到39539

展开专业版

vmc_idle listener 与 host output 必须端口一致,stale/端口占用都要处理。

原始终端内容:

1
2
3
4
5
6
N.E.K.O VMC output
127.0.0.1:39539
60 Hz

VMC receiver
listen 127.0.0.1:39539

T04 · AnyaDance 协议

AnyaDance 协议
AnyaDance 协议

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

把 AnyaDance 线协议压缩成一屏。

小白版

插件用UDP JSON告诉虚拟六件VR设备在哪里

展开专业版

v1、loopback:39570、<8192B、fire-and-forget、六个recognized device ID。

原始终端内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
UDP
127.0.0.1:39570
UTF-8 JSON
protocol version = 1
fire-and-forget
< 8192 bytes

devices:
hmd
left_controller
right_controller
hip
left_foot
right_foot

T05 · 60Hz → 120Hz 控制链

60Hz → 120Hz 控制链
60Hz → 120Hz 控制链

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

解释为什么 60Hz 输入仍能有 120Hz 执行。

小白版

桌宠动作每秒60帧,插件在中间平滑/合成后每秒发120帧

展开专业版

这是 input sampling 与 actuator output rate 解耦,不等于凭空增加原始动作信息。

原始终端内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
N.E.K.O browser VRM
60 Hz VMC
↓
VRC Body plugin
↓
Scheduler interpolation
120 Hz
↓
AnyaDance
↓
OpenVR virtual devices
↓
SteamVR
↓
VRChat IK

T06 · BodyScheduler 命令集

BodyScheduler 命令集
BodyScheduler 命令集

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

列出 Scheduler 可接受的动作 primitive。

小白版

LLM 不是传坐标流,而是调用“摆手、移手、抓、播放动作、按钮”等技能

展开专业版

这些 command 构成低层受控 action space。

原始终端内容:

1
2
3
4
5
6
7
8
9
10
11
12
arm_pose
hand
move_hand
reach_and_grab
gesture
sequence
play_clip
express
semantic_clip
input_axes
input_button
input_release

T07 · 动作切换 / Crossfade

动作切换 / Crossfade
动作切换 / Crossfade

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

解释动作切换为什么不瞬移。

小白版

先记住当前姿势,再约0.4秒过渡到新姿势

展开专业版

snapshot-based crossfade + quaternion shortest path,避免欧拉角长路径翻转。

原始终端内容:

1
2
3
4
5
6
7
8
9
current actual pose
↓
snapshot
↓
new target motion
↓
~400 ms crossfade
↓
quaternion shortest-path interpolation

T08 · Transition Strategy

Transition Strategy
Transition Strategy

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

给出状态机记录的 transition strategy 名称。

小白版

表示“从当前真实姿势平滑切”

展开专业版

这是 awareness/diagnostics 可观测字段,便于知道动作并非从预制起始帧硬跳。

原始终端内容:

1
current_pose_snapshot_crossfade


OSC / Control

VRChat OSC 双向链路、输入路由与移动反馈。

12 · VRChat OSC 双向链路

VRChat OSC 双向链路
VRChat OSC 双向链路

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释为什么 tracking 之外还需要一条 VRChat 官方控制/反馈通道。

小白版

虚拟 tracker 只告诉 VRChat“身体在哪”,OSC 负责聊天、按钮、Avatar 参数和反向状态。

举个例子: 发聊天框文字走 /chatbox/input;读取速度走 VRChat 回传参数。

优点: 使用 VRChat 官方开放接口,适合参数和反馈。

缺点 / 代价: OSC 也是 UDP;不是完整 world API,很多交互结果不可观测。

展开专业版:模块、参数与技术取舍

双向 OSC transport:send_port 9000,listen_port 9001;参数缓存和 sender allowlist 负责安全/状态管理。

具体参数 / 协议: input_pulse_ms=100;parameter_cache_size=256;allowed_sender=127.0.0.1。

技术层面的优劣: 官方接口稳定性较好,但反馈稀疏、没有事务确认。


13 · 身体追踪与 OSC 两个控制平面

身体追踪与 OSC 两个控制平面
身体追踪与 OSC 两个控制平面

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

把 AnyaDance 与 OSC 的职责明确分开,避免读者认为两者重复。

小白版

一条路负责“空间姿态”,另一条路负责“游戏命令/参数”。就像人体有运动神经,也有其他控制信号。

举个例子: 抬手姿态走虚拟 controller pose;发聊天和修改 Animator parameter 走 OSC。

优点: 每类任务用最合适的通道。

缺点 / 代价: 同一个动作可能跨两个平面,需要一致性和释放语义。

展开专业版:模块、参数与技术取舍

Tracking plane = six-point pose / OpenVR;OSC plane = /input、/avatar/parameters、/chatbox 与 feedback。输入路由还允许 anyadance primary + osc fallback。

具体参数 / 协议: Tracking 120Hz;OSC pulse 常见100ms;VRChat feedback event-driven。

技术层面的优劣: 并行通道提升能力覆盖,但容易出现“pose 已更新、button 未释放”等跨通道边缘问题。


14 · 移动/控制器输入路由

移动/控制器输入路由
移动/控制器输入路由

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释 locomotion/controller input 为什么有主路径与 fallback。

小白版

既然已经有虚拟 Index 手柄,摇杆输入优先直接塞进它;真不行再用 OSC 兼容路径。

举个例子: 前进轴先进入 AnyaDance controller overlay;driver 不可用时可退到 /input/Vertical。

优点: 姿态和手柄输入在同一帧,时序更一致。

缺点 / 代价: 更依赖 AnyaDance driver 的健康状态。

展开专业版:模块、参数与技术取舍

ControllerInputOverlay 与 pose frame 合成后同以 120Hz 输出;router 在 availability/compatibility 条件下选择 OSC fallback。

具体参数 / 协议: primary=”anyadance”;rate_hz=120;osc_fallback=true;max_hold_ms=10000;emergency_release_ms=50。

技术层面的优劣: 统一主执行通道减少 race,但 fallback 需要避免重复输入。


15 · 移动反馈闭环

移动反馈闭环
移动反馈闭环

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释真正的闭环:为什么“发了前进”还必须读取 VRChat 的实际速度。

小白版

按油门不等于车动了;角色可能撞墙,所以系统看速度表再决定继续还是修正。

举个例子: 一直发 forward,但 VelocityZ 很低且横向滑动增加,Navigator 可推断正在贴墙滑。

优点: 减少 Agent 自我幻觉,导航可纠错。

缺点 / 代价: 反馈并非完整物理状态,只能间接推断。

展开专业版:模块、参数与技术取舍

VRChat 内置 Avatar parameters VelocityX/Y/Z、AngularY、Upright、Grounded 被纳入 body_awareness.motion,形成 actuator→environment→observation 的回路。

具体参数 / 协议: VelocityX/Z 为 avatar local frame;当前实测 Avatar 满速约2.6667m/s;静止时参数可能不持续回传。

技术层面的优劣: 有实际运动证据,但需要处理 sparse updates、startup grace、stale samples。


T09 · VRChat OSC 端口

VRChat OSC 端口
VRChat OSC 端口

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

固定 OSC 双向端口方向。

小白版

9000 发给VRChat,9001收VRChat

展开专业版

两者都是UDP,listen端口通常只能被一个进程独占,路由器场景要转发。

原始终端内容:

1
2
3
4
5
Plugin → VRChat
127.0.0.1:9000

VRChat → Plugin
127.0.0.1:9001

T10 · OSC Hand / Use 输入

OSC Hand / Use 输入
OSC Hand / Use 输入

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

列出 Grab/Use/Drop 输入。

小白版

相当于按左右手的抓取/使用/丢弃按钮

展开专业版

应使用 pulse+auto release,避免 stuck input。

原始终端内容:

1
2
3
4
5
6
/input/GrabLeft
/input/GrabRight
/input/UseLeft
/input/UseRight
/input/DropLeft
/input/DropRight

T11 · OSC 移动输入

OSC 移动输入
OSC 移动输入

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

列出移动、视角、跑、跳等 OSC 输入。

小白版

像键盘/摇杆

展开专业版

当前主路径优先AnyDance controller overlay,OSC主要是兼容fallback。

原始终端内容:

1
2
3
4
5
6
7
8
9
10
11
12
/input/Vertical
/input/Horizontal
/input/LookHorizontal

/input/MoveForward
/input/MoveBackward
/input/MoveLeft
/input/MoveRight
/input/LookLeft
/input/LookRight
/input/Run
/input/Jump

T12 · OSC Chat / Avatar 参数

OSC Chat / Avatar 参数
OSC Chat / Avatar 参数

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

展示聊天和 Avatar 参数两类 OSC 能力。

小白版

一类“说话”,一类“改角色开关/数值”

展开专业版

/chatbox/input 与 /avatar/parameters/ 是不同语义面。

原始终端内容:

1
2
3
/chatbox/input

/avatar/parameters/<parameter>

T13 · 输入优先级配置

输入优先级配置
输入优先级配置

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

展示输入路由的当前默认配置。

小白版

先走虚拟手柄,不行再走OSC

展开专业版

120Hz overlay与pose共帧,osc_fallback=true需要防双发。

原始终端内容:

1
2
3
4
[input]
primary = "anyadance"
rate_hz = 120
osc_fallback = true

T14 · UDP sendto 的含义

UDP sendto 的含义
UDP sendto 的含义

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

提醒 sendto 成功不是动作成功。

小白版

信投进邮筒不等于对方收到,更不等于角色动了

展开专业版

需要driver telemetry和VRChat motion feedback分层确认。

原始终端内容:

1
2
3
4
5
sendto() = success

≠

VRChat 角色真的移动了

T15 · 移动反馈参数

移动反馈参数
移动反馈参数

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

列出用于实际移动反馈的六个内置 Avatar 参数。

小白版

速度、转向、站立/着地

展开专业版

VelocityX/Z 是avatar local frame,回传稀疏,不能把静默当永久0。

原始终端内容:

1
2
3
4
5
6
VelocityX
VelocityY
VelocityZ
AngularY
Upright
Grounded

T16 · 碰撞/侧滑信号

碰撞/侧滑信号
碰撞/侧滑信号

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

展示如何用速度向量间接推断撞墙/侧滑。

小白版

按前进却开始横着滑,多半贴墙

展开专业版

forward_ratio/slip_ratio是弱观测,不是Physics collision ground truth。

原始终端内容:

1
2
3
4
5
6
7
8
9
10
11
12
正常前进
VelocityZ 很大
VelocityX 较小
forward_ratio ≈ 1

斜着撞墙
VelocityZ ↓
VelocityX ↑
slip_ratio ↑

正面撞墙
horizontal_speed → 0


Perception / World / Nav

视觉感知、世界状态与导航自主性。

16 · VRChat 视觉感知链

VRChat 视觉感知链
VRChat 视觉感知链

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释 AI 如何获得普通 VRChat 世界的可见信息。

小白版

它不是读游戏内存,而是像人一样看桌面窗口:先抓屏,再用本地识别器找人,需要理解语义时才让 VLM 看图。

举个例子: 本地 detector 发现右侧有人形框;VLM 再判断这是玩家还是菜单缩略图。

优点: 信息来源接近普通用户可见画面,环境泛化强。

缺点 / 代价: 2D 像素缺少深度和真实世界坐标,UI/镜子容易造成假阳性。

展开专业版:模块、参数与技术取舍

FrameSource(DXGI/DXcam、WinRT、MSS fallback)→ latest frame queue → local detector/optical cues → WorldState;VLM 是按需 semantic path。

具体参数 / 协议: capture interval_ms=100;queue_size=1;backend 与 120Hz body thread 隔离。

技术层面的优劣: 屏幕路线无需 world 合作,但 perception noise 和 geometry ambiguity 是结构性问题。


17 · Latest-frame Queue

Latest-frame Queue
Latest-frame Queue

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释为什么实时系统宁可丢帧也不要排队。

小白版

导航最怕认真分析“三秒前”的画面。新图来了就把旧图覆盖,永远处理最新现场。

举个例子: 60FPS 输入、5FPS detector 时,如果排队会越来越落后;queue=1 时只会漏帧,不会无限增加延迟。

优点: 延迟有上界,目标位置更鲜。

缺点 / 代价: 不能做需要完整连续帧序列的离线分析。

展开专业版:模块、参数与技术取舍

bounded latest-frame buffer 是 backpressure strategy;planner 必须依赖 observation timestamp/age/TTL,而不是假设每帧连续。

具体参数 / 协议: queue_size=1;capture interval 当前100ms。

技术层面的优劣: freshness > completeness 对 reactive control 正确,但历史分析要另设缓冲。


18 · 本地 Detector 与 VLM 分工

本地 Detector 与 VLM 分工
本地 Detector 与 VLM 分工

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释为什么不把每一帧都交给多模态大模型。

小白版

本地 detector 快但“不懂人话”;VLM 懂语义但慢且贵,所以一个负责找框,一个负责必要时认人/读字。

举个例子: detector 给出 stable_id/bbox/bearing;VLM 判断“这是不是目标 NPC”。

优点: 成本、延迟和语义能力平衡。

缺点 / 代价: 两套模型输出需要绑定,可能有 ID 漂移。

展开专业版:模块、参数与技术取舍

classical detector 负责 high-frequency geometry/track;foundation-model VLM 负责 open-vocabulary semantics;WorldState 负责融合。

具体参数 / 协议: 主动 VLM 视觉预算可设置为约10 frames/minute。

技术层面的优劣: amortize expensive semantic inference,但需要可靠 tracking 和 revalidation。


19 · 一次 VLM 语义绑定,多帧复用

一次 VLM 语义绑定,多帧复用
一次 VLM 语义绑定,多帧复用

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释一次语义判断如何在后续多帧复用。

小白版

第一次认出“这个人是目标”以后,只要 tracker 还跟着同一个人,就不用每帧重新问 LLM。

举个例子: track_7 → VLM 判为 targetNPC → semantic_commit → 后续 track_7 更新位置但保留标签。

优点: 低延迟、省 token、身份连续。

缺点 / 代价: 发生 ID switch 时,错误标签可能跟到别人身上。

展开专业版:模块、参数与技术取舍

entity-level semantic mutation 将 expensive inference 从 frame granularity 提升到 track/entity granularity;需结合 confidence、TTL、occlusion/id-switch handling。

具体参数 / 协议: 语义标签应携带 source/age/unknown 等字段;具体 TTL 由 WorldState policy 管理。

技术层面的优劣: 高效但依赖 tracker identity consistency。


20 · World State 稳定接口

World State 稳定接口
World State 稳定接口

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释为什么 perception 不能直接把 bbox 丢给 LLM。

小白版

World State 把“屏幕右边那个框”变成稳定的 entity,让 Agent 能持续说“跟着 entity_14”。

举个例子: 即使 bbox 每帧变化,entity_id 不变;Agent 仍然操作同一个目标。

优点: 感知实现可替换,Planner 不用关心像素细节。

缺点 / 代价: 世界状态本身也可能过期或错绑,必须表达 unknown。

展开专业版:模块、参数与技术取舍

WorldStateStore 是 perception/planner contract:聚合 vision、OSC、external observation,提供 snapshot/revision delta/salient event,并区分 session entity 与可持久 world facts。

具体参数 / 协议: 典型字段 entity_id/type/bearing/confidence/age_ms/ttl_ms/source/unknown;persist_world=true、persist_players=false。

技术层面的优劣: 抽象层提升可维护性,同时引入 state reconciliation 问题。


21 · “走到那个人旁边”闭环

“走到那个人旁边”闭环
“走到那个人旁边”闭环

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

把视觉、WorldState、Navigator、Body、OSC 串成一条完整业务链。

小白版

“走过去”不是一次性算好路线,而是每隔很短时间重新看目标方向、走一点、再修正。目标丢失或撞墙就停/调整。

举个例子: 目标在右→转右→前进→目标变大→减速→速度异常则认为受阻→到达后停。

优点: 不用完整地图就能做简单接近。

缺点 / 代价: 复杂绕障、跨房间、墙后目标能力弱。

展开专业版:模块、参数与技术取舍

LLM 只提交 autonomy goal;Navigator 10Hz 读取 world target freshness/confidence,输出 turn/forward;Body 120Hz执行;OSC velocity 作为闭环反馈。

具体参数 / 协议: max_forward_axis≈0.60;max_turn_axis≈0.35;turn_gain≈0.8;max_turn_deg≈45;min_confidence≈0.40。

技术层面的优劣: reactive controller 对可见目标有效,但缺少 global map/global planner。


22 · Autonomy 授权门

Autonomy 授权门
Autonomy 授权门

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释为什么模型不能一获得工具就无限自主行动。

小白版

自主移动像“车钥匙”:默认没插上,用户手动 arm 后才允许;而且钥匙会过期,环境状态不可靠时也会自动停。

举个例子: 目标 stale、driver conflict、急停触发时,即使 LLM 仍想前进,runtime 也拒绝执行。

优点: 降低误理解造成的失控。

缺点 / 代价: 增加操作步骤,测试时可能觉得繁琐。

展开专业版:模块、参数与技术取舍

Capability gate 位于 planner 与 actuator 之间;manual arm、TTL、freshness、安全状态共同决定 autonomy goal admission。

具体参数 / 协议: manual_arm=true;session_ttl_minutes=30。

技术层面的优劣: 权限边界更清晰,但需要 UI/agent 清楚呈现“为什么没动”。


23 · “挥手”执行时序

“挥手”执行时序
“挥手”执行时序

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

用最简单动作展示 semantic intent 如何变成实际 120Hz 执行。

小白版

LLM 只说“greet”,系统自动选右手挥手、检查冲突、平滑进入动作、执行后再回到待机。

举个例子: 如果此时正在抓东西,挥手可能被拒;如果没有冲突,1.35 秒动作持续执行。

优点: 语义接口自然,动作实现可替换。

缺点 / 代价: 语义 profile 的自然度依赖预设。

展开专业版:模块、参数与技术取舍

body_express(intent=”greet”) → resolve_expression → policy/admission → Scheduler snapshot/crossfade → 120Hz six-point frames → completion/awareness。

具体参数 / 协议: greet: gesture=wave, side=right, intensity=0.55, duration=1350ms;express priority=40。

技术层面的优劣: semantic skill abstraction 对 LLM 友好,但需要 motion catalog/profile 持续迭代。


24 · Body Awareness / Proprioception

Body Awareness / Proprioception
Body Awareness / Proprioception

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释 AI 如何获得“自己身体现在是什么状态”的可靠来源。

小白版

聊天记录说“我在挥手”不可靠;真正要问的是身体 runtime。body_awareness 就像闭眼也知道手在哪里的本体感觉。

举个例子: 用户问“你还在挥手吗?”模型应查 current motion/progress,而不是复述两秒前的 tool call。

优点: 减少自我状态幻觉,支持“继续/换另一只手”等相对命令。

缺点 / 代价: 只能知道 runtime 暴露的状态,不能凭空得到 VRChat 未反馈的信息。

展开专业版:模块、参数与技术取舍

融合 Scheduler motion/transition/pose、Behavior active layers、OSC movement/parameters、driver delivery;目标意图与 completion evidence 分离。

具体参数 / 协议: 字段包括 motion phase/progress/remaining、previous_action、transition、arm elevation/direction、hand state、head rotation、summary。

技术层面的优劣: 强 grounding,但 schema 需要与实际 actuator semantics 同步维护。


T17 · 实时视觉原则

实时视觉原则
实时视觉原则

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

强调实时视觉的核心原则。

小白版

宁可漏掉旧画面,也别认真看过期画面

展开专业版

queue_size=1提供bounded latency,配合timestamp/TTL。

原始终端内容:

1
2
3
freshness > completeness

queue_size = 1

T18 · 本地 Detector 结构化输出

本地 Detector 结构化输出
本地 Detector 结构化输出

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

展示 detector 应该输出结构化几何,而不是长篇自然语言。

小白版

告诉Agent“有个人、ID、方向、框、可信度”

展开专业版

便于WorldState做track-level fusion。

原始终端内容:

1
2
3
4
5
there is a person
stable_id = ...
bearing = ...
bbox = ...
confidence = ...

T19 · 本地 detector 不知道的语义

本地 detector 不知道的语义
本地 detector 不知道的语义

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

明确本地 detector 不擅长的语义。

小白版

能看出像人,不代表知道是谁、是不是镜子

展开专业版

这些需要VLM/open-vocabulary reasoning或额外传感器。

原始终端内容:

1
2
3
4
这是 Jasper
这是某个 NPC
菜单写了什么
镜子里的还是本人

T20 · 主动视觉预算

主动视觉预算
主动视觉预算

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

展示主动视觉调用预算。

小白版

大模型看图很贵,所以不是每帧都看

展开专业版

budget让semantic inference按需触发,防止agent loop context/token爆炸。

原始终端内容:

1
10 frames / minute

T21 · Semantic Binding

Semantic Binding
Semantic Binding

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

用最短流程解释 semantic_commit。

小白版

认一次“track_7是目标”,以后继续跟track_7

展开专业版

semantic state从frame推理提升为entity binding,需防ID switch。

原始终端内容:

1
2
3
4
5
6
7
track_7
↓ screenshot
Main LLM
↓
“这个是目标 NPC”
↓
vrc_semantic_commit(track_7, label=targetNPC)

T22 · WorldState 实体字段

WorldState 实体字段
WorldState 实体字段

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

列出 WorldState entity 的关键字段。

小白版

给每个目标一张“身份证+新鲜度+可信度”

展开专业版

age/ttl/source/unknown让planner知道哪些字段可依赖。

原始终端内容:

1
2
3
4
5
6
7
8
entity_id
type
bearing
confidence
age_ms
ttl_ms
source
unknown

T23 · 分层控制频率

分层控制频率
分层控制频率

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

一屏展示四层不同时间尺度。

小白版

LLM想目标、Navigator修方向、Scheduler跑身体、VRChat执行物理

展开专业版

multi-rate control是整套架构稳定性的关键。

原始终端内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
LLM
↓
目标级 planning ~秒级

Navigator
↓
闭环 steering 10 Hz

BodyScheduler
↓
姿态/输入 interpolation 120 Hz

SteamVR / VRChat
↓
实际 physics / character controller

T24 · 抓取的可观测边界

抓取的可观测边界
抓取的可观测边界

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

明确抓取结果的可观测边界。

小白版

知道伸手和按抓取,不一定知道杯子真拿到

展开专业版

缺少通用Pickup attachment反馈,因此object_held必须unknown。

原始终端内容:

1
2
3
4
5
6
7
我把手移过去了
我发了 grip

但不能普适确认:
我确实拿到了杯子

object_held = unknown

T25 · body_awareness 字段

body_awareness 字段
body_awareness 字段

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

列出 proprioception 返回给 LLM 的主要字段。

小白版

告诉AI自己现在做什么、做到哪、手头朝哪

展开专业版

runtime state优先于chat history,支持relative command grounding。

原始终端内容:

1
2
3
4
5
6
7
8
9
10
11
current motion
phase
progress
remaining time
previous action
transition
arm elevation
arm direction
hand state
head rotation
summary


Backend / Transport / Safety

后端模块、端口拓扑、遥测与四层安全。

25 · Backend 模块拆分

Backend 模块拆分
Backend 模块拆分

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释独立 backend 内部不是一个大循环,而是多个职责明确的模块。

小白版

把身体系统拆成“动作、眼睛、地图、导航、安全、网络”等小部门,各自做一件事。

举个例子: Vision 坏了不应该让 OSC 发包代码也变得不可维护;Navigator 只读 WorldState,不直接写 detector。

优点: 可测试、可替换、故障定位清楚。

缺点 / 代价: 接口数量多,跨模块状态更复杂。

展开专业版:模块、参数与技术取舍

BackendService 组合 adapters/Scheduler/OSC/VMC/driver telemetry/WorldState/Vision/Navigator/Autonomy/Cognition;process/client 构成 hosted plugin 与 backend 的 IPC 边界。

具体参数 / 协议: 各 worker 运行频率独立;body 120Hz、nav 10Hz、capture约10Hz/配置、VLM按需。

技术层面的优劣: 模块化适合长期演进,但需要严格 contract 与 thread/process ownership。


26 · 网络 / 端口拓扑

网络 / 端口拓扑
网络 / 端口拓扑

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

给部署和排障提供一张“每个端口是谁和谁说话”的地图。

小白版

如果角色不动,先看是哪一段断了:N.E.K.O→VMC、插件→AnyaDance、SteamVR→VRChat,还是 VRChat→OSC 回传。

举个例子: 39539 被别的 VMC 接收器占用时,待机骨骼链就会出问题;9001 被路由器独占时,反馈会消失。

优点: 排障直接。

缺点 / 代价: 端口多,用户环境冲突概率高。

展开专业版:模块、参数与技术取舍

列出 control plane/data plane:48911 HTTP、39539 VMC UDP、39570 AnyaDance command UDP、39571 driver telemetry multicast、9000/9001 VRChat OSC。

具体参数 / 协议: 所有默认绑定 loopback,driver telemetry 使用239.255.39.71 multicast group。

技术层面的优劣: 本机化降低安全暴露,但仍需处理端口独占、路由器转发和多 sender 冲突。


27 · AnyaDance Driver Telemetry

AnyaDance Driver Telemetry
AnyaDance Driver Telemetry

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

解释 UDP sendto 成功为什么还不足以证明 driver 真收到了。

小白版

把信塞进邮筒不代表收件人看到了。39571 telemetry 就像收件回执。

举个例子: 39570 发包正常但 driver 没处理时,driver_delivery 仍不会确认。

优点: 能定位“发送端正常、driver 端异常”的故障。

缺点 / 代价: 旧版 driver 可能不支持 telemetry,届时只能回到 unknown。

展开专业版:模块、参数与技术取舍

driver_log 订阅 command log multicast;body_awareness.driver_delivery 提供处理证据,并可检测多 sender conflict。

具体参数 / 协议: multicast_group=239.255.39.71;listen_port=39571;stale_after_ms=3000;history_size=64。

技术层面的优劣: 增强可观测性,但不是 VRChat 最终执行确认;仍需 OSC motion feedback。


28 · 四层安全系统

四层安全系统
四层安全系统

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

汇总模型工具、行为仲裁、低层限幅和 autonomy gate 四层安全。

小白版

像开车有四道保险:方向盘指令先校验,动作冲突再检查,底层速度/范围有限制,自主驾驶还要单独授权。

举个例子: body_stop 会冻结当前合法姿态、释放控制器输入并锁定后续运动,reset 才恢复。

优点: 单点失误不容易直接变成失控。

缺点 / 代价: 多重 gate 会让失败原因变多,需要 UI 清楚说明。

展开专业版:模块、参数与技术取舍

Tool validation → Behavior admission → Scheduler limits/state latch → Autonomy arm/TTL/freshness;emergency input release 是独立低层保护。

具体参数 / 协议: auto_start=false;启动后 state=disabled;emergency_release_ms=50。

技术层面的优劣: defense in depth 适合具身体 Agent,但会增加状态组合与测试矩阵。


T26 · 默认端口速查

默认端口速查
默认端口速查

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

部署/排障速查表。

小白版

哪段不通就查对应端口

展开专业版

48911 HTTP、39539 VMC、39570 command、39571 telemetry、9000/9001 OSC。

原始终端内容:

1
2
3
4
5
6
48911  N.E.K.O HTTP / VMC control
39539 VMC UDP: N.E.K.O → plugin
39570 AnyaDance UDP: plugin → driver
39571 Driver telemetry multicast
9000 VRChat OSC input
9001 VRChat OSC output

T27 · Driver Delivery 真实性

Driver Delivery 真实性
Driver Delivery 真实性

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

再次区分本地发送和driver处理。

小白版

需要39571“回执”

展开专业版

driver delivery仍不是最终avatar movement,需继续看OSC velocity。

原始终端内容:

1
2
3
4
5
6
7
sendto() success
↓
NOT sufficient
↓
39571 driver telemetry
↓
body_awareness.driver_delivery

T28 · 默认安全启动

默认安全启动
默认安全启动

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

说明插件默认不会自动接管身体。

小白版

启动程序也不会立刻乱动,必须显式开启

展开专业版

auto_start=false + state=disabled 是fail-safe default。

原始终端内容:

1
2
3
4
5
auto_start = false

state = disabled

必须显式 body_enable

T29 · 当前 AnyDance 路线缺失

当前 AnyDance 路线缺失
当前 AnyDance 路线缺失

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

集中列出桌面路线缺失的3D能力。

小白版

没有深度、地图、导航网格,所以复杂绕路天生困难

展开专业版

这是观测模型缺失,不是简单“换更强LLM”能补齐。

原始终端内容:

1
2
3
4
5
6
7
没有真正的 3D world model:

depth
SLAM
collision map
NavMesh
VRChat world object API

T30 · Reactive Navigation

Reactive Navigation
Reactive Navigation

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

用一句流程概括当前擅长的导航类型。

小白版

看见目标→转→走→目标变大→停

展开专业版

bearing/apparent-scale + feedback的reactive servo,不是global path planning。

原始终端内容:

1
2
3
4
5
6
看到一个人在右边
→ 转向
→ 前进
→ 人变大
→ 减速
→ 停

T31 · 不支持的空间导航

不支持的空间导航
不支持的空间导航

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

明确复杂空间任务的失败语义。

小白版

不会就说不支持,而不是假装绕墙成功

展开专业版

unsupported_spatial_navigation是能力边界的显式contract。

原始终端内容:

1
2
3
4
5
6
去墙后面找某人
绕过复杂建筑
理解完整房间拓扑
规划长路径

→ unsupported_spatial_navigation

T32 · 当前没有 VRChat Voice Path

当前没有 VRChat Voice Path
当前没有 VRChat Voice Path

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

说明当前聊天框和语音链不要混为一谈。

小白版

现在能发文字,不代表已经把TTS送进VRChat麦克风

展开专业版

缺少virtual microphone/audio routing end-to-end path。

原始终端内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
当前主线:
N.E.K.O conversation
↓
Chatbox text
↓
VRChat

尚未实现:
N.E.K.O TTS
↓
virtual microphone
↓
VRChat voice


YUI World-Native

世界原生 NPC 方案与两条路线的对比。

29 · YUI 世界原生 NPC 架构

YUI 世界原生 NPC 架构
YUI 世界原生 NPC 架构

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

在讲完 2D 桌面路线瓶颈后,解释为什么需要另一条世界原生 NPC 方案。

小白版

AnyDance 像“AI 扮演普通玩家”,World-Native 像“世界作者直接造一个 AI NPC”。后者可以直接拿到场景坐标和导航数据。

举个例子: 要绕墙去目标:桌面方案只能从画面反应;World-Native 可以用 NavMeshAgent 规划可走路径。

优点: 真实 3D geometry、Raycast、NavMesh、玩家坐标和可定制交互。

缺点 / 代价: 只能在专门支持该 NPC 的 world 中使用,泛化差。

展开专业版:模块、参数与技术取舍

N.E.K.O/Python 与 Udon world runtime 通过定义协议通信;Udon 控制 NPC prefab、NavMesh、Animator、perception、telemetry,并通过 VRChat network sync 给其他客户端。

具体参数 / 协议: 协议设计含可靠命令、约20Hz上半身/文本等通道(具体以YUI v1.1规范为准)。

技术层面的优劣: world observability 大幅提升,但环境需要预安装 contract。


30 · YUI World-Native Prefab

YUI World-Native Prefab
YUI World-Native Prefab

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

下钻 World-Native 路线在 Unity 场景里到底由哪些 GameObject/Controller 组成。

小白版

这个 NPC 不是一个空模型,而是带腿(NavMesh)、动画器、触摸区域、文字气泡、安全控制和遥测的一整套 prefab。

举个例子: 玩家摸头可由 Head trigger 感知;移动由 Locomotion/NavMeshAgent 处理,而不是看屏幕猜。

优点: 交互可定制、场景状态可直接观测。

缺点 / 代价: world 作者必须维护 prefab/Udon/NavMesh,兼容成本高。

展开专业版:模块、参数与技术取舍

Root 可包含 VRCObjectSync/NavMeshAgent;Runtime 拆 MidiRouter、SafetyController、Locomotion、ActionController、UpperBodyController、TextController、Perception、Telemetry、VoiceController;TouchZones 划分交互区域。

具体参数 / 协议: 具体对象名/同步字段遵循 YUI NPC Unity 接口规范 v1.1。

技术层面的优劣: 强环境契约换来强确定性和可观测性。


31 · World-native 3D 控制闭环

World-native 3D 控制闭环
World-native 3D 控制闭环

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

用闭环对比说明 World-Native 为什么在空间导航上更强。

小白版

桌面路线是“看照片猜路”,世界原生路线是“直接拿地图和坐标”。

举个例子: Python 下发 GOTO target,Udon 用 NavMesh 算路、Raycast 看遮挡、VRCPlayerApi 找玩家,再把 telemetry 回传。

优点: 能做更可靠的 3D 路径和遮挡判断。

缺点 / 代价: 无法自动迁移到普通第三方 world。

展开专业版:模块、参数与技术取舍

Planner goal → Udon controller → NavMeshAgent/path → NPC;VRCPlayerApi/Raycast/Trigger → structured telemetry → Python agent,形成 world-space closed loop。

具体参数 / 协议: world coordinate、NavMesh、Physics.Raycast 都来自 Unity runtime,而非屏幕估计。

技术层面的优劣: 从 probabilistic screen inference 转向 deterministic-ish environment API,但牺牲 open-world portability。


T33 · AnyDance vs World-Native 几何

AnyDance vs World-Native 几何
AnyDance vs World-Native 几何

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

作为引出World-Native的几何对比。

小白版

一个看像素猜位置,一个直接拿Unity坐标

展开专业版

screen-space inference vs world-space authoritative state。

原始终端内容:

1
2
3
4
5
AnyDance route:
screen pixels → guess geometry

World-native route:
Unity world coordinates → actual geometry

T34 · World-native 的限制

World-native 的限制
World-native 的限制

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

说明World-Native为什么没有直接取代AnyDance。

小白版

它更懂地图,但必须你自己做world并放NPC组件

展开专业版

observability与environment generality的trade-off。

原始终端内容:

1
2
3
4
5
6
7
8
9
10
AnyDance route:
普通 VRChat avatar
普通 VRChat world
看起来像一个普通 player

YUI World NPC:
必须自己做 world
必须放 prefab
必须 Udon
必须 NavMesh


Conceptual Summary

抽象回通用 Embodied Agent 视角。

32 · 抽象为通用 Embodied Agent

抽象为通用 Embodied Agent
抽象为通用 Embodied Agent

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

把项目从“VRChat 插件”提升到通用 Embodied Agent 架构理解。

小白版

一个会行动的 AI 不只有脑:还要眼睛、世界模型、技能、小脑、执行器和反馈。这个项目刚好把这些层都露出来了。

举个例子: 换成机器人/游戏 Agent,Perception、World Model、Planner、Low-level Controller 的分层仍然成立。

优点: 帮助读者迁移理解到机器人和 computer-use/game agent。

缺点 / 代价: 抽象图会隐藏 VRChat 的特殊限制,不能替代具体实现。

展开专业版:模块、参数与技术取舍

Perception→World Model→Cognition/Policy→Skill Controller→Low-Level Controller→Environment,并由 environment feedback 回灌。项目模块可一一映射到这些层。

具体参数 / 协议: 关键不是固定频率,而是 multi-rate:model低频、nav中频、body高频。

技术层面的优劣: 抽象提升可复用认知,但工程决策仍由环境接口决定。


33 · 最终主线数据流

最终主线数据流
最终主线数据流

技术资源:SVG · PNG · Mermaid 源码

为什么这张图会出现在这里?

作为全文收束,把所有模块重新连成一条从用户意图到世界反馈的数据流。

小白版

读完所有细节后,再看这张图应该能一眼理解:脑决定、世界模型提供目标、小脑执行、眼睛和反馈再把结果送回脑。

举个例子: “找人→走近→挥手”可沿图从 Agent→World/Nav→Scheduler→VRChat→Vision/OSC→WorldState 再回 Agent。

优点: 适合复盘与排障定位。

缺点 / 代价: 它是高度概括图,不显示所有错误分支和协议细节。

展开专业版:模块、参数与技术取舍

完整主路径将认知层、10Hz local navigation、60Hz VMC idle、120Hz body output、OSC feedback、screen perception 汇成闭环。

具体参数 / 协议: 推荐与 t35_frequency_summary、26_network_topology 联读。

技术层面的优劣: 展示总体控制拓扑;具体实时性/可靠性要看各子链。


T35 · 全栈运行频率

全栈运行频率
全栈运行频率

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

把整套系统的不同频率放在一屏。

小白版

脑想得慢、小脑跑得快、身体更快

展开专业版

0.1–1Hz model / on-demand VLM / 10Hz nav / 60Hz VMC / 120Hz output。

原始终端内容:

1
2
3
4
5
LLM            ~0.1–1 Hz
semantic VLM on demand
Navigator 10 Hz
VMC input 60 Hz
Body output 120 Hz

T36 · 一句话类比

一句话类比
一句话类比

技术资源:SVG · PNG · 原始 TXT

这张终端图想证明什么?

作为全文记忆锚点。

小白版

脑、小脑、运动神经、反馈神经、眼睛

展开专业版

对应 cognition、controller、actuator、feedback、perception,不应把类比当成真实进程边界。

原始终端内容:

1
2
3
4
5
6
N.E.K.O = 脑和人格
VMC = 原始身体动作
FSM / Scheduler = 小脑
AnyaDance / SteamVR = 运动神经
VRChat OSC = 反馈神经
DXcam / OpenVINO / VLM = 眼睛


主要公开来源

分析快照:2026-09-09 · 参数变化请以当前仓库源码为准。