标题选项

  1. 《智能家居2.0革命:AI Agent编排工程如何重构下一代生活空间?》
  2. 《从被动响应到主动预判:基于AI Agent Harness Engineering的全场景智能家居落地指南》
  3. 《告别伪智能!AI Agent编排驱动的智能家居2.0技术栈全解析》
  4. 《智能家居2.0实战:用AI Agent Harness Engineering打造会“思考”的生活空间》

引言

痛点引入

你是不是也有过这样的糟心体验?花了几万块配齐了号称“全屋智能”的设备:智能门锁、智能灯、智能空调、智能窗帘,结果用起来全是槽点:

  • 每个品牌都要单独下APP,想调个空调要翻3个页面找对应APP;
  • 联动规则全靠自己手动写,夏天设置了“开门自动开24度制冷”,到了冬天忘了改,一开门吹得你直哆嗦;
  • 明明加完班晚上10点才回家,系统按你平时6点下班的规则提前3小时开了空调,白白浪费几十块电费;
  • 你感冒发烧浑身难受,喊“把温度调高一点”,它只会机械调到你上次设置的26度,根本不知道你需要的是28度暖风+加湿器+自动关掉冷光灯。

说白了,我们现在用的所谓“智能家居1.0”,本质上就是“手动规则驱动的远程遥控器集合”,根本没有“智能”可言——它不会感知你的状态、不会理解你的需求、更不会主动预判你的想法,所有的联动都要你提前写死规则,稍微有一点场景变化就彻底失效。

文章内容概述

本文将带你深度拆解下一代智能家居的核心范式:由AI Agent Harness Engineering(AI Agent编排工程)驱动的智能家居2.0。我们会从核心概念讲起,对比1.0和2.0的本质差异,详解AI Agent编排工程的技术架构,最后手把手带你搭建一个可运行的最小智能家居2.0原型,从设备接入、Agent开发到多Agent协同全链路打通。

读者收益

读完本文你将:

  1. 清晰理解智能家居2.0和1.0的本质区别,掌握行业未来3-5年的发展方向;
  2. 搞懂AI Agent Harness Engineering的核心构成、技术原理和落地方法;
  3. 能够独立搭建一个最小可行的智能家居2.0原型,支持自然语言控制、主动需求预判、多设备自动协同;
  4. 了解智能家居2.0落地过程中的隐私保护、性能优化、设备兼容等核心痛点的解决方案。

准备工作

技术栈/知识要求

  1. 掌握Python基础语法,能看懂和编写简单的Python代码;
  2. 了解大语言模型(LLM)的基础用法,知道Prompt工程的基本逻辑;
  3. 了解MQTT协议的基本概念(智能家居设备的主流通信协议);
  4. 对AI Agent的基本概念有初步认知即可,没有相关经验也没关系,本文会从零讲解。

环境/工具要求

  1. 本地安装Python 3.10及以上版本;
  2. 安装MQTT Broker(推荐EMQX或Mosquitto,用来做设备通信的中间件);
  3. 拥有大模型API Key(可以用OpenAI GPT-3.5/4,也可以用国内的通义千问、文心一言、DeepSeek等,也可以用本地部署的开源大模型比如Llama 2、Qwen-7B);
  4. 可选:树莓派+常见智能家居传感器(温湿度、人体存在、门窗传感器等),没有硬件也可以用模拟设备代码跑通整个流程。

核心内容:手把手实战

前置核心概念解析

1. 核心概念定义

我们先把本文用到的核心术语全部解释清楚,避免后续混淆:

术语 全称 解释
智能家居1.0 Smart Home 1.0 以手动规则为核心的智能家居阶段,用户提前配置固定联动规则,设备仅做被动响应,无自主决策能力
智能家居2.0 Smart Home 2.0 以AI Agent为核心的主动智能阶段,系统主动感知用户状态、环境变化,自主决策设备联动,无需用户手动配置规则
AI Agent 人工智能代理 具备感知、决策、执行能力的独立智能单元,能自主完成特定领域的任务,比如环境控制Agent专门负责温湿度、灯光、窗帘的调节
Harness Engineering 编排工程 也叫AI Agent编排工程,是专门解决多Agent注册、调度、协同、冲突解决、能力复用的工程体系,相当于多Agent系统的“操作系统”
2. 智能家居1.0 vs 2.0 核心维度对比

