编程 DeerFlow 2.0 深度解析:字节跳动开源的智能体时代操作系统

2026-04-17 05:39:08 +0800 CST views 8

DeerFlow 2.0 深度解析:字节跳动开源的"智能体时代操作系统"

引言:从"聊天"到"行动"的范式转移

2026年,AI领域正在经历一场静默而深刻的范式转移。我们正从"聊天时代"(The Chat Era)大步迈向"行动时代"(The Action Era)。用户不再满足于一个能回答问题的AI,他们需要一个能理解任务、调用工具、执行操作、并最终交付结果的智能代理(Agent)。

在这个转折点上,字节跳动开源的 DeerFlow 2.0 横空出世,登顶 GitHub Trending 榜首,被业界称为"智能体时代的操作系统"。这不是一次简单的功能迭代,而是从"深度研究框架"到"Super Agent 运行时基础设施"的彻底蜕变。

本文将从架构设计、核心原理、实战部署到性能优化,全方位拆解 DeerFlow 2.0 的技术内幕,带你理解为什么它能成为 2026 年最受开发者追捧的 Agent 框架。


一、背景:为什么需要 DeerFlow?

1.1 传统 Agent 框架的痛点

在 DeerFlow 出现之前,开发者构建 AI Agent 面临三大核心痛点:

痛点一:上下文溢出(Context Overflow)

传统 Agent 在处理复杂任务时,往往需要维护极长的对话历史。当上下文窗口被填满,模型会"遗忘"早期的关键信息,导致任务执行偏离目标。

# 传统 Agent 的典型问题:上下文爆炸
conversation_history = [
    {"role": "user", "content": "帮我分析这份财报..."},
    {"role": "assistant", "content": "好的,我需要先下载文件..."},
    # ... 经过 20 轮交互后 ...
    {"role": "assistant", "content": "等等,我们最初要分析的是什么来着?"}  # 遗忘!
]

痛点二:缺乏规划能力(Poor Planning)

大多数 Agent 采用简单的"思考-行动-观察"循环,面对需要多步骤、多依赖的复杂任务时,往往陷入死循环或产生幻觉。

痛点三:无法持久化记忆(No Persistent Memory)

每次重启对话,Agent 就"失忆"了。它无法记住用户的偏好、历史任务的上下文、或者之前学到的知识。

1.2 DeerFlow 的破局之道

DeerFlow 2.0 的核心设计理念可以概括为:给 Agent 一套完整的"操作系统"

就像操作系统为应用程序提供进程管理、内存管理、文件系统等服务一样,DeerFlow 为 Agent 提供了:

操作系统概念DeerFlow 对应能力
进程管理子智能体并行执行与调度
内存管理分层记忆架构(短期+长期)
文件系统制品管理与持久化存储
沙箱隔离Docker 容器化执行环境
驱动程序MCP Server 扩展协议

二、核心架构:Super Agent Harness 的设计哲学

2.1 整体架构概览

DeerFlow 2.0 采用**分层智能体系统(Hierarchical Agent System)**架构:

┌─────────────────────────────────────────────────────────────┐
│                      用户交互层                               │
│              (Web UI / CLI / API)                           │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                    Lead Agent (编排器)                        │
│         任务分解 · 子Agent调度 · 结果聚合 · 质量检查            │
└─────────────────────────────────────────────────────────────┘
                              │
              ┌───────────────┼───────────────┐
              ▼               ▼               ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│   Researcher    │ │    Coder        │ │   Analyst       │
│   Agent         │ │    Agent        │ │   Agent         │
│  (信息搜集)      │ │  (代码执行)      │ │  (数据分析)      │
└─────────────────┘ └─────────────────┘ └─────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                    基础设施层                                 │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐       │
│  │  Memory  │ │ Sandbox  │ │  Skills  │ │  MCP     │       │
│  │  System  │ │ (Docker) │ │  Market  │ │ Servers  │       │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘       │
└─────────────────────────────────────────────────────────────┘

2.2 Lead Agent:任务编排的大脑

