Skip to content
building SUPPORTING CAPABILITY / LOCAL PERCEPTION

perception · Seeing and hearing in the loop

Visual recognition + face detection following + VAD voice activity detection — the sensory layer that lets the entity perceive the room.

belong to the system Support ability · Local Perception · face, vad and probe run in a local resident daemon · Provides presence events for proactive responses and multi-modal Agent scenarios, also retaining evidence of connection to early embodied expression prototypes (see Four-layer engineering chain)·Latest verification: 2026-06

01 / Position in the system

Why this layer exists

The perception layer is the first interface between the entity and the real physical space. Without it, the entire system can only "passively wait for people to poke it" - the user must actively type or click buttons for interaction. With perception, the entity has the ability to "actively realize your presence" for the first time: you sit in front of the camera, it knows; you speak, it knows; you walk away, it also knows.

it runs on a Local resident daemon (agent runtime) The presence module consists of three sub-modules — face (face detection and following),vad (voice activity detection),probe (Presence detection and event aggregation). The upstream is the resident process itself, which continuously supplies camera frames and microphone streams; the downstream is the Cognition cognitive layer - when the perception module determines that "someone is present and starts to speak", it throws this event to the agent for decision-making, rather than brainless wake-up.

Therefore, the core value of this layer is not "how accurate the identification is", but "turning the presence signals of the physical world into events that can be consumed by the system with low enough disturbance and stable enough judgment".

02 / What do you want to solve?

vision-aligned problem statement

In the vision of lasting digital life, entities must "first sense, then respond", rather than "exist after being activated." The paradigm of mainstream voice assistants is wake-word triggering: you must shout a wake-word before it opens its eyes. This paradigm is misplaced for "a being that is always present" - the thing that is truly present should be aware of it as soon as you enter the room, without the need for you to announce its name first.

What perception wants to solve is to use local visual + voice dual channels to turn the three things "Is there anyone/is it looking at me/is it talking" into signals that are continuous, low-latency, and can be subscribed by the agent. face Use OpenCV for face detection and let the line of sight/camera follow the movement of the face; vad Perform voice activity detection to distinguish between "environmental noise" and "really talking to me", only the latter triggers interaction; probe Aggregate multiple signals into a "presence state" for scheduling by the resident daemon.

If this layer is missing, the entity will always be a "tool waiting for instructions" rather than "notice your presence". This is a key step in pushing virtual humans from chat surface to ambient presence.

03 / Technology Stack + Design Tradeoffs

How to match it, why such a choice?

The entire layer is deliberately made to be "local first, lightweight first": perception is high-frequency and continuously running. Once each frame is transmitted to the cloud, there are not only privacy issues, but also latency and cost issues. Therefore, all visual and voice judgments are completed locally, and only the "refined events" are thrown upward.

Aface

OpenCV is the main force in face detection, and the camera/line of sight follows the face displacement; the choice is to first use the mature Haar/DNN detection to ensure stability, and not to focus on heavy-duty face recognition for the time being, because this stage only requires "is there a face and where is the face", not "who is it".

Bvad

Voice activity detection performs gating of "whether someone is speaking" and cuts the microphone stream into valid speech segments; the trade-off is to first solve "when to listen" and leave "understanding the content" to the upstream transcription/Cognition, keeping the responsibility of this layer single.

Cprobe

The presence detector aggregates the instantaneous signals of face/vad into a stable "presence state" and performs debounce to avoid misjudgment of leaving the site after a frame is lost; it is the event center between the resident daemon and the upper layer.

DOverall trade-off

Sensitivity vs. Disturbance is this eternal tension: too sensitive will cause frequent false awakenings, too slow and lose the meaning of "active presence". The current choice is conservative, and I would rather miss it once than poke people indiscriminately.

04 / Current state + known limit

Where have you done it now?

Status: building. The skeletons of the three sub-modules are already running in the resident daemon, but they are still being polished from "can be detected" to "determined to be stable enough and not disturbing enough", and have not yet reached the level of daily dependence.

AHas landed

face's OpenCV face detection + camera follow-through; vad voice activity detection can cut out valid speech segments; probe can aggregate two-way signals into presence status and throw events to the upper layer; the three modules have been hooked into the presence subsystem of the resident daemon.

BExploring

Sensitivity/debounce threshold adjustment (finding a balance between false awakening and missed detection); detection stability in multi-person/profile/low-light scenarios; vad’s robustness in background music/TV sounds.

CTo be resolved

The complete closed loop of sensing events → Cognition decision-making has not yet been connected (the main line of "continuous presence" relying on the agent layer will be implemented first); there is no identity recognition at the "who" level; long-running resource occupation/heating needs to be optimized.

05 / Next milestone

What to push next

01

Really connect the presence event of the probe to the Cognition layer - run through the first end-to-end chain of "someone sits down + speaks → agent takes the initiative to speak".

02

Call up a set of production-available sensitivity/debounce default values to reduce false wake-ups to an acceptable range.

03

Face following is connected to the Embodiment layer, allowing the face on the screen to "look" at the real person.

04

Reduce long-running CPU/power consumption, so that the sensing module can be used 24/7 without being hot to the touch.

System/Module