我们用一张表格直观感受两者的差异:

对比维度 智能家居1.0 智能家居2.0
驱动核心 手动配置的固定规则 AI Agent自主决策
交互方式 被动响应(用户发指令才执行) 主动预判(不用用户说就提前做)
联动能力 最多支持3-5个设备的简单联动,规则冲突需要用户自己解决 支持跨域全设备协同,自动解决规则冲突
个性化程度 千人一面,所有用户用一样的规则 千人千面,自动学习每个用户的使用习惯
学习能力 无,规则不会自动更新 持续迭代,越用越懂用户
隐私保护 数据大多上传云端,无加密防护 支持边缘端本地运行,数据不出户
用户学习成本 高,需要用户学会写规则、配场景 零成本,自然语言交流就行
适配场景 仅支持简单固定场景 支持复杂动态场景(比如用户感冒、客人来访、小孩在家等特殊场景)
3. AI Agent Harness Engineering 核心构成

AI Agent编排工程是整个智能家居2.0的核心大脑,它由5个核心模块组成:

管理

调用

调用

调用

控制

Harness-Engine

string

引擎ID

datetime

启动时间

string

运行模式

Agent-注册中心

string

AgentID

string

能力描述

int

优先级

string

状态

任务调度器

string

任务ID

string

任务类型

string

分配的AgentID

int

优先级

协同协商层

string

冲突ID

string

冲突类型

string

解决方案

迭代优化模块

string

反馈ID

float

用户满意度

string

优化后的规则

设备接入层

string

设备ID

string

设备类型

string

通信协议

4. 智能家居2.0整体架构

我们先看整个系统的分层架构,对整体流程有个认知:

交互层

语音助手

手机APP

主动通知

控制面板

编排层

Agent注册中心

任务调度器

冲突协商模块

规则引擎

迭代优化模块

Agent层

环境控制Agent

安全监控Agent

健康看护Agent

娱乐服务Agent

能耗优化Agent

感知层

设备数据采集

用户行为采集

环境数据采集

外部数据对接<天气/日程>

上下文建模

通信层

MQTT

Zigbee

蓝牙

HTTP

设备层

智能灯

空调

门锁

温湿度传感器

人体存在传感器

智能手表

5. 核心决策数学模型

编排引擎的核心目标是最大化用户总效用,我们用如下公式定义总效用:
U=∑i=1nwi×Si−CU = \sum_{i=1}^{n} w_i \times S_i - CU=i=1nwi×SiC
其中:

  • UUU 是系统决策的总效用,值越高代表用户满意度越高;
  • nnn 是当前场景下需要满足的用户需求总数;
  • wiw_iwi 是第iii个需求的权重(比如安全需求的权重是10,娱乐需求的权重是2);
  • SiS_iSi 是第iii个需求的满足度,取值范围0-1;
  • CCC 是执行当前决策的成本(包括能耗成本、设备损耗成本、用户打扰成本等)。

编排引擎每次做决策的时候,都会遍历所有可能的执行方案,选择总效用UUU最高的方案执行。


步骤一:基础环境搭建

1. 安装MQTT Broker

我们用EMQX作为MQTT Broker,安装非常简单:

# 下载安装EMQX(以Ubuntu为例,其他系统可以参考EMQX官方文档)
curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash
sudo apt-get install emqx

# 启动EMQX
sudo systemctl start emqx

# 查看运行状态
sudo systemctl status emqx

启动之后访问http://localhost:18083就可以进入EMQX的控制台,默认用户名密码是admin/public

2. 安装Python依赖

我们需要用到的依赖包有:paho-mqtt(MQTT客户端)、langchain(Agent开发框架)、openai(大模型调用)、python-dotenv(环境变量管理)、fastapi(后台接口):

pip install paho-mqtt langchain openai python-dotenv fastapi uvicorn
3. 配置环境变量

在项目根目录创建.env文件,配置如下内容:

# MQTT配置
MQTT_HOST=127.0.0.1
MQTT_PORT=1883
MQTT_USERNAME=admin
MQTT_PASSWORD=public

# 大模型配置
LLM_TYPE=openai # 可以换成qwen、ernie等国内模型
OPENAI_API_KEY=你的OpenAI API Key
OPENAI_BASE_URL=https://api.openai.com/v1 # 国内可以用代理地址

