当前位置: 首页 > news >正文

为Home Assistant AI构建持久记忆系统:PERMEAR架构详解与实战

1. 项目概述:为你的Home Assistant AI助手注入“灵魂”

如果你和我一样,是个重度Home Assistant用户,并且已经用上了Gemini或者OpenAI的对话助手,那你肯定遇到过这个让人头疼的问题:每次和它聊天,都像是第一次见面。你昨天刚告诉它“我习惯晚上十点关灯”,今天它又会问你“您希望几点关灯?”。这种“金鱼记忆”让所谓的智能助手显得一点也不智能,更像是一个健忘的客服机器人。

这就是我折腾PERMEAR(Persistent Memory Architecture)这个项目的初衷。我不想再忍受一个“失忆”的助手。我希望我的Home Assistant AI能真正成为一个家庭伙伴,它应该记住每个家庭成员的习惯,了解家里的设备状态,甚至能主动发现异常、学习规律,并随着时间推移变得越来越懂我。简单说,就是给它一个持久的“记忆”和一颗会“学习”的“灵魂”。

PERMEAR本质上是一套基于文件的持久化记忆与自我进化系统。它不依赖任何外部数据库或云服务,所有数据都安全地存储在你的HA配置目录里。通过一系列精心设计的Python脚本和自动化流程,它将你的对话助手从一个无状态的聊天机器人,转变为一个能够记忆、学习、监控和维护你智能家庭的智能管家。

这个项目已经在我的树莓派4(2GB内存)上稳定运行了相当长一段时间,它让我的Gemini助手从一个只会回答问题的“工具”,变成了一个会主动提醒我“客厅湿度偏高,建议开一下除湿机”,或者在我出差时自动说“根据你上周的作息,我已经把卧室的空调定时关闭了”的“家庭协管员”。

2. 核心架构与设计哲学

2.1 为什么是文件系统,而不是数据库?

在项目初期,我考虑过使用SQLite甚至更专业的时序数据库。但最终选择纯JSON文件,是基于几个非常实际的考量:

  1. 零依赖与极致轻量:HAOS(Home Assistant Operating System)本身已经包含了Python和PyYAML。使用JSON文件意味着不需要安装、配置和维护任何额外的数据库服务,这对于资源受限的设备(如树莓派)至关重要。部署就是复制文件,备份就是打包一个文件夹,简单到极致。
  2. 可读性与可调试性:所有记忆数据都以明文JSON存储。当助手做出一个让你意外的决定时,你可以直接打开soul.jsoninsights.json,看看它到底“学”到了什么,或者“想”了什么。这种透明性对于调试和建立信任是无价的。
  3. 与HA生态无缝集成:HA的核心配置(如configuration.yamlautomations.yaml)本身就是YAML/JSON友好的。文件系统方案可以轻松地被HA的!include指令、file传感器、或者通过SSH插件访问,与现有工具链完美契合。
  4. 足够的性能:对于家庭场景,记忆的读写频率并不高(每30分钟一次预简报,每天一次简报)。JSON文件的读写开销在这种低频场景下完全可以忽略不计,完全没必要引入数据库的复杂度。

注意:如果你家有上百个设备,每天产生数千次交互,那么JSON文件的解析效率可能会成为瓶颈。但对于99%的家庭用户,文件系统方案是更优解。

2.2 记忆结构:五大核心文件与七日循环日志

PERMEAR的记忆体系分为“永恒记忆”和“短期记忆”两层,由五个核心JSON文件和一套循环日志构成。

/config/memory/ ├── guidelines.json # 宪法:不可变的核心准则 ├── soul.json # 灵魂:助手的性格与核心认知 ├── users.json # 用户档案:家庭成员的习惯与偏好 ├── insights.json # 洞察:从日志中学习到的家庭模式 ├── monitored_entities.json # 监控实体清单:助手的“关注列表” └── daily/ # 短期记忆:七日循环日志 ├── monday.json ├── tuesday.json ... └── sunday.json

