李锋镝的博客

  • 首页
  • 时间轴
  • 评论区显眼包🔥
  • 左邻右舍
  • 博友圈
  • 关于我
    • 关于我
    • 另一个网站
    • 我的导航站
    • 网站地图
    • 赞助
  • 留言
  • 🚇开往
Destiny
自是人生长恨水长东
  1. 首页
  2. AI
  3. 正文

Agent 开发完全指南:从核心原理到实战落地(2025 进阶版)

2025年11月19日 2047点热度 2人点赞 0条评论

AI Agent 作为具备自主感知、决策与执行能力的智能实体,正在重塑人机协作模式。它不再是被动响应查询的“问答机器”,而是能主动拆解复杂任务、调用工具、持续迭代的“智能助手”——比如帮你预订符合预算的机票、自动整理会议纪要、甚至完成端到端的代码开发。

本文将从核心原理、关键技术、实战开发、框架选型四个维度,系统拆解 Agent 开发全流程,补充丰富的模型选型细节、工具链优化、故障排查技巧和企业级落地方案,帮你从“入门”到“精通”,构建真正能解决实际问题的 Agent 系统。

一、Agent 核心认知:不止是“LLM+工具”

1. 什么是真正的 AI Agent?

一个完整的 Agent 系统必须具备三大核心能力,缺一不可:

  • 环境感知:获取外部信息(如用户需求、日历数据、API 响应);
  • 自主决策:将复杂任务拆解为可执行的步骤(如“预订机票”→“查航班→筛价格→锁座位→完成支付”);
  • 执行反馈:调用工具完成操作,并根据结果调整策略(如支付失败时切换支付方式)。

对比传统 AI 系统,Agent 的核心差异在于“自主性”——无需人类逐步指导,就能独立完成闭环任务。

2. Agent 系统的核心架构

用户需求 → 感知模块(解析需求+获取上下文)→ 决策模块(任务拆解+工具选择)→ 执行模块(调用工具+处理结果)→ 反馈模块(优化策略+更新记忆)→ 输出结果
  • 感知模块:负责解析自然语言需求、提取关键信息(如时间、地点、预算);
  • 决策模块:核心是 LLM,负责任务规划和工具调度;
  • 执行模块:包含工具库和协议层(如 MCP),负责与外部系统交互;
  • 反馈模块:记录任务执行状态,优化后续决策(如记忆失败的支付方式)。

二、基础选型:Agent 的“大脑”——LLM 选择策略

LLM 是 Agent 的核心决策引擎,选择时需综合“任务场景、工具调用能力、成本、响应速度”四大维度,而非盲目追求大参数量。

1. 模型能力评估维度

评估维度 关键指标 影响场景
工具调用能力 函数调用准确率、参数解析正确率 API 调用、工具调度
上下文理解 长文本处理能力、多轮对话一致性 复杂任务拆解、多步骤推理
代码生成能力 语法正确率、逻辑完整性 编程类 Agent、自动化脚本生成
知识更新能力 训练数据时效性、外部知识融合能力 新闻摘要、实时数据查询
成本与速度 推理延迟、Token 价格 高频调用场景、实时响应需求

2. 场景化模型选型指南(含国产/国外模型对比)

任务场景 推荐模型 选型理由 注意事项
文案生成 GPT-5、通义千问 Max 语言流畅度高、创意性强 成本较高,适合商业级内容生产
代码开发 Claude 4、Qwen3-Coder-Plus 语法严谨、逻辑清晰、支持多语言 对复杂算法任务需配合代码审查工具
工具调用/Agent 决策 通义千问 Max、DeepSeek-R1、GPT-4o 工具调用准确率高、任务拆解能力强 建议通过少量微调适配特定工具集
实时数据处理 本地部署 Llama 3-8B、百川 2-7B 响应速度快、无 API 调用成本 需配合 RAG 补充实时知识
多模态任务 GPT-4o、通义千问 VL Max 支持文本、图像输入,适合跨模态工具调用 推理成本较高,需控制调用频率

3. 模型使用技巧

  • 混合模型策略:复杂决策用大模型(如通义千问 Max),简单任务用小模型(如 Llama 3-8B),平衡效果与成本;
  • 微调优化:针对特定工具集(如企业内部 API)微调模型,提升工具调用准确率;
  • 量化部署:使用 INT8/INT4 量化,在本地设备或边缘节点部署小模型,降低延迟。

三、核心技术 1:上下文管理——让 Agent 拥有“记忆”