# 系统配置
HOME_LOCATION=北京市
USER_PREFERENCE=温度偏好24度,灯光偏好暖光,睡眠偏好22点关灯

步骤二:设备接入层实现

我们先实现一个通用的MQTT设备客户端,用来接收设备上报的数据和下发控制指令:

# device/mqtt_client.py
import paho.mqtt.client as mqtt
import os
from dotenv import load_dotenv
import json

load_dotenv()

class MQTTClient:
    def __init__(self):
        self.client = mqtt.Client()
        self.client.username_pw_set(
            os.getenv("MQTT_USERNAME"),
            os.getenv("MQTT_PASSWORD")
        )
        self.client.on_connect = self.on_connect
        self.client.on_message = self.on_message
        self.callbacks = {} # 存储不同topic的回调函数
        
        # 连接MQTT
        self.client.connect(
            os.getenv("MQTT_HOST"),
            int(os.getenv("MQTT_PORT")),
            60
        )
        # 启动后台线程运行
        self.client.loop_start()
    
    def on_connect(self, client, userdata, flags, rc):
        print(f"MQTT连接成功,状态码:{rc}")
        # 订阅所有设备上报的topic
        client.subscribe("device/+/report")
    
    def on_message(self, client, userdata, msg):
        topic = msg.topic
        payload = json.loads(msg.payload.decode())
        # 调用对应topic的回调函数
        if topic in self.callbacks:
            self.callbacks[topic](payload)
    
    def register_callback(self, topic, callback):
        """注册指定topic的回调函数"""
        self.callbacks[topic] = callback
    
    def publish_command(self, device_id, command):
        """下发控制指令给设备"""
        topic = f"device/{device_id}/command"
        self.client.publish(topic, json.dumps(command))
        print(f"下发指令给设备{device_id}{command}")

# 单例模式
mqtt_client = MQTTClient()

接下来我们写一个模拟的温湿度传感器,用来上报数据:

# device/simulator/temp_hum_sensor.py
import time
import json
import random
from paho.mqtt import client as mqtt

client = mqtt.Client()
client.connect("127.0.0.1", 1883, 60)

device_id = "temp_hum_001"
while True:
    # 模拟温湿度数据
    temperature = round(random.uniform(20, 30), 1)
    humidity = round(random.uniform(30, 70), 1)
    payload = {
        "device_id": device_id,
        "timestamp": int(time.time()),
        "data": {
            "temperature": temperature,
            "humidity": humidity
        }
    }
    client.publish(f"device/{device_id}/report", json.dumps(payload))
    print(f"上报温湿度:温度{temperature}度,湿度{humidity}%")
    time.sleep(5)

步骤三:Agent层开发

我们先实现Agent的基类,所有具体的Agent都继承这个基类:

# agent/base_agent.py
from abc import ABC, abstractmethod
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
import os
from dotenv import load_dotenv

load_dotenv()

class BaseAgent(ABC):
    def __init__(self, agent_id, name, description, priority=5):
        self.agent_id = agent_id
        self.name = name
        self.description = description
        self.priority = priority # 优先级越高,决策权重越大
        self.llm = ChatOpenAI(
            model_name="gpt-3.5-turbo",
            api_key=os.getenv("OPENAI_API_KEY"),
            base_url=os.getenv("OPENAI_BASE_URL"),
            temperature=0
        )
    
    @abstractmethod
    def process(self, context):
        """
        处理上下文,返回决策结果
        context: 全局上下文,包含用户状态、环境数据、设备状态等
        返回格式:{"actions": [要执行的动作列表], "reason": "决策原因"}
        """
        pass
    
    def get_capability(self):
        """返回Agent的能力描述,给编排引擎用"""
        return {
            "agent_id": self.agent_id,
            "name": self.name,
            "description": self.description,
            "priority": self.priority
        }

接下来我们实现第一个具体的Agent:环境控制Agent,负责调节温度、湿度、灯光、窗帘:

# agent/env_control_agent.py
from .base_agent import BaseAgent
from langchain.prompts import ChatPromptTemplate