Lead Agent 是整个系统的"大脑",负责:

  1. 任务分解(Task Decomposition):将复杂任务拆解为可并行执行的子任务
  2. 动态调度(Dynamic Scheduling):根据子任务类型,动态创建对应的 Worker Agent
  3. 依赖管理(Dependency Management):处理子任务间的依赖关系,确保执行顺序
  4. 结果聚合(Result Aggregation):收集各子 Agent 的输出,整合为最终交付物
  5. 质量检查(Quality Check):验证输出质量,必要时触发重试或修正
# Lead Agent 的任务分解示例
def decompose_task(user_request: str) -> List[SubTask]:
    """
    用户请求:"帮我调研一下新能源汽车市场,
              分析特斯拉和比亚迪的竞争优势,
              最后生成一份对比报告"
    """
    return [
        SubTask(
            id="research_tesla",
            type="research",
            description="搜集特斯拉最新动态、技术优势、市场表现",
            dependencies=[]
        ),
        SubTask(
            id="research_byd",
            type="research",
            description="搜集比亚迪最新动态、技术优势、市场表现",
            dependencies=[]
        ),
        SubTask(
            id="analyze_comparison",
            type="analysis",
            description="对比分析两家公司的竞争优势",
            dependencies=["research_tesla", "research_byd"]
        ),
        SubTask(
            id="generate_report",
            type="document",
            description="生成格式化的对比报告",
            dependencies=["analyze_comparison"]
        )
    ]

2.3 Worker Agent:专业化执行单元

Worker Agent 是实际执行任务的"手",每种类型都有特定的能力边界:

Worker 类型核心能力典型场景
Researcher网络搜索、信息聚合、来源验证市场调研、竞品分析
Coder代码编写、脚本执行、调试测试数据处理、自动化脚本
Analyst数据分析、图表生成、洞察提取报表制作、趋势分析
Writer文案撰写、格式排版、风格适配报告生成、文档整理

2.4 基于 LangGraph 的状态机实现

DeerFlow 2.0 的核心运行时基于 LangGraph 构建,这是一个专门为有状态 Agent 系统设计的框架。

2.4.1 图结构建模

from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated
import operator

# 定义状态结构
class AgentState(TypedDict):
    messages: Annotated[list, operator.add]  # 对话历史
    task_queue: list                         # 待执行任务
    current_task: dict                       # 当前执行任务
    artifacts: dict                          # 生成的制品
    memory: dict                             # 记忆数据

# 创建图
workflow = StateGraph(AgentState)

# 添加节点
workflow.add_node("plan", planning_node)           # 任务规划
workflow.add_node("dispatch", dispatch_node)       # 任务分发
workflow.add_node("execute", execution_node)       # 任务执行
workflow.add_node("review", review_node)           # 结果审核
workflow.add_node("finalize", finalize_node)       # 结果整理

# 添加边(定义流转规则)
workflow.set_entry_point("plan")
workflow.add_edge("plan", "dispatch")
workflow.add_edge("dispatch", "execute")

# 条件边:根据执行结果决定下一步
workflow.add_conditional_edges(
    "execute",
    should_continue,
    {
        "continue": "review",
        "retry": "execute",
        "error": END
    }
)

workflow.add_conditional_edges(
    "review",
    review_result,
    {
        "approved": "finalize",
        "needs_fix": "execute",
        "rejected": END
    }
)

workflow.add_edge("finalize", END)

# 编译图
app = workflow.compile()

2.4.2 状态持久化与断点续传

LangGraph 内置的 Checkpointer 机制让 DeerFlow 具备了"断点续传"能力:

from langgraph.checkpoint.sqlite import SqliteSaver

# 配置持久化存储
memory = SqliteSaver.from_conn_string(":memory:")

# 编译时启用检查点
app = workflow.compile(checkpointer=memory)

# 运行时可随时中断和恢复
config = {"configurable": {"thread_id": "task_001"}}

# 第一次执行
result = app.invoke(initial_state, config)

# 系统崩溃或手动中断后,可以从断点恢复
result = app.invoke(None, config)  # 自动从上次状态继续

这意味着 DeerFlow 可以:

  • 处理超长任务:数小时的研究任务可以分阶段执行
  • 支持人机协作:在关键节点暂停,等待人工确认后再继续
  • 故障恢复:系统重启后自动从断点恢复,不丢失进度