1. guidelines.json(宪法)这是系统的基石,定义了助手行为的绝对红线。例如:“未经明确确认,不得创建或修改任何自动化”、“必须优先考虑用户隐私”、“所有建议必须基于可用的实体状态”。这个文件在初始化后会被设置为只读(chmod 444),防止助手在自我学习过程中意外修改核心原则。它代表了开发者(也就是你)的意志。

2. soul.json(灵魂)这是助手的“人格”。它包含了助手对自己的描述、它的核心目标、沟通风格等。例如,你可以把它设定为“一个谨慎、乐于助人且注重隐私的英国管家风格”。这个文件每周日会由助手自己根据一周的交互进行反思和微调,实现“性格”的缓慢演化。

3. users.json(用户档案)记录每个家庭成员的信息:名字、常用的设备偏好(如“爸爸喜欢书房灯光偏暖”)、作息规律、甚至对话中透露的喜好(如“妈妈不喜欢太强的空调风”)。这些信息让助手能进行个性化交互。

4. insights.json(洞察)这是系统“学习”的成果。助手通过分析daily/目录下的日志,发现规律并形成洞察。例如:“每周三晚上8点后,客厅电视的开启概率高达90%”、“当室外温度高于30°C时,用户有80%的概率会询问空调状态”。这些洞察会被用于预判用户需求,让助手变得更主动。

5. monitored_entities.json(监控实体清单)这是整个系统的“感官中枢”。它列出了助手需要特别关注的实体(设备)。每个实体有两个关键属性:

  • monitor: true/false:如果为true,该实体的当前状态会在每次“预简报”时被读取并告知助手,让助手对家庭状态有全局感知。
  • events: []:一个数组,记录该实体状态变化的历史。例如,灯的开/关、门的开/闭。这些事件是生成insights.json(洞察)的原始数据。