class EnvControlAgent(BaseAgent):
    def __init__(self):
        super().__init__(
            agent_id="env_control_001",
            name="环境控制Agent",
            description="负责控制家庭环境的温度、湿度、灯光、窗帘,根据用户偏好和环境数据调节到最舒适的状态",
            priority=7
        )
        self.prompt = ChatPromptTemplate.from_messages([
            ("system", """
            你是家庭环境控制专家,你的任务是根据当前上下文信息,给出最合适的环境控制方案。
            上下文包含:当前温湿度、天气、用户状态、用户偏好、设备状态。
            你可以控制的设备有:空调、加湿器、灯光、窗帘。
            返回格式必须是JSON,包含两个字段:
            1. actions: 数组,每个元素是一个动作,包含device_id、command、params
            2. reason: 字符串,说明你做这个决策的原因
            注意:如果当前环境已经符合用户偏好,就返回空的actions数组,不要做多余的操作。
            用户偏好:{user_preference}
            """),
            ("human", "当前上下文:{context}")
        ])
    
    def process(self, context):
        # 调用大模型生成决策
        chain = self.prompt | self.llm
        response = chain.invoke({
            "user_preference": os.getenv("USER_PREFERENCE"),
            "context": str(context)
        })
        # 解析返回的JSON
        import json
        try:
            result = json.loads(response.content)
            return result
        except Exception as e:
            print(f"环境控制Agent决策解析失败:{e}")
            return {"actions": [], "reason": "决策解析失败"}

我们再实现一个安全监控Agent,优先级最高,负责家庭安全:

# agent/security_agent.py
from .base_agent import BaseAgent

class SecurityAgent(BaseAgent):
    def __init__(self):
        super().__init__(
            agent_id="security_001",
            name="安全监控Agent",
            description="负责家庭安全监控,包括门锁状态、门窗状态、漏水、火灾检测,优先级最高,安全问题优先处理",
            priority=10
        )
    
    def process(self, context):
        actions = []
        reason = ""
        # 检查门锁状态:家里没人的时候如果门没锁,自动锁门
        if context.get("presence", {}).get("home", False) == False:
            if context.get("device_status", {}).get("lock_001", {}).get("status") == "unlocked":
                actions.append({
                    "device_id": "lock_001",
                    "command": "lock",
                    "params": {}
                })
                reason += "家里没人,门未锁,自动锁门;"
        # 检查漏水传感器
        if context.get("device_status", {}).get("water_sensor_001", {}).get("water_leak") == True:
            actions.append({
                "device_id": "water_valve_001",
                "command": "close",
                "params": {}
            })
            reason += "检测到漏水,自动关闭水阀;"
        return {"actions": actions, "reason": reason}

步骤四:Harness Engine编排引擎实现

编排引擎是整个系统的核心,负责Agent注册、任务调度、冲突解决、迭代优化:

# harness/engine.py
from agent.base_agent import BaseAgent
from device.mqtt_client import mqtt_client
import json

class HarnessEngine:
    def __init__(self):
        self.agent_registry = {} # Agent注册中心
        self.context = {} # 全局上下文
        # 初始化上下文
        self.context["user_preference"] = os.getenv("USER_PREFERENCE")
        self.context["location"] = os.getenv("HOME_LOCATION")
    
    def register_agent(self, agent: BaseAgent):
        """注册Agent到注册中心"""
        self.agent_registry[agent.agent_id] = agent
        print(f"注册Agent成功:{agent.name}")
    
    def update_context(self, key, value):
        """更新全局上下文"""
        self.context[key] = value
        print(f"更新上下文:{key} = {value}")
    
    def resolve_conflict(self, actions):
        """解决多个Agent决策的冲突,按优先级高的优先执行"""
        # 按优先级排序,优先级高的动作覆盖优先级低的
        action_map = {}
        for action in actions:
            device_id = action["device_id"]
            priority = action["priority"]
            if device_id not in action_map or priority > action_map[device_id]["priority"]:
                action_map[device_id] = action
        return list(action_map.values())
    
    def run(self):
        """运行编排引擎,执行一次决策流程"""
        print("=== 开始执行编排决策 ===")
        all_actions = []
        # 1. 遍历所有注册的Agent,生成各自的决策
        for agent in self.agent_registry.values():
            result = agent.process(self.context)
            actions = result.get("actions", [])
            reason = result.get("reason", "")
            print(f"Agent {agent.name} 决策:{reason},动作:{actions}")
            # 给每个动作加上Agent的优先级
            for action in actions:
                action["priority"] = agent.priority
                all_actions.append(action)
        # 2. 解决冲突
        final_actions = self.resolve_conflict(all_actions)
        print(f"最终执行的动作:{final_actions}")
        # 3. 下发执行指令
        for action in final_actions:
            mqtt_client.publish_command(
                action["device_id"],
                {"command": action["command"], "params": action["params"]}
            )
        # 4. 记录执行结果,用于后续迭代优化
        self.context["last_actions"] = final_actions
        print("=== 编排决策执行完成 ===")