三、核心能力深度解析

3.1 模块化技能系统(Skills Market)

DeerFlow 的技能系统是其可扩展性的核心。每个 Skill 是一个独立的、可复用的能力单元。

3.1.1 Skill 的定义结构

# deerflow/skills/web_search/skill.yaml
name: web_search
description: 执行网络搜索并返回结构化结果
version: 1.0.0
author: deerflow-team

inputs:
  - name: query
    type: string
    description: 搜索关键词
    required: true
  - name: num_results
    type: integer
    description: 返回结果数量
    default: 10

outputs:
  - name: results
    type: list
    description: 搜索结果列表

dependencies:
  - requests
  - beautifulsoup4

sandbox:
  network: true
  filesystem: read-only

3.1.2 Skill 的实现示例

# deerflow/skills/web_search/skill.py
from deerflow.core import Skill, SkillContext
import requests
from bs4 import BeautifulSoup

class WebSearchSkill(Skill):
    """网络搜索技能"""
    
    def execute(self, context: SkillContext) -> dict:
        query = context.inputs.get("query")
        num_results = context.inputs.get("num_results", 10)
        
        # 执行搜索
        search_results = self._perform_search(query, num_results)
        
        # 内容提取与清洗
        cleaned_results = []
        for result in search_results:
            content = self._extract_content(result["url"])
            cleaned_results.append({
                "title": result["title"],
                "url": result["url"],
                "snippet": result["snippet"],
                "content": content[:2000]  # 限制长度
            })
        
        return {"results": cleaned_results}
    
    def _perform_search(self, query: str, num: int) -> list:
        # 实际搜索逻辑(可配置不同搜索引擎)
        pass
    
    def _extract_content(self, url: str) -> str:
        # 网页内容提取
        response = requests.get(url, timeout=10)
        soup = BeautifulSoup(response.text, 'html.parser')
        # 提取正文...
        return text

3.1.3 Skill 的动态加载

DeerFlow 支持运行时动态发现和加载 Skill:

# 从本地目录加载
skill_manager.load_from_directory("./custom_skills")

# 从 GitHub 加载
skill_manager.load_from_github(
    repo="deerflow/skills-repo",
    skill_path="data_analysis/excel_processor"
)

# 从 MCP Server 加载
skill_manager.load_from_mcp("filesystem-mcp-server")

3.2 Docker 沙箱执行环境

DeerFlow 的一大创新是给每个 Agent 分配了"自己的电脑"——一个隔离的 Docker 容器环境。

3.2.1 沙箱架构

┌─────────────────────────────────────────────────────────────┐
│                      Host 主机                               │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              DeerFlow Orchestrator                  │   │
│  │         (任务调度 · 状态管理 · 结果聚合)              │   │
│  └─────────────────────────────────────────────────────┘   │
│                              │                              │
│          ┌───────────────────┼───────────────────┐          │
│          ▼                   ▼                   ▼          │
│  ┌──────────────┐   ┌──────────────┐   ┌──────────────┐    │
│  │  Sandbox A   │   │  Sandbox B   │   │  Sandbox C   │    │
│  │ ┌──────────┐ │   │ ┌──────────┐ │   │ ┌──────────┐ │    │
│  │ │ Python   │ │   │ │ Node.js  │ │   │ │   Go     │ │    │
│  │ │ 3.11     │ │   │ │   20     │ │   │ │  1.22    │ │    │
│  │ ├──────────┤ │   │ ├──────────┤ │   │ ├──────────┤ │    │
│  │ │ /workspace│ │   │ │ /workspace│ │   │ │ /workspace│ │    │
│  │ │ /tmp      │ │   │ │ /tmp      │ │   │ │ /tmp      │ │    │
│  │ └──────────┘ │   │ └──────────┘ │   │ └──────────┘ │    │
│  └──────────────┘   └──────────────┘   └──────────────┘    │
└─────────────────────────────────────────────────────────────┘

3.2.2 代码执行示例

# Agent 在沙箱中执行代码
sandbox = Sandbox.create(
    image="deerflow/python:3.11",
    resources={"cpu": 2, "memory": "4g"},
    timeout=300
)