Agent 需在多轮对话和复杂任务中保持上下文一致性,否则会出现“健忘”(如忘记用户之前的需求)。上下文管理的核心是“高效存储、精准提取、合理截断”。

1. 上下文的三大类型

  • 对话记忆:存储多轮对话中的关键信息(如用户说“我是奥特曼”);
  • 任务记忆:记录任务执行状态(如“机票已查询,待支付”);
  • 知识记忆:存储外部知识(如企业规章制度、产品信息),通常通过 RAG 实现。

2. 上下文管理实现方案

(1)基础方案:滑动窗口记忆

适用于短对话场景,只保留最近 N 轮对话,避免上下文过长导致 Token 浪费:

import dotenv
from openai import OpenAI

dotenv.load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_BASE_URL"))

class SlidingWindowMemory:
    def __init__(self, window_size=5):
        self.window_size = window_size
        self.context = [{"role": "system", "content": "你是有记忆的助手,只保留最近5轮对话"}]

    def update(self, role, content):
        self.context.append({"role": role, "content": content})
        # 超过窗口大小,删除最早的用户-助手对话对
        if len(self.context) > self.window_size * 2 + 1:  # system + 5轮(user+assistant)
            self.context.pop(1)  # 删除最早的user消息
            self.context.pop(1)  # 删除对应的assistant消息

# 实战使用
memory = SlidingWindowMemory(window_size=5)
messages = ["我是奥特曼", "猜猜我是谁", "我喜欢打怪兽", "你记得我的爱好吗", "再猜我是谁"]

for msg in messages:
    memory.update("user", msg)
    response = client.chat.completions.create(
        model="qwen-max",
        messages=memory.context,
        temperature=0.3
    )
    assistant_msg = response.choices[0].message.content
    memory.update("assistant", assistant_msg)
    print(f"用户:{msg}\n助手:{assistant_msg}\n")

(2)进阶方案:关键信息提取记忆

通过 LLM 提取对话中的关键信息(如姓名、需求、偏好),只存储核心内容,减少冗余:

def extract_key_info(conversation):
    """提取对话中的关键信息"""
    prompt = f"从以下对话中提取关键信息(姓名、身份、需求、偏好),用JSON返回:\n{conversation}"
    response = client.chat.completions.create(
        model="qwen-max",
        messages=[{"role": "user", "content": prompt}],
        response_format={"type": "json_object"}
    )
    return json.loads(response.choices[0].message.content)

# 使用示例
conversation = "用户:我是奥特曼,喜欢打怪兽,想预订周五去上海的机票,预算800元以内。\n助手:好的,我帮你查询合适的航班。"
key_info = extract_key_info(conversation)
print(key_info)
# 输出:{"身份": "奥特曼", "偏好": "打怪兽", "需求": "预订周五去上海的机票", "预算": "800元以内"}

(3)注意事项

  • 上下文截断策略:优先保留最近的消息和关键信息,而非机械删除;
  • 避免信息过载:单轮上下文 Token 数建议控制在模型窗口的 50% 以内,保证推理效率;
  • 持久化存储:长任务需将上下文存储到数据库(如 Redis),避免服务重启后丢失。

四、核心技术 2:RAG 检索增强——让 Agent 拥有“知识库”

基础记忆只能存储对话信息,RAG(检索增强生成)能让 Agent 调用外部知识库(如文档、数据库),解决“知识过时”和“幻觉”问题。

1. RAG 核心流程(优化版)

知识库构建:文档收集 → 文本分块 → 向量化 → 向量存储 → 索引优化
检索生成:用户查询 →  query 向量化 → 相似性检索 → 重排序 → 上下文拼接 → LLM 生成

2. 关键优化点(提升检索准确率)

(1)分块策略选择

分块策略 适用场景 参数建议
固定大小分块 无结构文本(如新闻、博客) 大小:512-1024 Token,重叠率:10%-15%
语义分块 结构化文档(如技术手册、论文) 基于 Sentence-BERT 聚类,相似度阈值:0.7
递归分块 长文档(如书籍、合同) 一级分块:章节,二级分块:512 Token

(2)向量数据库选型

向量数据库 优势 劣势 适用场景
Chroma 轻量易部署、支持内存模式 不支持大规模数据(≤100万条) 原型开发、小规模知识库
Milvus 支持亿级数据、水平扩展 部署复杂、资源消耗高 企业级应用、大规模知识库
Pinecone 云托管、开箱即用 海外服务、成本较高 快速验证、海外项目
Elasticsearch 支持向量+关键词混合检索、生态成熟 向量检索性能不如专用数据库 已有 ES 集群、混合检索场景