6. daily/*.json(七日循环日志)每天的所有交互、系统事件、助手执行的操作都会被记录到对应的日期文件(如monday.json)。每周循环覆盖,只保留最近7天的详细记录。这既提供了短期上下文供助手回顾,又避免了存储空间的无限增长。这些日志是insights.json的数据来源。

2.3 运行周期:让记忆“活”起来的节拍器

记忆不是静态存储,需要周期性的“消化”和“反刍”。PERMEAR通过几个关键的时间周期,让记忆流动起来:

  • 每30分钟(08:00-20:00):预简报(Pre-briefing)这是助手的“主动巡检”。脚本build_prebriefing.py会运行,它做三件事:

    1. 检查HA系统日志,区分是普通ERROR还是助手自身组件引起的SELF_ERRORS
    2. 检查HA核心及插件更新。
    3. 读取所有monitor: true的实体状态。 然后生成一段简短的提示词,注入到下一次与助手的对话中。例如:“系统状态:一切正常。关注实体:客厅温度23°C,湿度65%(偏高)。你上次创建的‘晚上关灯’自动化在昨晚22:05成功触发。” 这让助手在用户发起对话前,就对家庭和自身健康状况了如指掌。
  • 每日21:00:每日简报(Daily Briefing)这是助手的“每日总结”。build_briefing.py会汇总一天的重要事件、系统状态更新,并从当天的日志中提取需要转化为长期记忆的要点,更新到users.jsonsoul.json。助手会基于这个简报,在对话中向你汇报一天概况。

  • 每周日00:05:每周编译(Weekly Compile)这是系统的“深度学习”时刻。weekly_compile.py会启动,它调用LLM(如Gemini)分析过去一周daily/的所有日志,执行以下任务:

    1. 提炼洞察:发现新的模式,更新insights.json
    2. 优化灵魂:根据一周的交互,微调soul.json中的性格描述。
    3. 更新用户档案:将零散的临时记忆,整合进users.json。 这个过程消耗的Token较多,所以要求LLM的max_tokens设置必须大于8192。
  • 按需触发:Telegram聊天、语音命令等即时交互。

这个周期设计模仿了人类的记忆处理:短期记录(日志) -> 定期回顾(每日简报) -> 深度整合与学习(每周编译),从而让AI的记忆不再是简单的数据堆积,而是有结构的、可进化的知识体系。

3. 详细部署与配置实战

3.1 环境准备与前置条件

在开始复制粘贴命令之前,请确保你的Home Assistant环境满足以下条件,这能避免90%的后续问题:

  1. Home Assistant版本 ≥ 2023.7:确保核心功能稳定。建议更新到最新稳定版。
  2. 已配置并测试可用的对话代理:强烈推荐Google Gemini 2.5 Flash。它在免费额度内足够强大,且响应速度很快。在HA中集成好,并能在“开发者工具 -> 服务”中调用conversation.process服务进行正常对话。
  3. 已配置Telegram Bot并启用轮询模式:这是PERMEAR与外界交互的主要通道。在configuration.yaml中正确配置telegram_bot,使用polling模式,并获取到你的chat_id
  4. 准备一个长效访问令牌:在HA侧边栏,点击你的用户名 -> “长期访问令牌” -> 创建,命名为“PERMEAR”,并妥善保存生成的令牌。
  5. 确认Python3可用:在HAOS的终端或SSH插件中运行python3 --version。PyYAML通常已内置。

实操心得:在配置Gemini时,务必在集成设置中取消勾选“推荐模型设置”,然后手动将“最大令牌数”设置为8192或更高。这是每周编译能成功运行的关键,否则LLM会因输出长度不足而中途截断,导致编译失败。

3.2 推荐安装方式:使用安装脚本(Option A)

对于大多数用户,使用项目提供的安装脚本是最安全、最省事的方法。它能交互式地引导你完成配置,并处理很多容易出错的细节。

# 1. 通过SSH或终端进入你的HA配置目录(通常是 /config 或 /homeassistant) cd /config # 2. 克隆PERMEAR仓库 git clone https://github.com/zzzmada/permear.git # 3. 进入目录并运行安装脚本 cd permear ./install.sh

脚本会依次执行以下操作,并询问你必要的信息:

  1. 检查目录结构并创建必要的文件夹(/config/memory/,/config/scripts/等)。
  2. 交互式地询问你的HA长效令牌,并自动创建和设置权限保护文件/config/.permear_token
  3. 引导你配置secrets.yaml,询问chat_idagent_idperson_entity等关键信息。
  4. 提供选项,将PERMEAR的配置作为HA的“包”安装(推荐),这样能让你的主configuration.yaml保持整洁。
  5. 将核心脚本和初始记忆文件复制到正确位置。
  6. guidelines.json设置为只读。

如果你希望将PERMEAR的自动化等配置安装到自定义的HA包目录,可以指定路径:

./install.sh /config automations scripts packages # 这会将自动化配置安装到 /config/packages/permear.yaml

安装脚本极大地简化了流程,特别是处理secrets.yaml和令牌文件权限这些容易踩坑的环节。

3.3 手动安装详解(Option B)

如果你想更深入地了解每个步骤,或者安装脚本在你的环境不适用,可以跟随以下手动步骤:

步骤1:创建目录结构在HA的配置目录(通常是/config)下执行:

mkdir -p /config/memory/daily /config/scripts /config/logs touch /config/automations/agent_automations.yaml

agent_automations.yaml是一个空文件,PERMEAR后续创建的自动化会存放在这里。

步骤2:验证自动化包含模式确保你的configuration.yaml中自动化是以目录合并模式引入的,这是PERMEAR动态管理自动化的前提。

# 在你的 /config/configuration.yaml 中检查或添加: automation: !include_dir_merge_list automations/

这意味着/config/automations/目录下所有.yaml文件都会被自动加载。

步骤3:创建并保护访问令牌将步骤1中获取的长效令牌保存到安全文件:

echo "你的长效访问令牌内容" > /config/.permear_token chmod 600 /config/.permear_token

chmod 600确保只有文件所有者可以读写,这是重要的安全措施。

步骤4:配置secrets.yaml编辑/config/secrets.yaml(如果不存在则创建),添加以下内容:

permear_chat_id: 123456789 # 替换为你的Telegram chat_id permear_agent_id: conversation.google_ai_conversation # 替换为你的对话代理ID permear_person_entity: person.your_name # 替换为HA中代表你的person实体
  • 如何找chat_id:给你的Telegram Bot发送/start,然后在HA的“开发者工具 -> 服务”中调用telegram_bot.get_updates服务,在返回的事件数据中查找chat_id
  • 如何找agent_id:在HA的“开发者工具 -> 服务”页面,服务列表里找到你的对话处理服务,如conversation.process。服务数据中的agent_id字段就是你需要填写的,通常是conversation.xxx的形式,而不是集成ID(如google_generative_ai)。

步骤5:调整LLM集成设置如前所述,进入你的Gemini或OpenAI集成设置,将max_tokens参数调整为8192或更高。

步骤6:复制核心文件从克隆的permear目录中,将文件复制到对应位置:

# 复制Python脚本 cp permear/scripts/*.py /config/scripts/ # 复制初始记忆文件 cp permear/memory/*.json /config/memory/ # 复制自动化模板 cp permear/automations/*.yaml /config/automations/

步骤7:添加主配置你有两种方式将PERMEAR的配置融入HA:

  • (推荐)包方式:将项目中的configuration_additions.yaml文件复制为/config/packages/permear.yaml。HA会自动加载packages目录下的所有配置。
  • 手动合并:将configuration_additions.yaml的内容复制粘贴到你主configuration.yaml的适当位置。

步骤8:锁定宪法文件

chmod 444 /config/memory/guidelines.json

这防止了任何进程(包括助手自己)意外修改这个核心文件。

步骤9:个性化定制现在可以编辑几个关键文件来定制你的助手:

  • /config/scripts/permear_config.py:这里是所有路径、常量、语言(DAYS字典)和自定义组件(SELF_COMPONENTS)的中央配置。根据你的系统路径修改BASE_PATH等。
  • /config/memory/soul.json:定义你助手的“性格”。是幽默还是严肃?是简洁还是详尽?
  • /config/memory/users.json:预先录入家庭成员的基本信息。
  • /config/memory/guidelines.json:在锁定前,仔细阅读并修改其中的核心行为准则,让它符合你的家庭规则。

步骤10:配置Telegram Bot轮询模式确保你的telegram_bot配置在configuration.yaml中类似这样:

telegram_bot: - platform: polling api_key: !secret telegram_api_key allowed_chat_ids: - !secret permear_chat_id

步骤11:更新LLM系统提示词在你的对话代理(如Gemini)配置中,找到系统提示词(或指令)区域,将PERMEAR的核心指令添加进去。这相当于给助手加载了“工作手册”。关键指令包括系统监控、自动化创建确认、实体监控管理等。

步骤12:关键一步!向助手暴露脚本这是最容易遗漏但至关重要的一步。HA的对话代理(LLM)无法直接调用shell_command服务。它只能调用暴露给它的HA脚本(script)实体。

  1. 重启HA,让上一步复制的配置生效。
  2. 进入“设置 -> 语音助手”。
  3. 找到并点击你正在使用的对话代理(如Google Generative AI Conversation Agent)。
  4. 在“暴露的实体”部分,找到并启用以下三个脚本:
    • script.permear_list_automations
    • script.permear_create_automation
    • script.permear_remove_automation
  5. 保存。

如果没有这一步,当你对助手说“创建一个自动化”,它会返回“函数不存在”的错误。

步骤13:初始实体发现最后,通过HA的“开发者工具 -> 服务”,调用shell_command.discover_entities服务。这会运行discover_entities.py脚本,扫描你HA中所有should_exposetrue的实体,并将它们初始添加到monitored_entities.json中。至此,安装完成。

4. 核心脚本原理与自定义指南

4.1 中央配置:permear_config.py

这是整个PERMEAR系统的大脑。所有其他脚本都从这里导入路径和设置。理解并正确配置它,是定制化的第一步。

# /config/scripts/permear_config.py 核心部分解读 import os # 基础路径 - 必须根据你的HA安装方式调整 # 对于HAOS标准安装,通常是 /config BASE_PATH = os.path.expanduser("/config") # 记忆文件路径 MEMORY_PATH = os.path.join(BASE_PATH, "memory") DAILY_PATH = os.path.join(MEMORY_PATH, "daily") GUIDELINES_FILE = os.path.join(MEMORY_PATH, "guidelines.json") SOUL_FILE = os.path.join(MEMORY_PATH, "soul.json") # ... 其他文件路径 # 星期映射 - 用于日志文件命名和提示词中的日期引用 # 如果你的HA系统语言是中文,需要修改这里 DAYS = { 0: "monday", 1: "tuesday", 2: "wednesday", 3: "thursday", 4: "friday", 5: "saturday", 6: "sunday" } # SELF_ERRORS 组件列表 # 当 ha_log_monitor.py 检查日志时,来自这些组件的错误会被标记为“助手自身的错误” SELF_COMPONENTS = [ "permear", "script.permear", "automation.permear", "shell_command.permear", "conversation" # 如果你的对话代理是 conversation.* ] # 你需要根据你HA中实际注册的组件名称来调整这个列表

自定义要点

  • BASE_PATH:如果你把HA装在非标准路径,这里是首要修改项。
  • DAYS:确保与你的系统语言和日志文件命名一致。
  • SELF_COMPONENTS:这是实现“自我错误监控”的关键。当ha_log_monitor.py运行时,它会扫描HA日志。如果错误来源包含这个列表中的字符串,就会被归类为SELF_ERRORS,并在预简报中特别提醒助手“这是你自己组件出的问题,需要关注”。你需要根据你实际安装PERMEAR后产生的组件名来更新它。查看HA日志中PERMEAR相关错误的前缀即可知道。

4.2 记忆的写入与读取:append_daily.py 与 build_briefing.py

append_daily.py是系统的“笔”。每当发生需要记录的事件(如一次对话、一个自动化被触发、一个实体状态变化),对应的自动化或脚本就会调用这个服务,向当天的日志文件(如tuesday.json)追加一条记录。记录格式是结构化的JSON,包含时间戳、事件类型、相关实体、内容摘要等。

build_briefing.py是系统的“阅读器”和“摘要员”。它每天21点运行,主要做三件事:

  1. 汇总:读取当天的日志文件,提取关键事件(如创建的自动化、重要的对话、系统警告)。
  2. 检查:调用ha_updates_check.py检查系统更新,调用ha_log_monitor.py检查错误日志。
  3. 生成提示:将以上信息组合成一段结构化的自然语言“简报”,并准备一份需要转化为长期记忆的要点列表。这段简报会在下次用户与助手对话时,作为系统提示的一部分注入,让助手“知道”今天发生了什么。

注意事项:简报生成依赖于LLM的上下文长度。如果一天内事件非常多,简报可能会很长。确保你的LLMmax_tokens设置足够大,能容纳系统提示+简报+用户对话。

4.3 实体监控中枢:monitored_entities.json 与 generate_buffer_events.py

monitored_entities.json文件是PERMEAR感知世界的核心。它的结构如下:

{ "light.living_room": { "monitor": true, "events": [ {"timestamp": "2024-01-01T20:00:00", "old_state": "off", "new_state": "on"}, {"timestamp": "2024-01-01T23:00:00", "old_state": "on", "new_state": "off"} ] }, "climate.bedroom_ac": { "monitor": false, "events": [] } }
  • monitor字段:为true的实体,其状态会在预简报中被读取。你可以通过告诉助手“监控客厅温度”来动态添加,或通过discover_entities.py脚本批量初始化。
  • events字段:记录状态变化历史。这个历史记录不是自动填充的,而是通过HA的自动化来捕获的。

这就需要generate_buffer_events.py脚本。这个脚本的作用是根据monitored_entities.jsonevents数组里的记录,动态生成或更新HA的自动化YAML配置。它会在/config/automations/agent_automations.yaml文件中,为每个需要监听事件的实体,插入一段类似下面的自动化代码:

- id: "permear_buffer_light_living_room" alias: "PERMEAR Buffer - light.living_room" trigger: - platform: state entity_id: light.living_room action: - service: script.append_daily data: event_type: "entity_state_changed" entity_id: "light.living_room" new_state: "{{ trigger.to_state.state }}" old_state: "{{ trigger.from_state.state }}"

这个自动化确保每当light.living_room状态变化,就会触发append_daily服务,将这次变化记录到当天的日志中,进而更新monitored_entities.json里该实体的events数组,并最终可能被提炼为insights.json中的一条规律。

这是一个巧妙的双向绑定:JSON文件定义要监控什么 -> Python脚本根据JSON生成自动化 -> 自动化运行时向JSON回写数据。所有配置的源头都在于monitored_entities.json这个文件。

4.4 自我进化引擎:weekly_compile.py

这是PERMEAR最“智能”的部分,也是消耗计算资源(Token)最多的环节。它每周日凌晨运行,执行以下流程:

  1. 数据准备:读取过去七天daily/目录下的所有日志文件,合并成一份庞大的“周记”。
  2. 调用LLM:将这份周记、当前的soul.jsonusers.jsoninsights.json以及guidelines.json一起,构造一个复杂的提示词,发送给配置的LLM(如Gemini)。
  3. 任务指令:提示词要求LLM完成多项任务:
    • 提取洞察:从周记中发现新的、稳定的模式(例如,“用户通常在周六上午10点后才会打开客厅窗帘”)。
    • 更新用户档案:将周记中关于用户的零散新信息(如“用户提到最近开始在家锻炼”)整合到users.json的对应字段。
    • 反思与优化灵魂:根据一周的交互,思考当前soul.json中的性格设定是否合适,是否需要微调以更好地服务用户(例如,将“说话风格:正式”调整为“说话风格:正式但偶尔可加入轻松语气”)。
  4. 解析与应用:脚本期望LLM以严格的JSON格式返回结果。然后,它会解析这个JSON,并安全地将更新合并到对应的记忆文件中(insights.json,users.json,soul.json)。

这个过程模拟了人类的反思和学习,是让助手从“执行命令”走向“理解习惯”的关键。

重要提示:每周编译需要LLM具有强大的长文本理解和生成能力,且max_tokens必须设置得足够高(≥8192),否则LLM可能无法输出完整的更新内容,导致编译失败。建议在初期手动运行几次weekly_compile.py,观察HA日志中的输出,确保流程顺畅。

5. 避坑指南与常见问题排查

即使按照步骤操作,也可能会遇到一些问题。以下是我在部署和长期使用中总结的“坑”和解决方案。

5.1 权限与路径问题

问题:脚本执行失败,日志显示“Permission denied”或“File not found”。

  • 检查1:令牌文件权限。确保/config/.permear_token的权限是600,并且所属用户是HA进程的运行用户(在HAOS中通常是roothomeassistant)。
  • 检查2:Python脚本路径。所有.py脚本都应放在/config/scripts/下,并且在shell_command中调用时使用完整路径,如python3 /config/scripts/build_briefing.py
  • 检查3:记忆文件目录。确保/config/memory/及其子目录存在,且HA进程有读写权限。在HAOS中,/config目录通常权限是正确的。

5.2 LLM代理相关问题

问题:助手说“函数不存在”或无法创建自动化。

  • 解决方案:100%确认你已经完成了3.2章节步骤12。进入“设置 -> 语音助手 -> 你的对话代理 -> 暴露的实体”,确保script.permear_list_automations等三个脚本已被勾选启用。这是最常被忽略的一步。
  • 深层原因:HA的对话代理框架出于安全考虑,不允许LLM直接调用shell_command服务(这相当于执行任意命令)。必须通过一个“中介”——也就是HA的script实体。PERMEAR提供的这三个脚本,就是包装了shell_command调用的安全中介。

问题:每周编译失败,LLM返回错误或输出被截断。

  • 检查1:max_tokens设置。再次确认你的Gemini/OpenAI集成设置中,max_tokens参数已设置为8192或更高。
  • 检查2:系统提示词冲突。PERMEAR的指令需要添加到LLM的系统提示词中。如果原有提示词非常长且复杂,可能会与PERMEAR的指令冲突。尝试简化原有提示词,或将PERMEAR指令放在更靠前的位置。
  • 检查3:Token消耗:每周编译的提示词可能非常长。如果一周的日志过多,可能会超过模型上下文窗口。可以考虑在weekly_compile.py中增加一个日志筛选逻辑,只提取过去一周中“重要”的事件(如状态变化、自动化创建、错误日志)进行编译,过滤掉常规的问候语等。

5.3 自动化与实体发现问题

问题:实体状态变化没有被记录到events中。

  • 排查步骤
    1. 检查/config/automations/agent_automations.yaml文件,查看是否生成了对应实体的自动化。例如,搜索permear_buffer_light_living_room
    2. 检查该自动化的trigger中的entity_id是否正确。
    3. 在HA的“开发者工具 -> 事件”页面,监听state_changed事件,手动触发一下该实体(如开灯),看是否有事件产生。如果没有,说明实体本身可能有问题。
    4. 如果有事件,但自动化没触发,检查自动化是否被禁用,或者action中的服务调用script.append_daily是否正确。
    5. 最后,检查/config/scripts/append_daily.py脚本是否有语法错误,可以在HA日志中查看相关错误。

问题:discover_entities.py脚本没有找到我想要的实体。

  • 原因:这个脚本默认只发现HA实体注册表中should_expose属性为true的实体。很多集成默认不暴露实体给语音助手。
  • 解决方案
    1. 在HA的“设置 -> 设备与服务”中,找到对应实体的集成。
    2. 点击“配置”,进入该设备的实体列表。
    3. 找到你想要的实体,确保“暴露给语音助手”或类似的选项被勾选。
    4. 重新运行shell_command.discover_entities服务。

5.4 日志与调试技巧

高效查看PERMEAR日志: PERMEAR的脚本主要通过HA的logger组件打印信息。为了更清晰地查看,可以在你的configuration.yaml中为PERMEAR相关组件设置独立的日志级别:

logger: default: info logs: custom_components.permear: debug # 如果你将来把PERMEAR做成自定义组件 script.permear: debug automation.permear: debug shell_command.permear: debug

这样,所有PERMEAR相关的信息都会以DEBUG级别输出,方便追踪流程。

手动测试脚本: 当某个脚本(如build_briefing.py)运行不正常时,不要只依赖自动化。可以通过HA的“开发者工具 -> 服务”手动调用对应的shell_command,然后立即去“设置 -> 日志”中查看完整的输出和错误信息。这是定位问题最快的方法。

“幽灵实体”清理: 在HA升级或集成重载后,有时会出现“不可用”的实体。这些实体可能会干扰discover_entities.py。定期去“设置 -> 实体”页面,筛选“状态:不可用”,然后批量删除这些实体,可以保持系统的整洁。

5.5 性能与资源优化

PERMEAR在设计上已经很轻量,但在资源紧张的设备(如树莓派Zero)上仍可优化:

  1. 调整运行频率:预简报默认在8点到20点每30分钟运行一次。如果你觉得频繁,可以在permear_config.py中调整PREBRIEFING_ACTIVE_HOURS或修改相关自动化的触发条件,改为每小时一次。
  2. 精简监控实体:不是所有实体都需要monitor: trueevents记录。只对你真正关心、并且状态变化有分析价值的实体开启完整监控。对于只需要知道状态的实体,只设置monitor: true即可,避免生成不必要的状态变化自动化,减少日志量。
  3. 压缩日志daily/日志文件会每周覆盖。但如果日志增长过快,可以考虑修改append_daily.py,只记录关键事件,或者定期(如每月)手动归档并清空旧的日志文件。

经过以上步骤,你应该拥有了一个具备持久记忆和自我学习能力的Home Assistant AI助手。它不再是你问一句答一句的机器人,而是一个逐渐了解你的家庭、你的习惯,并能主动提供帮助的智能管家。从记住每个人的灯光偏好,到发现空调的使用规律并自动优化,再到监控系统健康并报告自身错误,PERMEAR让开源家庭自动化的“智能”二字,向前迈出了扎实的一步。

http://www.jsqmd.com/news/789191/

相关文章:

  • ContextMenuManager:让Windows右键菜单变得清爽高效的终极解决方案
  • Docker 私有仓库 Harbor 搭建与镜像推送(系列第六篇:企业私有镜像仓库实战)
  • 探索Noto Emoji:打造跨平台表情符号统一体验的完整指南
  • Xplorer文件属性查看器:从新手到专家的完整指南
  • LinkSwift网盘直链下载助手:九大网盘一键获取真实下载地址的终极解决方案
  • 2026年AI技术大会餐饮安排:3大颠覆性变革、5类参会者精准营养画像、72小时动态餐食推演系统全解析
  • 2026年毕业生必备:论文被AI标记?三招避三大坑,高效降AI率! - 降AI实验室
  • JiYuTrainer终极解析:5步掌握极域电子教室破解与系统控制实战技巧
  • 优选驾考小程序(30276)
  • BB响实战指南:从基础设置到飞行安全的全流程解析
  • 神经网络波函数:AI破解量子多体问题维度灾难的新范式
  • 2026济南钻石回收靠谱商家推荐|专业高价,安全变现不套路 - 奢侈品回收测评
  • Win10任务管理器里那个NVIDIA Display Container LS服务到底是干嘛的?关了它会影响玩游戏吗?
  • 别再死记硬背了!用这个“水管模型”5分钟搞懂三极管电流放大原理
  • K8s 集群快速搭建(系列第八篇:单机/多节点集群实战)
  • 面试拷打:Java 泛型 T / E / K / V / ?——只会用不会讲,答完面试官直接拒绝
  • 元学习在药物虚拟筛选中的应用:MetaScreener项目深度解析
  • Switchyard:AI应用统一运行时层,简化多模型API集成与Web会话管理
  • YOLOv11自然生态鸟类目标分割数据集-3858张-flying-bird-1
  • 构建可穿戴设备ECG AI分析平台:从异构数据到实时推理的工程实践
  • 告别玄学调参:手把手教你为TensorRT INT8量化编写Python校准器(附完整代码)
  • 纯Bash脚本构建轻量级AI助手:架构解析与实战部署
  • 基于MCP协议实现AI安全运维:easypanel-mcp部署与实战指南
  • Adobe-GenP 3.0终极指南:免费解锁Adobe全系列创意软件
  • QMC音频格式终极转换指南:如何快速免费解锁QQ音乐加密文件
  • 5分钟快速掌握Jable视频下载:终极Chrome插件完整教程
  • 极化码ORBGRAND译码算法与FPGA实现研究【附代码】
  • AI助手如何通过MCP协议调用Google Trends进行市场趋势分析
  • 三星 Galaxy Watch 或能预测昏厥发作,但误报问题待解,仍需更多实际测试
  • 从俄罗斯电商数据到销量预测:手把手教你用LightGBM搞定Kaggle经典赛题Predict Future Sales