# 上传文件到沙箱
sandbox.upload_file("/workspace/data.csv", local_file)

# 执行 Python 脚本
result = sandbox.execute("""
import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
df = pd.read_csv('/workspace/data.csv')

# 数据分析
summary = df.describe()
print(summary)

# 生成图表
plt.figure(figsize=(10, 6))
df['value'].hist(bins=50)
plt.savefig('/workspace/chart.png')
""")

# 下载结果
chart_data = sandbox.download_file("/workspace/chart.png")

3.2.3 安全隔离机制

隔离维度实现方式安全效果
网络隔离可选禁用外网访问防止数据外泄
文件系统隔离只读或受限写权限保护宿主机文件
资源限制CPU/内存配额防止资源耗尽
执行超时强制超时机制防止死循环
镜像安全只读基础镜像防止环境篡改

3.3 分层记忆架构

DeerFlow 的记忆系统采用分层架构,解决了传统 Agent "失忆"的问题。

3.3.1 记忆类型

# 记忆系统架构
class MemorySystem:
    def __init__(self):
        # 短期记忆:当前对话上下文
        self.short_term = ConversationBufferMemory()
        
        # 工作记忆:当前任务的中间状态
        self.working = WorkingMemory()
        
        # 长期记忆:用户偏好、历史知识
        self.long_term = VectorStoreMemory(
            store=ChromaDB(),
            embedding=OpenAIEmbeddings()
        )
        
        # 程序记忆:Agent 学到的执行模式
        self.procedural = ProceduralMemory()

# 记忆写入示例
async def store_interaction(self, user_id: str, interaction: dict):
    # 1. 写入短期记忆
    self.short_term.add_message(interaction)
    
    # 2. 提取关键信息到长期记忆
    if interaction.get("is_important"):
        embedding = await self.embed(interaction["content"])
        self.long_term.add(
            user_id=user_id,
            content=interaction["content"],
            embedding=embedding,
            metadata={
                "timestamp": time.now(),
                "type": interaction["type"]
            }
        )
    
    # 3. 更新用户画像
    self._update_user_profile(user_id, interaction)

3.3.2 记忆检索策略

# 多路召回的记忆检索
async def retrieve_relevant_memory(
    self,
    query: str,
    user_id: str,
    k: int = 5
) -> List[Memory]:
    
    # 1. 向量检索(语义相似度)
    query_embedding = await self.embed(query)
    semantic_results = self.long_term.similarity_search(
        query_embedding, k=k, filter={"user_id": user_id}
    )
    
    # 2. 关键词检索(精确匹配)
    keyword_results = self.long_term.keyword_search(
        query, k=k, filter={"user_id": user_id}
    )
    
    # 3. 时序检索(最近记忆)
    recent_results = self.long_term.get_recent(
        user_id=user_id, limit=k, hours=24
    )
    
    # 4. 重排序与去重
    all_results = semantic_results + keyword_results + recent_results
    ranked = self.reranker.rerank(query, all_results)
    
    return ranked[:k]

3.4 MCP Server 集成

DeerFlow 2.0 支持 **MCP(Model Context Protocol)**协议,这是 Anthropic 推出的开放标准,用于 AI 模型与外部工具的标准化连接。

3.4.1 MCP 架构

┌─────────────────────────────────────────────────────────────┐
│                     DeerFlow Agent                          │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                 MCP Client                          │   │
│  │         (工具发现 · 调用编排 · 结果处理)              │   │
│  └─────────────────────────────────────────────────────┘   │
│                              │                              │
│          ┌───────────────────┼───────────────────┐          │
│          ▼                   ▼                   ▼          │
│  ┌──────────────┐   ┌──────────────┐   ┌──────────────┐    │
│  │ MCP Server   │   │ MCP Server   │   │ MCP Server   │    │
│  │  (文件系统)   │   │  (数据库)     │   │  (搜索引擎)   │    │
│  └──────────────┘   └──────────────┘   └──────────────┘    │
└─────────────────────────────────────────────────────────────┘

