Just A Rather Very Intelligent System:基于LLM的多智能体智能家居控制系统架构设计

2025年12月30日1 次阅读0 人喜欢
智能家居LLM多智能体系统架构设计TypeScriptHome AssistantLangChain人工智能

Just A Rather Very Intelligent System:基于LLM的多智能体智能家居控制系统架构设计

一个创新的智能家居控制系统,利用大语言模型(LLM)和多智能体架构,实现自然语言控制、上下文感知和智能决策。

? 项目愿景

想象一下,你回到家,只需说一句"我回来了",系统就能智能地:

  • ✅ 开启客厅灯光和空调
  • ✅ 播放你喜欢的音乐
  • ✅ 检查是否有待处理事项
  • ✅ 根据时间和天气调整环境

这就是 Just A Rather Very Intelligent System (JARVIS) 的核心理念——让智能家居真正"理解"你的意图,而不仅仅是执行命令。

?️ 系统架构概览

整体架构图

复制代码
┌─────────────────────────────────────────────────────────────┐
│                     用户交互层 (API Layer)                   │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐      │
│  │ HTTP API     │  │ 语音入口      │  │ Webhook      │      │
│  │ (Express)    │  │ (可选)       │  │ (米家场景)   │      │
│  └──────────────┘  └──────────────┘  └──────────────┘      │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│              协调器 (Orchestrator) - 系统大脑                │
│  ┌───────────────────────────────────────────────────────┐  │
│  │  单例模式,负责编排所有智能体和服务                      │  │
│  │  • 流程控制                                            │  │
│  │  • 错误处理                                            │  │
│  │  • 统计监控                                            │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
                            │
        ┌───────────────────┼───────────────────┐
        ▼                   ▼                   ▼
┌──────────────┐   ┌──────────────┐   ┌──────────────┐
│ 意图识别智能体│   │ 状态感知智能体│   │ 行为规划智能体│
│ IntentAgent  │   │ ContextAgent │   │ PlannerAgent │
└──────────────┘   └──────────────┘   └──────────────┘
        │                   │                   │
        ▼                   ▼                   ▼
┌──────────────┐   ┌──────────────┐   ┌──────────────┐
│ LLM 服务     │   │ HA 服务      │   │ 缓存服务     │
│ (OpenAI)     │   │ (设备控制)   │   │ (性能优化)   │
└──────────────┘   └──────────────┘   └──────────────┘

核心设计理念

多智能体协作架构:系统不是单一的AI,而是由多个专业智能体组成的团队,每个智能体负责特定职责,通过协调器进行协作。

? 智能体系统设计

1. 意图识别智能体 (IntentAgent)

职责:从自然语言中提取用户真实意图

工作流程

typescript 复制代码
// 规则匹配 → LLM精确识别 → 兜底策略
async execute(input: UserInput): Promise<Intent> {
  // 1. 规则快速匹配 (优化响应速度)
  const ruleBased = this.ruleMatch(input.message);
  if (ruleBased && ruleBased.confidence > 0.8) {
    return ruleBased;
  }

  // 2. LLM 精确识别
  try {
    return await this.llm.recognizeIntent(input.message);
  } catch (error) {
    // 3. 失败兜底
    return ruleBased || {
      intent: IntentType.GET_STATUS,
      confidence: 0.5,
      rawInput: input.message
    };
  }
}

支持意图类型

  • BATH_PREPARE: 洗澡准备(开启热水器、浴霸、浴室灯)
  • SLEEP: 睡觉模式(关闭灯光、调节空调、安防布防)
  • GO_OUT: 出门模式(关闭所有设备、启动安防)
  • GO_HOME: 回家模式(开启灯光、空调、播放音乐)
  • ADJUST_TEMP: 温度调节(根据季节和时间智能调节)
  • GET_STATUS: 状态查询(汇报当前家庭状态)

2. 状态感知智能体 (ContextAgent)

职责:实时获取和理解家庭环境状态

上下文信息提取

typescript 复制代码
async execute(): Promise<ContextState> {
  const allDevices = await this.ha.getStates();
  
  return {
    timestamp: new Date().toISOString(),
    timeOfDay: this.getTimeOfDay(),           // morning/afternoon/evening/night
    presence: this.detectPresence(allDevices), // 是否有人在家
    temperature: this.extractTemperature(allDevices),
    humidity: this.extractHumidity(allDevices),
    devices: this.filterRelevantDevices(allDevices) // 筛选相关设备
  };
}