(3)实战:搭建文档问答 RAG 系统(完整代码)

# 1. 安装依赖
# pip install langchain sentence-transformers chromadb pypdf

# 2. 知识库构建
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import SentenceTransformerEmbeddings
from langchain.vectorstores import Chroma

# 加载文档
loader = PyPDFLoader("企业产品手册.pdf")
documents = loader.load()

# 分块
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1024,
    chunk_overlap=128,
    length_function=len
)
chunks = text_splitter.split_documents(documents)

# 向量化与存储
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
db = Chroma.from_documents(chunks, embeddings, persist_directory="./chroma_db")
db.persist()

# 3. 检索与生成
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQAWithSourcesChain

llm = ChatOpenAI(model="qwen-max", temperature=0.3)
chain = RetrievalQAWithSourcesChain.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=db.as_retriever(search_kwargs={"k": 3}),  # 检索Top3相关片段
    return_source_documents=True
)

# 测试
query = "产品A的定价是多少?"
result = chain({"question": query})
print(f"答案:{result['answer']}")
print(f"来源:{[doc.metadata['source'] for doc in result['source_documents']]}")

3. RAG 常见问题排查

  • 检索不准确:调整分块大小、更换更优的嵌入模型(如 bge-m3)、启用混合检索;
  • 生成内容无来源:检查检索结果是否为空,增加 k 值(检索数量);
  • 知识库更新慢:使用增量更新接口,避免全量重建向量库。

五、核心技术 3:工具调用——让 Agent 拥有“手脚”

工具是 Agent 与外部世界交互的桥梁,核心是“标准化注册、智能调度、可靠执行”。

1. 工具的常见类型

工具类型 示例 实现方式
API 调用工具 天气 API、机票预订 API 封装 HTTP 请求,定义参数格式
数据处理工具 数据库查询、Excel 分析 集成 SQLAlchemy、Pandas 等库
文件操作工具 读取 PDF、生成报告 调用 PyPDF2、python-docx 等库
本地命令工具 执行 Shell 命令、启动程序 封装 subprocess 模块(注意安全校验)

2. 工具调用的核心流程

  1. 工具注册:定义工具名称、描述、参数格式(需标准化,让 LLM 能解析);
  2. 工具选择:LLM 根据用户需求和任务状态,选择合适的工具;
  3. 参数填充:LLM 从上下文提取参数(如“上海”作为目的地);
  4. 执行与反馈:调用工具,处理返回结果(成功则继续,失败则重试或切换工具)。

3. 实战:工具调用完整实现(含错误重试)

import dotenv
import requests
from openai import OpenAI
from tenacity import retry, stop_after_attempt, wait_exponential

dotenv.load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_BASE_URL"))

# 1. 定义工具
tools = [
    {
        "type": "function",
        "function": {
            "name": "query_flight",
            "description": "查询航班信息,支持出发地、目的地、日期、舱位类型、预算筛选",
            "parameters": {
                "type": "object",
                "properties": {
                    "departure": {"type": "string", "description": "出发城市,如北京"},
                    "destination": {"type": "string", "description": "目的城市,如上海"},
                    "date": {"type": "string", "description": "出行日期,格式YYYY-MM-DD"},
                    "cabin": {"type": "string", "enum": ["经济舱", "商务舱"], "default": "经济舱"},
                    "max_price": {"type": "int", "description": "最高预算,单位元"}
                },
                "required": ["departure", "destination", "date"]
            }
        }
    }
]

# 2. 工具实现(含重试机制)
@retry(
    stop=stop_after_attempt(3),
    wait=wait_exponential(multiplier=1, min=2, max=10)
)
def query_flight(params):
    """查询航班 API,模拟实际调用"""
    departure = params["departure"]
    destination = params["destination"]
    date = params["date"]
    cabin = params.get("cabin", "经济舱")
    max_price = params.get("max_price", 1000)

    # 模拟 API 调用(实际替换为真实航班 API)
    response = requests.get(
        "https://api.example.com/flights",
        params={
            "departure": departure,
            "destination": destination,
            "date": date,
            "cabin": cabin,
            "max_price": max_price
        },
        timeout=10
    )
    response.raise_for_status()  # 抛出 HTTP 错误
    return response.json()