# 单例模式
harness_engine = HarnessEngine()

现在我们把整个系统串起来,启动运行:

# main.py
from harness.engine import harness_engine
from agent.env_control_agent import EnvControlAgent
from agent.security_agent import SecurityAgent
from device.mqtt_client import mqtt_client
import time

# 注册Agent
harness_engine.register_agent(EnvControlAgent())
harness_engine.register_agent(SecurityAgent())

# 注册温湿度传感器的回调函数,更新上下文
def temp_hum_callback(payload):
    data = payload["data"]
    harness_engine.update_context("temperature", data["temperature"])
    harness_engine.update_context("humidity", data["humidity"])
    # 每次传感器上报数据就执行一次编排决策
    harness_engine.run()

mqtt_client.register_callback("device/temp_hum_001/report", temp_hum_callback)

# 保持程序运行
while True:
    time.sleep(1)

现在你运行main.py,再运行模拟的温湿度传感器代码,就能看到系统自动根据温湿度数据做出决策,调节空调和加湿器了。


步骤五:动态学习与迭代优化

我们给编排引擎加上迭代优化模块,让系统自动根据用户的反馈调整决策:

# harness/optimizer.py
import json
from langchain.chat_models import ChatOpenAI
import os

class Optimizer:
    def __init__(self):
        self.llm = ChatOpenAI(
            model_name="gpt-3.5-turbo",
            api_key=os.getenv("OPENAI_API_KEY"),
            base_url=os.getenv("OPENAI_BASE_URL"),
            temperature=0
        )
    
    def update_preference(self, context, user_feedback):
        """根据用户反馈更新用户偏好"""
        prompt = f"""
        你是用户偏好学习专家,根据当前上下文和用户的反馈,更新用户的偏好设置。
        当前用户偏好:{context.get("user_preference", "")}
        当前上下文:{str(context)}
        用户反馈:{user_feedback}
        返回更新后的用户偏好,只返回文本内容,不要其他解释。
        """
        response = self.llm.invoke(prompt)
        new_preference = response.content.strip()
        # 更新.env文件里的用户偏好
        with open(".env", "r") as f:
            lines = f.readlines()
        with open(".env", "w") as f:
            for line in lines:
                if line.startswith("USER_PREFERENCE="):
                    f.write(f"USER_PREFERENCE={new_preference}\n")
                else:
                    f.write(line)
        print(f"用户偏好已更新:{new_preference}")
        return new_preference

这样用户只要说一句“我觉得现在温度太低了,调高一点”,系统就会自动更新用户偏好,以后都会按照新的偏好来调节温度,不用用户手动改规则。


步骤六:自然语言交互实现

我们加一个自然语言处理接口,支持用户用语音或者文字控制:

# api/nlp.py
from fastapi import FastAPI
from pydantic import BaseModel
from harness.engine import harness_engine
from harness.optimizer import optimizer

app = FastAPI()
optimizer = Optimizer()

class NLPRequest(BaseModel):
    text: str
    user_id: str

@app.post("/nlp/process")
def process_nlp(request: NLPRequest):
    text = request.text
    # 先判断用户是要执行指令还是反馈意见
    prompt = f"""
    判断用户的输入是控制指令还是反馈意见,返回JSON格式:
    输入:{text}
    返回格式:{{"type": "command/feedback", "content": "解析后的内容"}}
    """
    response = harness_engine.agent_registry["env_control_001"].llm.invoke(prompt)
    result = json.loads(response.content)
    if result["type"] == "command":
        # 把指令加入上下文,执行编排
        harness_engine.update_context("user_command", result["content"])
        harness_engine.run()
        return {"status": "success", "message": "指令已执行"}
    else:
        # 是反馈意见,更新用户偏好
        new_preference = optimizer.update_preference(harness_engine.context, result["content"])
        return {"status": "success", "message": f"偏好已更新:{new_preference}"}

