攀岩技术的兴起最早可追溯到十八世纪的欧洲。当时的登山者为了克服类似阿尔卑斯山等终年积雪的冰岩地形,发展出一套系统的攀登技术。1983年法国人Mr. Francois SAVIGNY 发明了由树脂及混凝土合成的可移动式岩块,奠定了攀岩墙日后发展的基础。
目前攀岩在国外是一项非常兴盛而且老少咸宜的运动,攀岩墙的设立非常普遍,室内及室外都有。因此常常可以看到一些外国朋友在下班之后,到这些设有岩墙的休闲娱乐中心或健身房活动一下再回家的情形。在节假日,也常常可以看到在设有岩墙的公园里全家同乐的景象。因为对现代都市人而言,到天然岩场攀爬往往要花去不少交通的时间,而且受气候的影响很大。因此在国外,尤其是运动风气鼎盛的欧洲、北美洲,许多岩墙的设立都是由政府出资规划兴建,因为它提供了一个绝佳的旅游休闲的去处。
现代人随着经济起飞,生活的品质已不再是要求温饱而已,而是希望建立工作与身心健康、休闲品质、家庭亲子关系等相对的平衡。攀岩活动,可以完全满足这些需求,并且完全没有危险性。除了以上这些好处外,更因为攀岩活动没有体型、性别及年龄上的限制,无论男女老少皆可享受攀登的乐趣。现代人饱受生活压力与工作压力之苦,他们可以从攀岩活动中获得成就感,舒缓压力。
在休闲市场上,目前世界各地一些稍具规模的公园、游乐场、度假饭店都以此设备来招揽客人,以凸显自己的特色。
除了攀岩活动之外,人工岩墙也可以提供类似高楼逃生,绳索速降等个人或消防单位之训练以及山难搜救技术的训练。高空作业人员,如天线架设、建筑、外墙清洗作业、冷气安装工作人员,也可以在经过简单的训练后将工作的危险性大幅降低,提升产业竞争力,军方及特种部队也常常利用人工岩场开展各种作战技术演练,例如困难地形突破、突击、潜入、人质解救或是巷战、城市战等等。
攀岩的六大好处
● 增加身体柔软度与协调感
● 增强体力
● 集中力
● 进取心
● 自信心
● 平衡感
攀岩墙的类型
攀岩墙发展迄今,依照其用途可分为:
● 专业竞技型:专业设计,采用高强度仿真复合材料岩板,精心设计路线及难度,供攀岩专业人士、爱好者以及军、警、高空作业等特种行业训练、比赛。
● 仿真娱乐型:创意设计,安全、刺激,充分考虑不同人群的攀登要求,并最大限度的增加投资者的收益。
● 儿童型:岩板表面用环保材料喷涂卡通图案,适合幼儿园儿童及小学生,用于对其肌肉发展及手、眼、身体之协调训练方面。
博客
-
攀岩运动简介
-
04. AutoGen深度架构分析
源码版本:microsoft/autogen (main branch, 2025)
框架定位:微软研究院出品的多智能体AI应用框架,基于消息传递与事件驱动架构
当前状态:已进入维护模式,由 Microsoft Agent Framework (MAF) 接替
1. 分层架构设计
AutoGen 采用三层分层架构,每一层有明确的职责边界,上层构建在下层之上:
- Core API (
autogen-core):消息传递、事件驱动 Agent、本地/分布式运行时 - AgentChat API (
autogen-agentchat):面向快速原型的高级 API,支持群聊等多 Agent 模式 - Extensions API (
autogen-ext):LLM 客户端、代码执行等扩展能力
从 README 中可以看到架构概览:
The autogen framework uses a layered and extensible design. Layers have clearly divided responsibilities and build on top of layers below. This design enables you to use the framework at different levels of abstraction, from high-level APIs to low-level components. - Core API implements message passing, event-driven agents, and local and distributed runtime for flexibility and power. - AgentChat API implements a simpler but opinionated API for rapid prototyping. - Extensions API enables first- and third-party extensions continuously expanding framework capabilities.这种分层设计使得用户可以从不同抽象层级切入——直接用 Core API 构建底层消息驱动系统,或者用 AgentChat API 快速搭建多 Agent 协作原型。
- Core API (
-
AI编程(十五):单词统计器 — 让程序读完一整篇文章
用字典给词频计数,找出一篇文章里最重要的10个词
一、一个真实的场景
你写了一篇文章(或者拿到领导的一篇讲话稿),想知道:
- 这篇文章里哪些词出现得最多?
- 作者嘴上说的重点,和他真正反复强调的,是不是一回事?
手工数?一篇文章几千字,数到明年。
这件事程序最擅长:读取文件 → 把文字拆成词 → 数每个词出现几次 → 排序 → 打印前10名。全程1秒不到。
-
03. CrewAI 架构深度分析
基于 crewAIInc/crewAI 源码(2025年最新版本),10维度深度剖析
GitHub: https://github.com/crewAIInc/crewAI | Stars: 58,000+ | License: MIT
1. 整体架构概览
CrewAI 是一个角色扮演式多Agent协作框架,核心设计理念是将AI Agent组织成”船员”(Crew)来协作完成复杂任务。架构分为两大范式:
- Crews(自主协作):基于角色的Agent团队,优化自主性和协作智能
- Flows(事件驱动控制):事件驱动的工作流,提供精确的流程控制
源码目录结构(
lib/crewai/src/crewai/):crewai/ ├── agent/ # Agent核心实现 ├── agents/ # Agent构建器、缓存、执行器 ├── crews/ # Crew输出等辅助类 ├── flow/ # Flow框架(DSL、运行时、定义) ├── tasks/ # Task子类(条件任务等) ├── tools/ # 工具系统(BaseTool、AgentTools) ├── memory/ # 统一记忆系统 ├── knowledge/ # 知识源和知识存储 ├── events/ # 事件总线和监听器 ├── llms/ # LLM提供者适配层 ├── mcp/ # MCP协议集成 ├── a2a/ # A2A协议集成 ├── security/ # 安全配置和指纹 ├── state/ # 检查点和运行时状态 ├── crew.py # Crew核心类(2490行) ├── task.py # Task核心类(1566行) ├── process.py # 流程枚举 └── llm.py # LLM封装
2. Agent 设计 — 抽象基类与角色系统
2.1 BaseAgent(抽象基类)
所有Agent的根基类,使用 Pydantic BaseModel + ABC 多重继承:
-
AI编程(十四):密码生成器 — 随机数和字符串的妙用
用随机数+字符串操作,做一个帮你生成强密码的小工具
一、你是不是也有这个问题
注册一个新网站,它要求你设置密码:
- 必须8位以上
- 必须包含大写字母
- 必须包含数字
- 不能和以前的密码重复
你想了半天,输入”zhangsan1990″——系统提示:太简单。
改成”Zhangsan1990!”——好像行了,但这个密码你已经用了三个网站了。
-
02. LangGraph 架构深度分析
项目: langchain-ai/langgraph
Stars: 41,548 | Forks: 7,018 | License: MIT
定位: 面向长时间运行、有状态 Agent 的底层编排框架
灵感来源: Google Pregel、Apache Beam、NetworkX
一、核心设计哲学:Pregel 计算模型
LangGraph 的核心是一个 Bulk Synchronous Parallel (BSP) 执行引擎,称为
Pregel。每个执行步骤分为三个阶段:- Plan(规划): 确定本轮需要执行哪些 Actor(节点)
- Execute(执行): 并行执行所有选中的 Actor,直到全部完成、失败或超时
- Update(更新): 用 Actor 写入的值批量更新 Channel
# pregel/main.py — Pregel 类的文档字符串(摘录) class Pregel(PregelProtocol[StateT, ContextT, InputT, OutputT]): """Pregel manages the runtime behavior for LangGraph applications. Pregel combines **actors** and **channels** into a single application. **Actors** read data from channels and write data to channels. Pregel organizes the execution of the application into multiple steps, following the **Pregel Algorithm**/**Bulk Synchronous Parallel** model. Each step consists of three phases: - **Plan**: Determine which **actors** to execute in this step. - **Execution**: Execute all selected **actors** in parallel. - **Update**: Update the channels with the values written by the **actors**. """这种设计意味着:同一轮执行中,节点写入的 Channel 值对其他节点不可见,只有进入下一轮时才生效。这从根本上避免了并发写入的竞争条件,是 LangGraph 保证确定性执行的关键。
二、Channel 体系:有状态通信原语
Channel 是 LangGraph 的核心抽象,所有节点间通信都通过 Channel 进行。BaseChannel 定义了统一的接口:
-
AI编程(十三):猜数字游戏 — 把学过的全用上
不学任何新东西,用一个游戏把前12篇的知识串起来
一、换个方式巩固
前12篇你学了不少:变量、条件判断、循环、函数、列表字典、文件操作、错误处理。
但说实话,学完和”会用”之间还差一段距离。就像学了菜谱但没进过几次厨房。
今天开始的12篇,不学任何新东西。每篇做一个小项目,把学过的知识用起来。用着用着,它们就变成你的了。
-
01. LangChain 架构深度分析
基于 langchain-ai/langchain 源码分析,覆盖 langchain-core 与 langchain 两个核心包
1. 架构哲学:可组合的 Runnable 抽象
LangChain 的核心设计哲学是 “一切皆 Runnable”。所有组件——LLM、Prompt、OutputParser、Tool、Retriever——都继承自同一个泛型基类
Runnable[Input, Output],从而获得统一的调用接口和组合能力。class Runnable(ABC, Generic[Input, Output]): """A unit of work that can be invoked, batched, streamed, transformed and composed.""" name: str | None """The name of the `Runnable`. Used for debugging and tracing.""" @abstractmethod def invoke(self, input: Input, config: RunnableConfig | None = None, **kwargs: Any) -> Output: """Transform a single input into an output.""" async def ainvoke(self, input: Input, config: RunnableConfig | None = None, **kwargs: Any) -> Output: return await run_in_executor(config, self.invoke, input, config, **kwargs)关键设计决策:
- LCEL(LangChain Expression Language):通过
|管道运算符实现声明式链式组合,RunnableSequence、RunnableParallel是核心组合原语 - 同步/异步双模:每个 Runnable 同时提供
invoke/ainvoke、stream/astream、batch/abatch,异步默认通过线程池桥接同步实现 - Pydantic 驱动的 Schema:输入/输出类型通过泛型参数自动推导,生成 JSON Schema 用于验证和文档
def __or__(self, other) -> RunnableSerializable[Input, Any]: """Compose this Runnable with another object to create a RunnableSequence.""" return RunnableSequence(self, coerce_to_runnable(other)) def pipe(self, *others, name=None) -> RunnableSerializable[Input, Other]: """Equivalent to RunnableSequence(self, *others) or self | others[0] | ...""" return RunnableSequence(self, *others, name=name)2. Agent Loop:观察-行动循环
LangChain 的 Agent 采用经典的 ReAct(Reasoning + Acting) 模式。核心循环定义在
langchain_core/agents.py中,通过两个关键数据结构驱动: - LCEL(LangChain Expression Language):通过
-
Agent架构(三):CrewAI
基于 crewAIInc/crewAI 源码(2025年最新版本),10维度深度剖析
GitHub: https://github.com/crewAIInc/crewAI | Stars: 58,000+ | License: MIT
1. 整体架构概览
CrewAI 是一个角色扮演式多Agent协作框架,核心设计理念是将AI Agent组织成”船员”(Crew)来协作完成复杂任务。架构分为两大范式:
- Crews(自主协作):基于角色的Agent团队,优化自主性和协作智能
- Flows(事件驱动控制):事件驱动的工作流,提供精确的流程控制
源码目录结构(
lib/crewai/src/crewai/):crewai/ ├── agent/ # Agent核心实现 ├── agents/ # Agent构建器、缓存、执行器 ├── crews/ # Crew输出等辅助类 ├── flow/ # Flow框架(DSL、运行时、定义) ├── tasks/ # Task子类(条件任务等) ├── tools/ # 工具系统(BaseTool、AgentTools) ├── memory/ # 统一记忆系统 ├── knowledge/ # 知识源和知识存储 ├── events/ # 事件总线和监听器 ├── llms/ # LLM提供者适配层 ├── mcp/ # MCP协议集成 ├── a2a/ # A2A协议集成 ├── security/ # 安全配置和指纹 ├── state/ # 检查点和运行时状态 ├── crew.py # Crew核心类(2490行) ├── task.py # Task核心类(1566行) ├── process.py # 流程枚举 └── llm.py # LLM封装
2. Agent 设计 — 抽象基类与角色系统
2.1 BaseAgent(抽象基类)
所有Agent的根基类,使用 Pydantic BaseModel + ABC 多重继承:
-
Agent架构(二):LangGraph
项目: langchain-ai/langgraph
Stars: 41,548 | Forks: 7,018 | License: MIT
定位: 面向长时间运行、有状态 Agent 的底层编排框架
灵感来源: Google Pregel、Apache Beam、NetworkX
一、核心设计哲学:Pregel 计算模型
LangGraph 的核心是一个 Bulk Synchronous Parallel (BSP) 执行引擎,称为
Pregel。每个执行步骤分为三个阶段:- Plan(规划): 确定本轮需要执行哪些 Actor(节点)
- Execute(执行): 并行执行所有选中的 Actor,直到全部完成、失败或超时
- Update(更新): 用 Actor 写入的值批量更新 Channel
# pregel/main.py — Pregel 类的文档字符串(摘录) class Pregel(PregelProtocol[StateT, ContextT, InputT, OutputT]): """Pregel manages the runtime behavior for LangGraph applications. Pregel combines **actors** and **channels** into a single application. **Actors** read data from channels and write data to channels. Pregel organizes the execution of the application into multiple steps, following the **Pregel Algorithm**/**Bulk Synchronous Parallel** model. Each step consists of three phases: - **Plan**: Determine which **actors** to execute in this step. - **Execution**: Execute all selected **actors** in parallel. - **Update**: Update the channels with the values written by the **actors**. """这种设计意味着:同一轮执行中,节点写入的 Channel 值对其他节点不可见,只有进入下一轮时才生效。这从根本上避免了并发写入的竞争条件,是 LangGraph 保证确定性执行的关键。
二、Channel 体系:有状态通信原语
Channel 是 LangGraph 的核心抽象,所有节点间通信都通过 Channel 进行。BaseChannel 定义了统一的接口:
-
Agent架构(一):LangChain
基于 langchain-ai/langchain 源码分析,覆盖 langchain-core 与 langchain 两个核心包
1. 架构哲学:可组合的 Runnable 抽象
LangChain 的核心设计哲学是 “一切皆 Runnable”。所有组件——LLM、Prompt、OutputParser、Tool、Retriever——都继承自同一个泛型基类
Runnable[Input, Output],从而获得统一的调用接口和组合能力。class Runnable(ABC, Generic[Input, Output]): """A unit of work that can be invoked, batched, streamed, transformed and composed.""" name: str | None """The name of the `Runnable`. Used for debugging and tracing.""" @abstractmethod def invoke(self, input: Input, config: RunnableConfig | None = None, **kwargs: Any) -> Output: """Transform a single input into an output.""" async def ainvoke(self, input: Input, config: RunnableConfig | None = None, **kwargs: Any) -> Output: return await run_in_executor(config, self.invoke, input, config, **kwargs)关键设计决策:
- LCEL(LangChain Expression Language):通过
|管道运算符实现声明式链式组合,RunnableSequence、RunnableParallel是核心组合原语 - 同步/异步双模:每个 Runnable 同时提供
invoke/ainvoke、stream/astream、batch/abatch,异步默认通过线程池桥接同步实现 - Pydantic 驱动的 Schema:输入/输出类型通过泛型参数自动推导,生成 JSON Schema 用于验证和文档
def __or__(self, other) -> RunnableSerializable[Input, Any]: """Compose this Runnable with another object to create a RunnableSequence.""" return RunnableSequence(self, coerce_to_runnable(other)) def pipe(self, *others, name=None) -> RunnableSerializable[Input, Other]: """Equivalent to RunnableSequence(self, *others) or self | others[0] | ...""" return RunnableSequence(self, *others, name=name)2. Agent Loop:观察-行动循环
LangChain 的 Agent 采用经典的 ReAct(Reasoning + Acting) 模式。核心循环定义在
langchain_core/agents.py中,通过两个关键数据结构驱动: - LCEL(LangChain Expression Language):通过