智能设备筛选:不是所有设备都重要,系统会根据时间和场景筛选相关设备,减少LLM输入token。

3. 行为规划智能体 (PlannerAgent)

职责:结合意图和状态,生成可执行的行动计划

核心算法

typescript 复制代码
async execute(intent: Intent, context: ContextState) {
  // 1. 尝试缓存命中
  if (this.cache) {
    const cached = this.cache.query(intent, context);
    if (cached.hit) return { plan: cached.entry.plan, cacheHit: true };
  }

  // 2. 查找相似历史计划
  const similarPlans = this.findSimilarPlans(intent, context);

  // 3. LLM生成新计划
  const plan = await this.generateNewPlan(intent, context, similarPlans);

  // 4. 验证和优化
  const validatedPlan = await this.validateAndRefinePlan(plan, context);

  // 5. 存入缓存
  if (this.cache && validatedPlan.cacheable) {
    this.cache.store(intent, validatedPlan, context);
  }

  return { plan: validatedPlan, cacheHit: false };
}

计划生成示例

json 复制代码
{
  "planId": "bath_evening_20251230",
  "cacheable": true,
  "steps": [
    {
      "service": "switch.turn_on",
      "entityId": "switch.water_heater",
      "targetName": "燃气热水器",
      "description": "开启燃气热水器预热"
    },
    {
      "service": "switch.turn_on",
      "entityId": "switch.bathroom_heater",
      "targetName": "浴霸",
      "description": "打开浴霸预热"
    },
    {
      "service": "light.turn_on",
      "entityId": "light.bathroom",
      "targetName": "浴室灯",
      "description": "打开浴室灯",
      "data": { "brightness": 255 }
    }
  ]
}

? 核心服务层

1. LLM 服务 (LLMService)

功能

  • 意图识别:自然语言 → 结构化意图
  • 计划生成:意图+状态 → 执行计划
  • 计划验证:检查计划可行性

Prompt设计

typescript 复制代码
private INTENT_PROMPT = new ChatPromptTemplate([
  new SystemMessage(`你是一个智能家居意图识别专家。请分析用户输入,返回JSON格式:
{
  "intent": "bath_prepare|sleep|go_out|go_home|adjust_temperature|get_status",
  "confidence": 0.0-1.0,
  "timeHint": "optional"
}`),
  new MessagesPlaceholder("messages")
]);

2. Home Assistant 服务 (HomeAssistantService)

API封装

typescript 复制代码
// 获取设备状态
async getStates(): Promise<DeviceState[]>

// 调用服务控制设备
async callService(service: string, entityId: string, data?: any)

// 批量执行计划
async executePlan(plan: Plan): Promise<ExecutionResult>

安全机制

  • 白名单设备控制
  • 高风险操作确认
  • 所有操作可追溯

3. 缓存服务 (CacheService)

性能优化核心

  • 上下文感知缓存:基于时间、设备状态的智能缓存
  • 模糊匹配:微小差异场景下复用缓存
  • 智能淘汰:基于使用频率和成功率的清理策略

性能提升

  • 响应时间:2.5s → 0.3s (88%提升)
  • LLM调用:减少70%
  • 缓存命中率:>60%

? 完整工作流程

用户输入到执行的完整链路

复制代码
用户输入: "我要洗澡了"
    │
    ▼
┌─────────────────────────────────────────────┐
│  协调器 processUserIntent()                 │
└─────────────────────────────────────────────┘
    │
    ├─► 1. 意图识别 (IntentAgent)
    │   └─► "bath_prepare" (置信度: 0.95)
    │
    ├─► 2. 状态感知 (ContextAgent)
    │   └─► { time: "evening", temp: 24°C, devices: [...] }
    │
    ├─► 3. 计划生成 (PlannerAgent)
    │   ├─► 缓存查询 → 未命中
    │   ├─► LLM生成计划
    │   ├─► 验证优化
    │   └─► 存入缓存
    │
    └─► 4. 计划执行 (Orchestrator)
        ├─► 调用HA服务
        ├─► 记录执行结果
        └─► 更新缓存成功率

错误处理和降级策略