现在用户只要发请求给/nlp/process,说“我感冒了,把温度调高一点”,系统就会自动更新偏好,下次都会把温度调到适合感冒用户的范围。


进阶探讨

1. 隐私保护:边缘端本地部署

智能家居的数据非常敏感,涉及用户的作息、健康、出行等隐私信息,最好的解决方案是用本地部署的开源大模型,比如Qwen-7B、Llama 2-7B,所有数据都在本地处理,不上传到云端,完全避免数据泄露的风险。现在边缘端的硬件性能已经足够跑7B甚至13B的大模型,延迟可以控制在1秒以内,完全满足智能家居的需求。

2. 多住户适配

如果家里有多个住户,系统需要识别不同的用户,给每个用户分配独立的偏好配置。可以通过人脸识别、语音识别、手机蓝牙等方式识别用户身份,编排引擎会根据当前在场的用户的偏好加权计算,生成最适合的决策。

3. 性能优化:分级决策

为了降低延迟,我们可以把决策分成三级:

  • 紧急决策(比如安全告警):直接在设备端执行,不需要经过大模型,延迟<100ms;
  • 常见场景决策:在边缘端的本地大模型执行,延迟<1s;
  • 复杂场景决策:上传到云端的大模型执行,延迟<5s。

4. 异构设备兼容

不同品牌的设备用的协议不一样,我们可以在设备接入层加一个适配层,把不同协议的设备统一转换成标准的MQTT协议,不管是小米、华为还是苹果的设备,都可以统一接入到系统里,解决数据孤岛的问题。


行业发展与未来趋势

我们用一张表格看智能家居的发展历程和未来趋势:

时间阶段 发展阶段 核心技术 典型产品 用户体验 市场渗透率
2010-2015 单品智能阶段 WiFi连接、APP控制 智能灯泡、智能插座 可以远程控制单品,没有联动 <5%
2015-2020 智能家居1.0阶段 Zigbee协议、手动规则引擎 小米全屋智能、华为全屋智能 可以手动配置简单联动,规则死板 15%
2020-2025 智能家居2.0初期 大语言模型、AI Agent 带大模型的智能音箱、主动安防系统 支持自然语言控制,简单场景主动预判 30%
2025-2030 智能家居2.0成熟阶段 多Agent编排、边缘大模型 全场景主动智能家居系统 全场景自主决策,完全不需要用户干预 60%
2030+ 智能家居3.0阶段 通用人工智能、数字孪生 虚拟家庭管家 完全理解用户需求,和用户的生活无缝融合 >80%

总结

回顾要点

本文我们从当前智能家居1.0的痛点出发,讲解了智能家居2.0的核心范式:由AI Agent编排工程驱动的主动智能系统。我们详细拆解了AI Agent编排工程的核心构成,手把手带大家搭建了一个可运行的最小原型,实现了设备接入、Agent开发、多Agent协同、自然语言交互、动态学习等核心功能。

成果展示

通过本文的学习,你已经掌握了智能家居2.0的核心技术栈,你搭建的原型已经可以实现:

  1. 自动根据环境数据和用户偏好调节家庭环境;
  2. 自动处理安全告警,优先级最高;
  3. 支持自然语言控制,不用手动写规则;
  4. 自动根据用户的反馈更新偏好,越用越懂你。

鼓励与展望

现在智能家居2.0还处于早期阶段,有非常多的机会,不管你是开发者、产品经理还是行业从业者,都可以在这个领域做出非常有价值的产品。未来的智能家居一定是主动的、懂你的、不需要你操作的,它会像一个隐形的管家,默默把你的生活打理得井井有条,让你有更多的时间去做更有价值的事情。


行动号召

  1. 如果你动手跑通了本文的Demo,欢迎在评论区晒出你的运行效果;
  2. 如果你在实践过程中遇到任何问题,或者有更好的想法,欢迎在评论区留言讨论;
  3. 本文的完整代码已经上传到GitHub(地址:https://github.com/xxx/smarthome2.0-demo),欢迎Star和Fork。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