# 3. Agent 工具调用逻辑
async def agent_call_tool(user_query):
    # 第一步:LLM 分析需求,决定是否调用工具
    completion = await client.chat.completions.create(
        model="qwen-max",
        messages=[
            {"role": "system", "content": "你是机票预订助手,可调用工具查询航班,参数需准确提取"},
            {"role": "user", "content": user_query}
        ],
        tools=tools,
        tool_choice="auto"
    )
    response = completion.choices[0].message

    # 第二步:处理工具调用
    if response.tool_calls:
        for tool_call in response.tool_calls:
            tool_name = tool_call.function.name
            tool_params = json.loads(tool_call.function.arguments)

            try:
                # 调用工具
                tool_result = query_flight(tool_params)

                # 第三步:将结果返回给 LLM,生成最终回答
                final_completion = await client.chat.completions.create(
                    model="qwen-max",
                    messages=[
                        {"role": "system", "content": "根据工具返回的航班信息,整理成自然语言回答"},
                        {"role": "user", "content": user_query},
                        response,
                        {"role": "tool", "content": json.dumps(tool_result), "tool_call_id": tool_call.id}
                    ]
                )
                return final_completion.choices[0].message.content
            except Exception as e:
                return f"查询航班失败:{str(e)}"
    else:
        return response.content

# 测试
print(await agent_call_tool("帮我查2025-08-15从北京到上海的经济舱,预算800元以内"))

4. 工具调用优化技巧

  • 参数校验:在工具函数中添加参数合法性校验(如日期格式、城市名称);
  • 失败重试:对网络依赖的工具(如 API 调用),添加重试机制,避免偶发失败;
  • 工具优先级:为工具设置优先级(如本地工具优先于远程 API),提升响应速度;
  • 安全控制:限制危险工具(如 Shell 命令)的使用权限,避免恶意调用。

六、核心技术 4:MCP 协议——工具的“标准化接口”

当 Agent 需要调用多个工具或跨框架协作时,MCP(模型上下文协议)能解决工具接口不统一、兼容性差的问题,实现“一次开发,多框架复用”。

1. MCP 协议的核心价值

  • 标准化工具描述:统一工具名称、参数格式、返回结构,让 LLM 无需适配不同工具;
  • 跨框架兼容:支持 LangChain、Dify、AutoGen 等主流 Agent 框架;
  • 分布式部署:工具可独立部署为 MCP 服务器,支持多 Agent 共享;
  • 版本管理:支持工具版本迭代,不影响已集成的 Agent。

2. 实战:Python 实现 MCP 服务器与客户端

(1)MCP 服务器(提供时间工具和航班查询工具)

# 安装依赖:pip install mcp-server fastapi uvicorn
from mcp.server.fastmcp import FastMCP
import datetime
import pytz

app = FastMCP("tool-server")

# 工具1:获取当前时间
@app.tool()
def get_current_time(timezone: str = "Asia/Shanghai") -> str:
    """获取指定时区的当前时间,默认北京时间"""
    tz = pytz.timezone(timezone)
    now = datetime.datetime.now(tz)
    return now.strftime("%Y-%m-%d %H:%M:%S")

# 工具2:查询航班(复用之前的 query_flight 函数)
@app.tool()
def query_flight(departure: str, destination: str, date: str, cabin: str = "经济舱", max_price: int = 1000) -> dict:
    """查询航班信息"""
    # 复用之前的 query_flight 实现
    return query_flight({"departure": departure, "destination": destination, "date": date, "cabin": cabin, "max_price": max_price})

if __name__ == "__main__":
    # 以 SSE 传输方式启动,支持远程调用
    app.run(transport="sse", host="0.0.0.0", port=8000)

(2)MCP 客户端(Agent 调用 MCP 工具)

# 安装依赖:pip install mcp-client
from mcp.client import MCPClient

async def agent_call_mcp_tool(user_query):
    # 连接 MCP 服务器
    client = MCPClient("http://localhost:8000/mcp")
    await client.connect()

    # 获取所有可用工具
    tools = await client.list_tools()
    # 转换为 OpenAI 工具格式
    openai_tools = [
        {
            "type": "function",
            "function": {
                "name": tool["name"],
                "description": tool["description"],
                "parameters": tool["inputSchema"]
            }
        }
        for tool in tools
    ]

    # 后续流程与之前的工具调用一致,只需将工具调用改为 MCP 客户端调用
    completion = await client.chat.completions.create(
        model="qwen-max",
        messages=[{"role": "user", "content": user_query}],
        tools=openai_tools,
        tool_choice="auto"
    )
    response = completion.choices[0].message

    if response.tool_calls:
        for tool_call in response.tool_calls:
            tool_result = await client.call_tool(
                name=tool_call.function.name,
                arguments=json.loads(tool_call.function.arguments)
            )
            # 生成最终回答...
    return final_answer