typescript 复制代码
// 每个环节都有降级策略
try {
  // 主流程
} catch (error) {
  // LLM失败 → 规则匹配兜底
  // HA失败 → 返回模拟数据
  // 缓存失败 → 继续执行,不影响主流程
}

? 技术栈选择

核心技术

  • 语言: TypeScript (类型安全、现代化)
  • 框架: Express (轻量、稳定)
  • LLM框架: LangChain + LangGraph (智能体编排)
  • HTTP客户端: Axios (可靠、功能丰富)
  • 验证: Zod (运行时类型验证)

为什么选择这些技术?

  1. TypeScript: 大型AI系统需要严格的类型安全
  2. LangChain: 成熟的LLM应用框架,支持智能体模式
  3. Express: 稳定的Web框架,适合API服务
  4. 单例模式: 协调器使用单例,确保全局状态一致

? 系统状态监控

实时统计指标

typescript 复制代码
interface SystemStatus {
  components: {
    llm: boolean;      // LLM服务健康
    ha: boolean;       // HA服务健康
    cache: boolean;    // 缓存服务健康
  };
  stats: {
    totalRequests: number;    // 总请求数
    successRate: number;      // 成功率
    cacheHits: number;        // 缓存命中数
  };
  timestamp: string;
}

监控端点

  • GET /api/status: 系统状态检查
  • GET /api/health: 健康检查
  • GET /api/cache/stats: 缓存统计

? 安全设计

1. 输入验证

typescript 复制代码
// Zod验证
const UserInputSchema = z.object({
  message: z.string().min(1).max(200),
  userId: z.string().optional(),
  context: z.record(z.any()).optional()
});

2. 速率限制

typescript 复制代码
// 生产环境启用
if (process.env.NODE_ENV !== "development") {
  app.use(rateLimitMiddleware(10, 60000)); // 1分钟10次
}

3. 设备白名单

  • 只允许控制预定义的设备
  • 高风险操作需要二次确认
  • 所有操作记录日志

? 创新亮点

1. 多智能体协作

不同于传统的单体AI,JARVIS采用专业分工的智能体团队:

  • 意图智能体:专注理解用户
  • 状态智能体:专注环境感知
  • 规划智能体:专注决策制定

2. 上下文感知缓存

传统缓存只看输入,JARVIS的缓存理解上下文:

typescript 复制代码
// 相同意图,不同时间,不同缓存
"我要洗澡了" (晚上) → 缓存A
"我要洗澡了" (早上) → 缓存B

3. 混合策略

规则匹配 + LLM识别,兼顾速度和准确性:

  • 简单场景:规则匹配(毫秒级)
  • 复杂场景:LLM识别(准确)
  • 失败降级:规则兜底(可靠)

4. Demo模式

无需真实HA环境即可测试:

bash 复制代码
curl -X POST http://localhost:3000/api/demo \
  -H "Content-Type: application/json" \
  -d '{"message": "我要洗澡了"}'

? 性能优化

1. 响应速度优化

  • 缓存命中: 0.3s
  • 规则匹配: 0.5s
  • 完整流程: 2-3s

2. 成本优化

  • LLM调用减少70%
  • Token使用优化(只传相关设备)
  • 批量操作减少API调用

3. 资源优化

  • 内存缓存,无外部依赖
  • 智能淘汰,防止内存泄漏
  • 按需加载设备状态

?️ 部署和配置

环境变量

bash 复制代码
# 必需
OPENAI_API_KEY=sk-...

# 可选
HOME_ASSISTANT_URL=http://homeassistant.local:8123
HOME_ASSISTANT_TOKEN=your_token
PORT=3000
NODE_ENV=production

启动方式

bash 复制代码
# 开发
pnpm dev

# 生产
pnpm build
pnpm start

Docker部署(推荐)

dockerfile 复制代码
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN pnpm install --prod
COPY dist ./dist
EXPOSE 3000
CMD ["node", "dist/app.js"]

? 扩展性设计

1. 多LLM支持

typescript 复制代码
interface LLMConfig {
  provider: "openai" | "anthropic" | "local";
  model: string;
  apiKey: string;
}

2. 多智能家居平台

typescript 复制代码
// 抽象接口
interface SmartHomeService {
  getStates(): Promise<DeviceState[]>;
  callService(service: string, entityId: string, data?: any): Promise<any>;
}

