攀岩技术的兴起最早可追溯到十八世纪的欧洲。当时的登山者为了克服类似阿尔卑斯山等终年积雪的冰岩地形,发展出一套系统的攀登技术。1983年法国人Mr. Francois SAVIGNY 发明了由树脂及混凝土合成的可移动式岩块,奠定了攀岩墙日后发展的基础。
目前攀岩在国外是一项非常兴盛而且老少咸宜的运动,攀岩墙的设立非常普遍,室内及室外都有。因此常常可以看到一些外国朋友在下班之后,到这些设有岩墙的休闲娱乐中心或健身房活动一下再回家的情形。在节假日,也常常可以看到在设有岩墙的公园里全家同乐的景象。因为对现代都市人而言,到天然岩场攀爬往往要花去不少交通的时间,而且受气候的影响很大。因此在国外,尤其是运动风气鼎盛的欧洲、北美洲,许多岩墙的设立都是由政府出资规划兴建,因为它提供了一个绝佳的旅游休闲的去处。
现代人随着经济起飞,生活的品质已不再是要求温饱而已,而是希望建立工作与身心健康、休闲品质、家庭亲子关系等相对的平衡。攀岩活动,可以完全满足这些需求,并且完全没有危险性。除了以上这些好处外,更因为攀岩活动没有体型、性别及年龄上的限制,无论男女老少皆可享受攀登的乐趣。现代人饱受生活压力与工作压力之苦,他们可以从攀岩活动中获得成就感,舒缓压力。
在休闲市场上,目前世界各地一些稍具规模的公园、游乐场、度假饭店都以此设备来招揽客人,以凸显自己的特色。
除了攀岩活动之外,人工岩墙也可以提供类似高楼逃生,绳索速降等个人或消防单位之训练以及山难搜救技术的训练。高空作业人员,如天线架设、建筑、外墙清洗作业、冷气安装工作人员,也可以在经过简单的训练后将工作的危险性大幅降低,提升产业竞争力,军方及特种部队也常常利用人工岩场开展各种作战技术演练,例如困难地形突破、突击、潜入、人质解救或是巷战、城市战等等。
攀岩的六大好处
● 增加身体柔软度与协调感
● 增强体力
● 集中力
● 进取心
● 自信心
● 平衡感
攀岩墙的类型
攀岩墙发展迄今,依照其用途可分为:
● 专业竞技型:专业设计,采用高强度仿真复合材料岩板,精心设计路线及难度,供攀岩专业人士、爱好者以及军、警、高空作业等特种行业训练、比赛。
● 仿真娱乐型:创意设计,安全、刺激,充分考虑不同人群的攀登要求,并最大限度的增加投资者的收益。
● 儿童型:岩板表面用环保材料喷涂卡通图案,适合幼儿园儿童及小学生,用于对其肌肉发展及手、眼、身体之协调训练方面。
博客
-
攀岩运动简介
-
16. Mastra 深度架构分析
项目: mastra-ai/mastra
语言: TypeScript
许可证: Apache 2.0 + Mastra Enterprise License (ee/ 目录)
定位: 现代 TypeScript AI 应用和 Agent 框架,从原型到生产的一站式解决方案
来源: Y Combinator W25 批次项目
Mastra 是一个面向 TypeScript 生态的 AI Agent 框架,提供 Agent、Workflow、Tool、Memory、MCP Server 等完整能力。其架构以
@mastra/core为核心,围绕 Agent-Tool-Workflow 三角关系构建,支持 40+ 模型提供商,提供 Human-in-the-loop、RAG、评估和可观测性等生产级特性。
1. Agent 核心架构
Mastra 的 Agent 是框架的中枢,继承自
MastraBase,整合了 LLM 调用、工具执行、记忆管理、信号系统和可观测性。// packages/core/src/agent/agent.ts export type MastraLLM = MastraLLMV1 | MastraLLMVNext; // Agent 配置接口核心字段 export interface AgentConfig { id: string; name: string; instructions: DynamicArgument; // 支持静态字符串或动态函数 model: DynamicArgument; tools?: DynamicArgument; workflows?: DynamicArgument<Record>; memory?: AgentMemoryOption; voice?: MastraVoice; scorers?: DynamicArgument; processors?: { input?: InputProcessorOrWorkflow[]; output?: OutputProcessorOrWorkflow[]; error?: ErrorProcessorOrWorkflow[]; }; }Agent 支持两种 LLM 后端:
MastraLLMV1(传统 AI SDK v2)和MastraLLMVNext(AI SDK v5 循环模式),通过统一接口对外暴露generate()和stream()方法。Agent 内部维护一个MessageList管理对话历史,支持 Observational Memory(观察性记忆)让 Agent 行为连贯。 -
AI编程(二十六):CSV数据分析 — 看懂一堆数据的全貌
平均值、最大值、分布规律——几百行数据,三秒钟说出它的故事
一、数据搬进来了,然后呢?
上一篇我们干了件大事:把CSV读进了程序,还能把结果写回去。恭喜,你已经是个合格的”数据搬运工”了。
但搬运工之后呢?想象这个场景:
你按上一篇的办法,把三个月的银行账单.csv读进了程序,屏幕上哗啦啦滚过几百行。然后——就没有然后了。你盯着几百行滚动的记录,脑子里还是一团浆糊:
-
AI编程(二十五):CSV文件入门 — 让表格数据流动起来
工资条、账单、通讯录、成绩表——程序世界和Excel世界的第一次握手
一、你的数据,大多锁在表格里
先想想你电脑里有多少表格文件:
- 银行卡导出的账单(.csv 或 .xlsx)
- 公司发的工资条
- 通讯录导出的联系人列表
- 上课时的成绩表、考勤表
- 网店后台导出的订单明细
这些数据有个共同的尴尬:Excel能看,但没法”自动化”。想算点东西要手动拉公式,想整理几百行要拖到手酸,想每周重复做一遍——每周都得重来一次。
从今天起不一样了。我们开始爬阶段3的第一个台阶:文件和数据处理。第一站就是CSV——因为它是表格数据里最简单、最通用、最好上手的格式。
-
AI编程(二十三):番茄钟计时器 — 把专注力管起来
学习25分钟、休息5分钟——把第二十一篇的倒计时升级成完整的工作法工具
一、为什么你学不进去,可能不是意志力的问题
你有没有过这种经历:坐下来学习,刚看了两页书,手机亮了;回完消息想继续,脑子里开始想晚饭吃什么;等回过神,半小时没了,书还在第2页。
结论通常是”我意志力太差”。但有个意大利人不同意。
1980年代,Francesco Cirillo发明了一种方法:不要求你学一整天,只要求你专注25分钟。25分钟后休息5分钟,算一个”番茄”。攒够4个番茄,来一次长休息。
-
15.DSPy架构深度分析
项目: stanfordnlp/dspy | Stars: 37.6k | 许可: MIT
定位: “Programming — not prompting — Foundation Models”
全称: Declarative Self-improving Python
DSPy 是 Stanford NLP 团队开发的声明式语言模型编程框架,核心理念是用组合式 Python 代码替代脆弱的 prompt 工程,通过编译器自动优化 LM 的 prompt 和权重。本文从 10 个维度深入分析其架构设计。
1. 核心哲学:从 Prompt 到 Program 的范式转换
DSPy 的根本创新在于将 LM 调用从”手写 prompt 字符串”提升为”声明式 Python 程序”。用户定义输入/输出签名(Signature),编写组合逻辑(Module),框架自动处理 prompt 构造和优化。
README 中明确阐述:
-
14.SemanticKernel
Stars: 28.5K+ | License: MIT | 语言: Python / .NET / Java
定位: 企业级 AI Agent SDK,模型无关,支持构建、编排和部署 AI Agent 及多 Agent 系统
一、整体架构概览
Semantic Kernel(SK)是微软推出的模型无关 SDK,其核心设计理念是将 LLM 能力与传统代码通过统一的 Kernel(内核) 模式整合。架构分为四层:
┌─────────────────────────────────────────────┐ │ Agent Layer (Agent 抽象) │ │ ChatCompletionAgent / AzureAIAgent / ... │ ├─────────────────────────────────────────────┤ │ Kernel Layer (核心调度) │ │ Plugins → Functions → Filters → Services │ ├─────────────────────────────────────────────┤ │ Connector Layer (AI 服务连接器) │ │ OpenAI / Azure / HuggingFace / ... │ ├─────────────────────────────────────────────┤ │ Content Layer (内容模型) │ │ ChatMessage / Streaming / FunctionCall │ └─────────────────────────────────────────────┘SK 现已演化为 Microsoft Agent Framework (MAF),作为其企业级后继者,但 SK 本身仍是 MAF 的核心引擎。
二、十个维度深度分析
1. Kernel 核心 —— 组合式设计
Kernel 是整个框架的中枢调度器,通过多重继承组合了四个扩展能力:
-
13.Haystack架构深度分析
定位: 开源 AI 编排框架,用于构建生产级 LLM 应用(RAG、Agent、语义搜索、多模态应用)
版本: Haystack 3.0(2024年发布,重大重构版本)
许可证: Apache-2.0
分析时间: 2026-09
1. 核心架构理念:管道(Pipeline)驱动的组件编排
Haystack 的核心思想是将 AI 应用拆解为可组合的组件(Component),通过有向无环图(DAG)管道连接。每个组件有明确的输入/输出接口,管道负责数据流转、调度执行。
1.1 Pipeline 调度引擎
Pipeline 是 Haystack 的心脏,负责根据执行图(graph)调度组件运行。核心运行循环采用优先队列机制:
# haystack/core/pipeline/pipeline.py - Pipeline.run() 核心循环 while True: candidate = self._get_next_runnable_component(priority_queue, component_visits) # 如果没有可运行的组件,退出循环 if candidate is None: break priority, component_name, component = candidate # 如果下一个组件被阻塞,检查管道是否可能被卡住 if priority == ComponentPriority.BLOCKED: if self._is_pipeline_possibly_blocked(current_pipeline_outputs=pipeline_outputs): self._find_components_blocking_pipeline( priority_queue=priority_queue, component_visits=component_visits, inputs=inputs ) # 总是退出循环,因为无法运行下一个组件 break # 如果下一个组件已经调度,等待任务完成以取得进展 if component_name in scheduled_components: async for partial_outputs in self._wait_for_tasks( running_tasks, scheduled_components, return_when=asyncio.FIRST_COMPLETED ): yield partial_outputs continue # HIGHEST 优先级组件必须单独运行 if priority == ComponentPriority.HIGHEST: async for partial_outputs in self._run_component_in_isolation(...): yield partial_outputs continue # READY 优先级组件可以并发调度 if priority == ComponentPriority.READY: self._schedule_component(...) # 尽可能调度更多 READY 任务 while len(priority_queue) > 0 and not ready_sem.locked(): peek_priority, peek_name = priority_queue.peek() if peek_priority != ComponentPriority.READY: break1.2 组件执行模型
每个组件的运行被封装为独立的执行单元,支持同步和异步两种路径:
-
AI编程(二十四):个人档案管理器 — 阶段2毕业作品
证件、账号、联系方式——把这一路学的所有东西,装进一个真正属于你的程序
一、你有多少”重要信息”散落在各处?
先别写代码,盘点一下:
- 身份证号、护照号、驾照号——平时用不到,用到时找不到
- 各种账号:邮箱、视频网站、购物网站、健身房卡号……
- 家人的身份证号(订机票要用)
- 银行卡号、社保号、保单号
- 重要日期:签证过期、证件到期、保修截止
这些信息有个共同点:不用时想不起,要用时找不到。翻聊天记录、翻抽屉、问家人——每次都要折腾半天。
手机备忘录?可以,但查找麻烦、没法分类、明文摆着还不安全。
-
12. Dify 架构深度分析
基于 langgenius/dify 源码分析(154k+ Stars,24.4k Forks)
分析源码:
api/core/agent/base_agent_runner.py、api/core/agent/cot_agent_runner.py、api/core/tools/tool_manager.py
1. 项目概览与技术栈
Dify 是一个开源 LLM 应用开发平台,提供 AI 工作流、RAG 管道、Agent 能力、模型管理和可观测性。后端使用 Python(Flask + SQLAlchemy),前端使用 Next.js,支持 Docker Compose 一键部署。
# 项目结构(从仓库目录可见) # api/ — Python 后端核心(Agent、工具、模型运行时) # web/ — Next.js 前端 # docker/ — Docker Compose 部署 # dify-agent/ — 独立 Agent 运行时 # dify-agent-runtime/ — Agent 运行时包 # sdks/ — 多语言 SDK # packages/ — 共享包Dify 的 Agent 系统基于
graphon模型运行时抽象层,支持数百种 LLM 提供商,通过统一的PromptMessage体系与模型交互。
2. Agent 继承体系——三层架构
Dify 的 Agent 采用清晰的三层继承结构:
AppRunner → BaseAgentRunner → CotAgentRunner。 -
11. Composio 架构深度分析
仓库: ComposioHQ/composio (26.2k ⭐)
定位: 为 AI Agent 提供 1000+ 预认证工具集、会话管理、认证、触发器和沙箱执行环境
语言: Python SDK + TypeScript SDK(monorepo)
1. 整体架构:Provider 泛型 + Session 模型
Composio 采用 Provider 泛型模式,核心
Composio类通过泛型参数TTool和TToolCollection实现框架无关的工具适配。默认使用 OpenAI 格式,但可以无缝切换到 Anthropic、LangChain 等任何框架。# sdk.py - 核心 SDK 类定义 class Composio(t.Generic[TTool, TToolCollection], WithLogger): """ Generic parameters: TTool: The individual tool type returned by the provider TToolCollection: The collection type returned by get_tools """ tools: "Tools[TTool, TToolCollection]" @t.overload def __init__( self: "Composio[OpenAITool, OpenAIToolCollection]", provider: None = None, **kwargs: te.Unpack[SDKConfig], ) -> None: """Initialize with default OpenAI provider.""" ... @t.overload def __init__( self, provider: BaseProvider[TTool, TToolCollection], **kwargs: te.Unpack[SDKConfig], ) -> None: """Initialize with an explicit provider. Types are inferred from the provider.""" ...设计亮点: 通过
@t.overload实现两个初始化路径——无 provider 时默认 OpenAI 类型,有 provider 时自动推断泛型参数。这意味着Composio(provider=AnthropicProvider())会自动得到Composio[ToolParam, list[ToolParam]]类型。
2. HTTP 客户端:Stainless 生成器 + 运行时环境检测
HTTP 客户端基于 Stainless 自动生成的 API 客户端包装,增加了运行时环境检测和请求拦截能力。