3. MCP 部署建议

  • 本地开发:使用 STDIO 传输方式,无需网络配置;
  • 团队协作:使用 SSE 传输方式,部署在局域网或云服务器;
  • 生产环境:添加身份认证(如 API Key),限制未授权访问;
  • 负载均衡:多个 MCP 服务器可通过 Nginx 负载均衡,提升可用性。

七、开发框架选型:LangChain vs Dify

Agent 开发框架能大幅降低开发成本,选择时需根据“开发灵活性、团队技术栈、项目规模”决策。

1. 两大框架深度对比

对比维度 LangChain Dify
核心定位 开发者工具包(灵活定制) 低代码平台(快速落地)
开发方式 代码编程(Python/JS) 可视化拖拽
灵活性 极高(支持自定义工作流、工具、模型) 中等(预设节点为主,自定义节点需开发)
学习成本 较高(需理解组件原理) 较低(可视化操作,无需深入底层)
团队适配 技术团队(开发者主导) 产品/运营+技术(协同开发)
部署方式 自定义部署(Docker/K8s) 自托管/云服务(一键部署)
适用场景 复杂 Agent、企业级定制化需求 快速原型、简单 Agent、内部工具

2. 框架实战建议

(1)LangChain:复杂 Agent 开发(多 Agent 协作示例)

# 安装依赖:pip install langchain langgraph crewai
from crewai import Agent, Task, Crew
from langchain.chat_models import ChatOpenAI

# 定义 Agent
flight_agent = Agent(
    role="航班查询专家",
    goal="查询符合用户需求的航班,筛选预算内的最优选项",
    backstory="熟悉各大航空公司 API,擅长筛选高性价比航班",
    llm=ChatOpenAI(model="qwen-max")
)

payment_agent = Agent(
    role="支付专家",
    goal="完成航班支付,处理支付失败场景",
    backstory="熟悉多种支付方式,能解决支付超时、额度不足等问题",
    llm=ChatOpenAI(model="qwen-max")
)

# 定义任务
query_task = Task(
    description="查询2025-08-15北京到上海的经济舱,预算800元以内",
    agent=flight_agent
)

payment_task = Task(
    description="使用招商银行卡支付选中的航班,处理可能的支付失败",
    agent=payment_agent,
    dependencies=[query_task]  # 依赖航班查询结果
)

# 启动多 Agent 协作
crew = Crew(agents=[flight_agent, payment_agent], tasks=[query_task, payment_task])
result = crew.kickoff()
print(result)

(2)Dify:快速搭建文档问答 Agent

  1. 登录 Dify 平台(自托管或云服务),创建“知识库”,上传文档;
  2. 在“工作流”模块,拖拽“知识库检索”“LLM 生成”节点,配置参数;
  3. 发布应用,获取 API 或直接使用 Web 界面,5 分钟即可完成部署;
  4. 进阶:开发自定义节点(如对接企业内部 API),扩展 Dify 能力。

八、企业级落地:Agent 部署与优化

1. 部署架构建议

  • 小规模场景:单服务器部署(LLM + 向量数据库 + MCP 服务器);
  • 中大规模场景:微服务架构(LLM 服务、向量数据库集群、MCP 服务集群、API 网关);
  • 高可用设计:多区域部署、服务熔断、降级机制(如 LLM 不可用时切换备用模型)。

2. 性能优化技巧

  • 模型优化:使用模型量化(INT8)、Flash Attention 加速推理;
  • 缓存策略:缓存高频工具调用结果(如天气查询)、RAG 检索结果;
  • 异步处理:工具调用采用异步方式,提升并发能力;
  • 资源隔离:不同 Agent 任务使用独立资源池,避免相互影响。

3. 安全注意事项

  • 权限控制:工具调用需验证用户权限(如仅管理员可执行 Shell 命令);
  • 输入校验:过滤恶意输入(如 SQL 注入、命令注入);
  • 数据加密:传输过程(HTTPS)和存储(敏感信息加密)均需加密;
  • 审计日志:记录 Agent 操作日志,便于追溯问题。

九、常见问题排查