// Home Assistant实现
class HomeAssistantService implements SmartHomeService { }

// 小米米家实现(未来)
class MiHomeService implements SmartHomeService { }

3. 语音入口集成

  • 小爱音箱 → Webhook触发
  • Siri/Google Assistant → 自定义快捷指令
  • 麦克风 → WebSocket实时语音

? 使用示例

场景1:洗澡准备

bash 复制代码
curl -X POST http://localhost:3000/api/intent \
  -H "Content-Type: application/json" \
  -d '{"message": "我要洗澡了"}'

# 响应
{
  "success": true,
  "data": {
    "intent": "bath_prepare",
    "context": { "timeOfDay": "evening", "temperature": 24, ... },
    "plan": { "steps": [/* 3-5个设备操作 */] },
    "execution": { "status": "success", "results": [...] },
    "cacheHit": false
  }
}

场景2:回家

bash 复制代码
curl -X POST http://localhost:3000/api/intent \
  -H "Content-Type: application/json" \
  -d '{"message": "我回来了"}'

# 系统会根据时间自动调整:
# - 晚上:开灯、空调、音乐
# - 白天:只开空调、窗帘

场景3:状态查询

bash 复制代码
curl -X POST http://localhost:3000/api/intent \
  -H "Content-Type: application/json" \
  -d '{"message": "现在家里怎么样"}'

# 系统会汇报:
# - 温度湿度
# - 设备状态
# - 异常告警

? 用户体验设计

自然语言理解

系统支持多种表达方式:

  • "我要洗澡了" → bath_prepare
  • "准备洗澡" → bath_prepare
  • "洗个澡" → bath_prepare
  • "浴室准备" → bath_prepare

上下文记忆

  • 记住用户偏好(如空调温度)
  • 学习生活习惯(如晚上自动调暗灯光)
  • 适应季节变化(如冬季自动开启暖气)

智能反馈

  • 执行成功:简短确认
  • 执行失败:说明原因+建议
  • 部分成功:列出成功和失败项

? 未来规划

Phase 1: MVP (已完成)

  • ✅ 基础多智能体架构
  • ✅ 意图识别 + 状态感知
  • ✅ 计划生成 + 执行
  • ✅ 缓存优化
  • ✅ Demo模式

Phase 2: 智能化 (进行中)

  • ⏳ 学习型偏好记忆
  • ⏳ 多轮对话支持
  • ⏳ 情感识别(语气分析)
  • ⏳ 预测性控制(基于习惯)

Phase 3: 生态扩展

  • ⏳ 更多智能家居平台(小米、涂鸦等)
  • ⏳ 语音助手集成(小爱、Siri)
  • ⏳ 移动App
  • ⏳ 可视化配置界面

Phase 4: 高级功能

  • ⏳ 多用户支持 + 权限管理
  • ⏳ 场景自动化(IFTTT风格)
  • ⏳ 能源优化(智能调度)
  • ⏳ 故障自愈(设备异常处理)

? 设计哲学

1. 简单至上

  • 清晰的代码结构
  • 最小化配置
  • 开箱即用

2. 安全第一

  • 默认安全
  • 可审计
  • 可回滚

3. 性能优先

  • 缓存为王
  • 异步处理
  • 资源优化

4. 可扩展性

  • 模块化设计
  • 标准化接口
  • 插件化架构

? 贡献指南

欢迎贡献!你可以:

  • 提交Issue讨论需求
  • 提交PR改进代码
  • 分享使用场景
  • 完善文档

? 总结

JARVIS 不仅仅是一个智能家居控制系统,它代表了一种新的人机交互范式:

传统方式:用户 → 命令 → 设备
JARVIS方式:用户 → 意图 → 理解 → 决策 → 执行

通过LLM和多智能体架构,我们让系统真正"理解"用户,而不是简单地执行命令。这不仅提升了用户体验,也为智能家居的未来发展提供了新的思路。


项目地址: JustARatherVeryIntelligentSystem
技术栈: TypeScript + LangChain + Home Assistant
许可证: MIT

让科技真正理解生活,让智能家居更懂你。

加载评论中...
Just A Rather Very Intelligent System:基于LLM的多智能体智能家居控制系统架构设计 | 博客