3.4.2 MCP Server 配置示例

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"]
    },
    "sqlite": {
      "command": "uvx",
      "args": ["mcp-server-sqlite", "--db-path", "/path/to/db.sqlite"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}

3.4.3 工具调用流程

# Agent 使用 MCP 工具
async def use_mcp_tool(self, server_name: str, tool_name: str, params: dict):
    # 1. 发现可用工具
    tools = await self.mcp_client.list_tools(server_name)
    
    # 2. 构建工具调用
    tool = next(t for t in tools if t.name == tool_name)
    
    # 3. 执行调用
    result = await self.mcp_client.call_tool(
        server=server_name,
        tool=tool_name,
        arguments=params
    )
    
    # 4. 处理结果
    return self._parse_tool_result(result)

# 实际使用示例
result = await agent.use_mcp_tool(
    server_name="filesystem",
    tool_name="read_file",
    params={"path": "/workspace/report.md"}
)

四、实战部署:从零搭建 DeerFlow 环境

4.1 环境准备

4.1.1 系统要求

组件最低配置推荐配置
CPU4 核8 核+
内存8 GB16 GB+
磁盘20 GB50 GB+ SSD
Docker20.10+24.0+
Python3.10+3.11+

4.1.2 安装依赖

# 1. 克隆仓库
git clone https://github.com/bytedance/deerflow.git
cd deerflow

# 2. 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/Mac
# 或 venv\Scripts\activate  # Windows

# 3. 安装依赖
pip install -r requirements.txt

# 4. 安装 DeerFlow
pip install -e .

4.2 配置文件

4.2.1 基础配置

# config.yaml
app:
  name: "DeerFlow"
  version: "2.0.0"
  debug: false

# LLM 配置
llm:
  provider: openai
  model: gpt-4-turbo-preview
  api_key: ${OPENAI_API_KEY}
  temperature: 0.7
  max_tokens: 4096

# 可选:配置多个模型
llm_profiles:
  planning:
    provider: openai
    model: gpt-4-turbo-preview
  execution:
    provider: openai
    model: gpt-3.5-turbo
  review:
    provider: openai
    model: gpt-4-turbo-preview

# 记忆系统配置
memory:
  type: chroma
  path: ./data/memory
  embedding_model: text-embedding-3-small

# 沙箱配置
sandbox:
  type: docker
  default_image: deerflow/python:3.11
  timeout: 300
  resources:
    cpu_limit: 2
    memory_limit: 4g

# MCP Server 配置
mcp:
  config_path: ./mcp_servers.json

# 日志配置
logging:
  level: INFO
  format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"

4.2.2 Docker Compose 部署

# docker-compose.yaml
version: '3.8'

services:
  deerflow:
    build: .
    ports:
      - "8080:8080"
    environment:
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - DEERFLOW_CONFIG=/app/config.yaml
    volumes:
      - ./config.yaml:/app/config.yaml
      - ./data:/app/data
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - chroma
      - redis

  chroma:
    image: chromadb/chroma:latest
    volumes:
      - chroma_data:/chroma/chroma
    ports:
      - "8000:8000"

  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data

volumes:
  chroma_data:
  redis_data:

4.3 启动服务

# 使用 Docker Compose 启动
docker-compose up -d

# 或使用命令行启动
deeflow server --config ./config.yaml --port 8080

4.4 第一个任务

# 使用 DeerFlow API
import requests

# 创建任务
response = requests.post("http://localhost:8080/api/tasks", json={
    "title": "市场调研:新能源汽车",
    "description": "调研特斯拉和比亚迪的最新动态,分析竞争优势,生成对比报告",
    "mode": "research"
})

task_id = response.json()["task_id"]
print(f"任务已创建: {task_id}")

# 查询任务状态
status = requests.get(f"http://localhost:8080/api/tasks/{task_id}").json()
print(f"任务状态: {status['state']}")

# 获取结果
if status['state'] == 'completed':
    result = requests.get(f"http://localhost:8080/api/tasks/{task_id}/result").json()
    print(result['content'])

五、性能优化与最佳实践

5.1 并发执行优化

# 配置并行 Worker 数量
concurrency:
  max_workers: 5
  max_parallel_tasks: 3

# 任务优先级调度
priority_weights:
  research: 1
  analysis: 2
  document: 3

5.2 缓存策略

# 启用结果缓存
cache:
  enabled: true
  type: redis
  ttl: 3600  # 1小时
  
# 缓存键生成策略
def generate_cache_key(task: dict) -> str:
    content = f"{task['type']}:{task['description']}:{task['params']}"
    return hashlib.md5(content.encode()).hexdigest()

5.3 成本控制

# 模型路由策略
def route_model(task_complexity: str) -> str:
    """根据任务复杂度选择模型"""
    routing = {
        "simple": "gpt-3.5-turbo",      # 简单任务用便宜模型
        "medium": "gpt-4o",              # 中等任务
        "complex": "gpt-4-turbo-preview" # 复杂任务用最强模型
    }
    return routing.get(task_complexity, "gpt-4o")

# Token 预算控制
max_tokens_per_task: 10000
max_tokens_per_session: 100000

5.4 监控与告警

# 集成 Prometheus 监控
metrics:
  enabled: true
  port: 9090
  
# 关键指标
task_duration_histogram
task_success_rate
token_usage_counter
memory_usage_gauge

六、与其他 Agent 框架的对比

维度DeerFlow 2.0AutoGPTLangChainDify
架构分层多Agent单Agent循环链式/图编排可视化工作流
沙箱Docker原生需自行集成部分支持
记忆分层持久化简单向量存储多种可选基础记忆
扩展性Skills + MCP插件系统工具集成插件市场
部署容器化本地灵活云服务
适用场景企业级复杂任务个人探索应用开发快速原型

七、总结与展望

DeerFlow 2.0 代表了 AI Agent 框架的一个重要进化方向:从"能对话"到"能交付"

它的核心价值在于:

  1. 工程化思维:将 Agent 系统视为一个需要精心设计的基础设施,而非简单的 Prompt 工程
  2. 分层架构:通过 Lead Agent + Worker Agent 的分层设计,实现了复杂任务的可靠分解与执行
  3. 企业级特性:沙箱隔离、状态持久化、记忆系统、MCP集成,满足生产环境需求
  4. 开放生态:Skills Market + MCP Server 的双扩展机制,避免 vendor lock-in

未来展望

随着多模态模型、具身智能的发展,DeerFlow 这类 Agent 基础设施将扮演越来越重要的角色。我们可以期待:

  • 更强的规划能力:结合 RL(强化学习)的 Agent 自我进化
  • 更丰富的工具生态:MCP Server 的标准化推动工具爆炸式增长
  • 更深的人机协作:Agent 成为真正的"数字同事",而非简单的工具

对于开发者而言,现在正是学习和实践 Agent 技术的最佳时机。DeerFlow 2.0 提供了一个优秀的起点,值得深入研究和应用。


参考资源


本文撰写于 2026 年 4 月,基于 DeerFlow 2.0 最新版本。技术发展迅速,建议读者关注官方文档获取最新信息。

推荐文章

Golang 几种使用 Channel 的错误姿势
2024-11-19 01:42:18 +0800 CST
Vue3中如何实现响应式数据?
2024-11-18 10:15:48 +0800 CST
Vue3中如何进行错误处理?
2024-11-18 05:17:47 +0800 CST
利用Python构建语音助手
2024-11-19 04:24:50 +0800 CST
资源文档库
2024-12-07 20:42:49 +0800 CST
rangeSlider进度条滑块
2024-11-19 06:49:50 +0800 CST
介绍Vue3的静态提升是什么?
2024-11-18 10:25:10 +0800 CST
实现微信回调多域名的方法
2024-11-18 09:45:18 +0800 CST
JavaScript 策略模式
2024-11-19 07:34:29 +0800 CST
如何配置获取微信支付参数
2024-11-19 08:10:41 +0800 CST
Vue3中如何处理跨域请求?
2024-11-19 08:43:14 +0800 CST
在 Docker 中部署 Vue 开发环境
2024-11-18 15:04:41 +0800 CST
Vue中如何处理异步更新DOM?
2024-11-18 22:38:53 +0800 CST
程序员茄子在线接单