[Feature]: Add Li Auto Livis smart glasses as a built-in channel #3755
Replies: 3 comments
|
@tcp404 @IceyLiu 按你们的要求做了一轮完整调研,把架构设计和技术设计整理如下。全文较长,关键结论在前,细节折叠。两份完整 spec(架构设计 + 技术设计)已在本地整理成文,可按你们偏好以 draft PR 或 gist 形式提供。 本项目已经获得理想汽车 Livis 眼镜开发组产品经理们的认可,不存在商业协议违背风险。 1. 调研bash <(curl -fsSL [https://li-center.lixiang.com/livis-pc-kit/openclaw/mac-linux/latest/setup.sh](https://li-center.lixiang.com/livis-pc-kit/openclaw/mac-linux/latest/setup.sh)) --openclaw官方套件:
参考项目:我仔细评审了第三方兼容实现 Jassy930/livis-relay-daemon(MIT)。它的核心状态机工程质量很高,值得借鉴:执行/投递双持久化状态机 + outbox(含迟到 ACK 收敛边)、每次投递前先落盘 2. 集成方式如实对比后,主推荐内置 Channel,但把 extension 路径的真实优点也摆出来,最终由你们定:
* 该增强惠及所有 extension 渠道,但是独立的机制型改动,规模需要你们估价。 推荐内置的理由:需求要求「内置体验、无需手动装扩展」,且 weixin SSE 先例让专属登录交互成本最低。但 extension 路径能把非官方协议实现隔离在主二进制之外——如果你们倾向 extension-first,本设计的协议/任务运行时可以原样落在扩展内,我照做。 3. 总体架构职责边界与现有渠道完全一致:协议、凭据、任务持久化、派发、投递全在 AionCore;AionUi 只做 UI、类型映射、i18n。Channel 终止于「持久化的入站任务 + 持久化的出站结果」,执行交给既有 Assistant 编排——不自带执行后端。 4. 关键设计决策
协议契约细节(点开)— 出处:第三方公开实现(MIT)+ 官方包 v2.0.0 静态检视,均为观察非规范
AionUi 侧改动清单(点开)PR-0(前置机械重构): Feature PR:
5. 交付计划与风险6. 对 5 个 Open Question 的明确回答
— 设计细节任何一条都可以展开讨论。若方向认可,我从 M0-② 的接洽和 PR-0 开始。 |
Uh oh!
There was an error while loading. Please reload this page.
Feature Description
Add Li Auto Livis smart glasses as a first-party AionUi Channel.
A user who already owns Livis glasses should be able to open Settings → Remote Connections → Channels → Livis, sign in to the Li Auto service, copy the generated AgentID, and paste it into the 理想同学 app to complete the binding. After that, a request spoken to the glasses should enter AionUi as a channel conversation and the final answer should be returned to the app/glasses.
The channel should support:
The UI must state clearly that physical Livis glasses are required to use this channel.
Problem Statement
Li Auto currently documents this capability only for OpenClaw:
bash <(curl -fsSL https://li-center.lixiang.com/livis-pc-kit/openclaw/mac-linux/latest/setup.sh) --openclawThat installer deploys an OpenClaw-specific plugin and skill, writes OpenClaw runtime state, and restarts the OpenClaw gateway. An AionUi user therefore cannot connect Livis directly, even when the desired local Agents are already installed and available in AionUi. Running OpenClaw only as a transport would duplicate runtime/configuration and would bypass AionUi's existing Channel, Assistant, conversation, and diagnostics flows.
This is a new integration rather than a duplicate of the existing remote-Agent feature: remote Agents let AionUi connect outward to another Agent runtime, while Livis is an external input/output device connecting inward to AionUi.
Current Research
I checked the current official release and the latest AionUi/AionCore channel architecture on 2026-07-25.
latestinstaller currently resolves to Livis PC Kitv2.0.0. The release archive inspected for this proposal has SHA-25696702f8f2d335380cd2ca0ea92ee709deaa9d9bf5947ea628194515d04824506.These are static client findings, not claims that an unregistered AionUi client identity is already accepted by the production relay. The server-side identity contract still needs confirmation from Li Auto.
Proposed Solution
1. Use the existing Channel architecture
Implement Livis as a built-in Channel, not as an Electron-only side service and not as an OpenClaw wrapper.
On current
main, Channel orchestration and platform plugins live in AionCore, while AionUi owns the typed/api/channel/*adapter and the Settings UI. The clean split appears to be:livisChannel plugin and its protocol/auth state machine;assistant_idbinding for the default Assistant;settingsi18n module for every configured locale.The existing Channel status response does not carry AgentID or OAuth lifecycle state, so this should be a typed API addition rather than an undocumented renderer-side field.
If maintainers prefer to ship Livis first as a bundled extension, please confirm that direction before implementation. The requirement here is still a built-in user experience: no manual extension install, no OpenClaw dependency, and AgentID/auth state visible in AionUi Settings.
2. Authentication and binding
Proposed user flow:
AgentID is a binding identifier, not an authentication token. Refresh credentials must remain in the backend's encrypted credential storage, never in localStorage, renderer logs, or diagnostic exports.
3. Agent routing and conversation semantics
Codex: ...orClaude: .... The exact grammar should be agreed with maintainers and should reuse a common Channel command from Feature Request: Add /agent slash command to switch models in Telegram #2736 if that work is generalized.4. Reliability and security
The first version should be text-only and should include:
The official package currently identifies itself as OpenClaw and generates an OpenClaw-prefixed AgentID. A production AionUi release should use a Li Auto-approved OAuth client, client name, AgentID namespace, and branding. It should not indefinitely impersonate OpenClaw just because that is what the current relay accepts.
Acceptance Criteria
i18n-config.json; i18n types and validation pass.Test Plan
AionCore
AionUi
Physical-device E2E
I have access to Livis glasses and can perform the device-side steps. Once an implementation is ready, the E2E pass can cover:
After each step, the local AionUi/AionCore logs, conversation records, job IDs, selected Assistant, and returned result should be read back before calling it passed.
Delivery Plan
To keep changes atomic and respect the repository split:
Related work:
Out of Scope for the First Version
Open Questions for Maintainers
@eyaeya(or explicitly confirm that work may begin)?Feature Category
Other
Module
Channel Integrations
Additional Context
I will wait for the integration boundary to be confirmed and for the issue to be assigned (or explicitly approved) before starting implementation. No OpenClaw installer has been executed and no user OpenClaw configuration is required by this proposal.
原 issue:#3738
All reactions