问题现象 可能原因 解决方案
Agent 工具调用错误 工具参数格式错误、LLM 解析失败 优化工具描述、添加参数示例、微调 LLM 适配工具
上下文丢失 窗口大小不足、记忆策略不当 采用滑动窗口+关键信息提取、增大模型上下文窗口
RAG 检索不准确 分块不合理、嵌入模型不合适 调整分块策略、更换 bge-m3 等优质嵌入模型
响应速度慢 LLM 推理慢、工具调用网络延迟 模型量化、本地部署小模型、工具结果缓存
支付/API 调用失败 网络问题、参数错误、权限不足 添加重试机制、参数校验、完善权限配置

十、总结:Agent 开发的核心心法

Agent 开发不是“LLM + 工具”的简单拼接,而是围绕“自主决策”构建的闭环系统。核心心法有三点:

  1. 需求导向:先明确 Agent 要解决的具体问题,再选择模型和工具,避免过度设计;
  2. 分层优化:基础层(LLM 选型)→ 增强层(RAG + 工具)→ 工程层(部署 + 优化),逐层迭代;
  3. 用户中心:Agent 的自主性需服务于用户,而非盲目追求“全自动化”,必要时保留人工干预入口。

随着技术的发展,Agent 正从“单任务工具”进化为“多任务助手”,未来将融入更多多模态能力、自主进化能力。对于开发者而言,掌握 Agent 开发,不仅能提升工作效率,更能抢占 AI 时代的核心竞争力。

除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.lifengdi.com/ren-gong-zhi-neng/4584

相关文章

  • 深度解析 RAG 技术:从原理到落地,构建高精度检索增强生成系统
  • 从技术本质到生态关联,一文吃透 AIGC、RAG、Agent、Function Call、MCP
  • 提示词工程终极指南:从入门到精通的全维度实战手册
  • 揭秘大模型Token的诞生:从字节到子词的分词逻辑与底层算法
  • LangGraph 深度实战指南:从基础架构到生产级 AI Agent 工作流构建
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: Agent LLM RAG
最后更新:2025年11月19日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇
下一篇 >

文章评论

1 2 3 4 5 6 7 8 9 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 52 53 54 55 57 58 60 61 62 63 64 65 66 67 69 72 74 76 77 78 79 80 81 82 85 86 87 90 92 93 94 95 96 97 98 99
取消回复

我是人间惆怅客,知君何事泪纵横,断肠声里忆平生。

那年今日(04月14日)

  • 2010年:中国青海玉树大地震
  • 1894年:托马斯·爱迪生展示了其新发明活动电影放映机
  • 1629年:荷兰物理学家克里斯蒂安·惠更斯出生
  • 1578年:西班牙国王腓力三世出生
  • 605年:隋炀帝下令开凿大运河
  • 更多历史事件
最新 热点 随机
最新 热点 随机
Everything Claude Code 详细使用文档 配置Jackson使用字段而不是getter/setter来序列化和反序列化 这个域名注册整整十年了,十年时间,真快啊 Claude Code全维度实战指南:从入门到精通,解锁AI编程新范式 Apollo配置中心中的protalDB的作用是什么 org.apache.ibatis.plugin.Interceptor类详细介绍及使用
AI时代,个人技术博客的出路在哪里?使用WireGuard在Ubuntu 24.04系统搭建VPN这个域名注册整整十年了,十年时间,真快啊WordPress实现用户评论等级排行榜插件WordPress网站换了个字体,差点儿把样式换崩了做了一个WordPress文章热力图插件
开发者必懂的 AI 向量入门:从数学基础到实战应用 分代ZGC这么牛?底层原理是什么? 图解 | 原来这就是网络 使用springboot结合AI生成视频 Java枚举梳理总结一 Excel2016右键新建工作表,打开时提示“因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。”的解决办法
标签聚合
设计模式 ElasticSearch docker 多线程 SpringBoot JAVA AI 分布式 MySQL JVM Spring SQL 架构 K8s IDEA WordPress 数据库 AI编程 Redis 日常
友情链接
  • Blogs·CN
  • Honesty
  • Mr.Sun的博客
  • 临窗旋墨
  • 哥斯拉
  • 彬红茶日记
  • 志文工作室
  • 懋和道人
  • 拾趣博客导航
  • 搬砖日记
  • 旧时繁华
  • 林羽凡
  • 瓦匠个人小站
  • 皮皮社
  • 知向前端
  • 蜗牛工作室
  • 韩小韩博客
  • 风渡言

COPYRIGHT © 2026 lifengdi.com. ALL RIGHTS RESERVED.

域名年龄

Theme Kratos Made By Dylan

津ICP备2024022503号-3

京公网安备11011502039375号