博客

  • 攀岩运动简介

    攀岩技术的兴起最早可追溯到十八世纪的欧洲。当时的登山者为了克服类似阿尔卑斯山等终年积雪的冰岩地形,发展出一套系统的攀登技术。1983年法国人Mr. Francois SAVIGNY 发明了由树脂及混凝土合成的可移动式岩块,奠定了攀岩墙日后发展的基础。
      目前攀岩在国外是一项非常兴盛而且老少咸宜的运动,攀岩墙的设立非常普遍,室内及室外都有。因此常常可以看到一些外国朋友在下班之后,到这些设有岩墙的休闲娱乐中心或健身房活动一下再回家的情形。在节假日,也常常可以看到在设有岩墙的公园里全家同乐的景象。因为对现代都市人而言,到天然岩场攀爬往往要花去不少交通的时间,而且受气候的影响很大。因此在国外,尤其是运动风气鼎盛的欧洲、北美洲,许多岩墙的设立都是由政府出资规划兴建,因为它提供了一个绝佳的旅游休闲的去处。
      现代人随着经济起飞,生活的品质已不再是要求温饱而已,而是希望建立工作与身心健康、休闲品质、家庭亲子关系等相对的平衡。攀岩活动,可以完全满足这些需求,并且完全没有危险性。除了以上这些好处外,更因为攀岩活动没有体型、性别及年龄上的限制,无论男女老少皆可享受攀登的乐趣。现代人饱受生活压力与工作压力之苦,他们可以从攀岩活动中获得成就感,舒缓压力。
      在休闲市场上,目前世界各地一些稍具规模的公园、游乐场、度假饭店都以此设备来招揽客人,以凸显自己的特色。
      除了攀岩活动之外,人工岩墙也可以提供类似高楼逃生,绳索速降等个人或消防单位之训练以及山难搜救技术的训练。高空作业人员,如天线架设、建筑、外墙清洗作业、冷气安装工作人员,也可以在经过简单的训练后将工作的危险性大幅降低,提升产业竞争力,军方及特种部队也常常利用人工岩场开展各种作战技术演练,例如困难地形突破、突击、潜入、人质解救或是巷战、城市战等等。
        攀岩的六大好处
      ●  增加身体柔软度与协调感
      ●  增强体力
      ●  集中力
      ●  进取心
      ●  自信心
      ●  平衡感
        攀岩墙的类型
      攀岩墙发展迄今,依照其用途可分为:
      ● 专业竞技型:专业设计,采用高强度仿真复合材料岩板,精心设计路线及难度,供攀岩专业人士、爱好者以及军、警、高空作业等特种行业训练、比赛。
      ● 仿真娱乐型:创意设计,安全、刺激,充分考虑不同人群的攀登要求,并最大限度的增加投资者的收益。
      ● 儿童型:岩板表面用环保材料喷涂卡通图案,适合幼儿园儿童及小学生,用于对其肌肉发展及手、眼、身体之协调训练方面。

  • 22.LlamaIndex架构分析

    项目: run-llama/llama_index

    Stars: 52.1k | Forks: 8.1k | Commits: 7,930

    许可证: MIT

    定位: 面向数据增强的 LLM 应用框架,核心解决「如何用私有数据增强 LLM」的问题


    1. 项目定位与核心价值

    LlamaIndex(原名 GPT Index)由 Jerry Liu 于 2022 年创建,定位为文档处理与 AI 数据框架。其核心价值主张是:

    • 数据连接器:从 API、PDF、文档、SQL 等多种来源摄取数据
    • 数据结构化:通过索引(Index)和图(Graph)组织数据,使其可被 LLM 高效使用
    • 高级检索/查询接口:将任意 LLM 提示输入转换为检索上下文和知识增强输出
    • 应用框架集成:与 LangChain、Flask、Docker、ChatGPT 等无缝集成

    与 LangChain 偏向通用 Agent 编排不同,LlamaIndex 的差异化在于数据为中心——索引构建、检索优化、文档解析是其一等公民能力。

    2. 仓库结构与模块化设计

    LlamaIndex 采用核心+集成的双层包结构:

    (更多…)

  • AI编程(三十二):Excel筛选排序 — 一行代码筛出你想要的行

    八百行的表里找”华东区、销售额过万、三月份”的订单,Excel要三轮筛选加一次排序、点十几下鼠标。pandas一行条件、一行排序,两行代码拿下——而且换个问题只要换个条件,鼠标点过的活儿再也回不来了

    一、老板的”第二轮追问”

    上一篇结尾留了个话头:老板问完”总销售额、销售冠军、平均单值”,果然杀了个回马枪。这次的问题是:“华东区销售额过万的订单有哪些?按销售额从高到低排出来。”

    打开Excel你是这么干的:点”部门”列的筛选箭头→勾”华东”→点”销售额”列筛选→数字筛选→大于→10000→点”销售额”列头排序→降序。十几下鼠标,两分钟。这时候老板又补了一句:”那三月份的呢?””那华南区的呢?”——每换一个条件,前面的鼠标全重点一遍。

    上一篇我们把数据读进了程序(忘了的话回看第31篇:df = pd.read_excel("销售明细.xlsx"),df是一张住在程序里的超级表格)。数据在程序里,”筛选”和”排序”就变成了写条件,而不是点鼠标:

    (更多…)

  • 21. Mem0 架构深度分析

    项目: mem0ai/mem0 — AI Agent 的记忆层基础设施

    Star: 64.9K+ | Commits: 2600+ | 许可: Apache 2.0

    核心定位: 为 AI Agent 提供持久化的、可检索的、多层级的记忆能力


    1. 系统定位与设计哲学

    Mem0 将自身定义为 “The Memory Layer for Personalized AI”,不是一个 RAG 框架,不是向量数据库,而是一个面向 Agent 的记忆中间层。它的核心命题是:AI 助手应该像人一样”记住”对话上下文、用户偏好和历史事实,而不是每次会话都从零开始。

    设计哲学有三个关键原则:

    • 记忆即一等公民:记忆不是对话历史的副产品,而是独立的、结构化的、可检索的知识单元
    • 推理时提取而非存储时索引:不是把整段对话塞进向量库,而是用 LLM 从对话中提取离散事实
    • 多信号融合检索:语义相似度 + BM25 关键词 + 实体匹配,三路信号并行打分后融合

    2026 年 4 月的新算法(V3)在 LoCoMo 基准上从 71.4 提升到 92.5,LongMemEval 从 67.8 到 94.4,核心改进是将原来的 add/update/delete 三步 LLM 调用简化为单次 ADD-only 提取——记忆只增不删,依赖检索排序来衰减过时信息。

    (更多…)

  • AI编程(三十一):Excel读取 — 让pandas把整张表一口吞下

    表格里躺着八百行数据,用眼睛看看到眼花。今天请来数据分析界的”重型吊车”——pandas,一行代码把整张Excel读进程序,列名直接当标签用,求和、平均、找最大值都不用写循环

    一、老板的三个问题

    先说一个你迟早会遇到的场景。

    周五下午五点五十,老板在群里甩过来一个销售明细.xlsx:”帮我看看,今年总销售额多少?谁卖得最多?平均一单多少钱?快点,六点开会要用。”

    你打开文件——八百行,十七列。你点进”销售额”这一列,Excel左下角状态栏显示求和;再排序找最大值对应的销售名;再用AVERAGE算平均。三个问题,三轮操作,五分钟。刚喘口气,老板又来了:”那按月看看呢?华东区单独算呢?”——每多一个问题,就是一轮手动操作。

    (更多…)

  • 20. GPT-Researcher 深度架构分析

    项目: assafelovic/gpt-researcher

    Stars: 29k+ | License: Apache 2.0 | 语言: Python

    定位: 首个开源深度研究 Agent,支持 Web 和本地数据源的自主研究与报告生成


    1. 整体架构概览

    GPT-Researcher 采用 技能化(Skills-based)分层架构,核心是一个中央协调 Agent(GPTResearcher 类),通过组合多个专职技能模块完成研究流程。架构灵感来自 Plan-and-Solve 和 RAG 论文。

    ┌─────────────────────────────────────────────────────────┐
    │                    GPTResearcher (Agent)                 │
    │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐  │
    │  │ Research  │ │ Context  │ │  Report   │ │   Deep     │  │
    │  │ Conductor│ │ Manager  │ │ Generator │ │  Research  │  │
    │  └────┬─────┘ └────┬─────┘ └────┬─────┘ └─────┬──────┘  │
    │       │            │            │              │         │
    │  ┌────┴────┐ ┌─────┴─────┐ ┌───┴───┐   ┌─────┴──────┐  │
    │  │Retrievers│ │Compressor │ │Writer │   │Source      │  │
    │  │(Web/MCP/ │ │(Embedding │ │(LLM)  │   │Curator     │  │
    │  │ Local)   │ │ Filtering)│ │       │   │            │  │
    │  └─────────┘ └───────────┘ └───────┘   └────────────┘  │
    │                                                          │
    │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐  │
    │  │  Memory  │ │  Config  │ │  LLM     │ │  Browser   │  │
    │  │(Embeddings│ │ Manager  │ │ Provider │ │  Manager   │  │
    │  │ + Vector) │ │          │ │          │ │            │  │
    │  └──────────┘ └──────────┘ └──────────┘ └────────────┘  │
    └─────────────────────────────────────────────────────────┘

    Agent 核心类的初始化展示了其模块化组合设计:

    class GPTResearcher:
        def __init__(
            self,
            query: str,
            report_type: str = ReportType.ResearchReport.value,
            report_source: str = ReportSource.Web.value,
            tone: Tone = Tone.Objective,
            source_urls: list[str] | None = None,
            vector_store=None,
            config_path=None,
            websocket=None,
            agent=None,
            role=None,
            parent_query: str = "",
            subtopics: list | None = None,
            mcp_configs: list[dict] | None = None,
            mcp_strategy: str | None = None,
            **kwargs
        ):

    该构造函数暴露了 20+ 个可配置参数,覆盖报告类型、数据源、LLM 角色、MCP 集成等维度,体现了高度可定制性。

    (更多…)

  • AI编程(三十):批量文件处理 — 让程序当你的文件收纳师

    电脑里躺着几十个”报告1.csv、最终版.csv、最终版2.csv”,一个一个点开改要一下午。今天学两个新朋友——glob负责”找到所有文件”,os负责”动文件”,从此一句话收拾整个文件夹

    一、一个文件夹引发的惨案

    先说一个真实到让人想哭的场景。

    月底报销,财务说:”把发票扫描件都按’日期_金额’格式重命名,不规范的不收。”你打开文件夹一看——IMG_2041.jpg、IMG_2042.jpg、微信图片_20260930.png、新建文件夹、新建文件夹(2)……一百三十七个文件。你咬咬牙开始一个个改名,改到第二十个,把IMG_2051改成了IMG_2050的名字,覆盖了,找不回来了。

    再比如:二十个分店各交来一份销售.csv,你得逐个打开、加上”分店”这一列、再合成总表。或者:把整个文件夹的.txt笔记全部转成.md;把照片/下所有超过5MB的图片挑出来……

    (更多…)

  • 19. Vercel AI SDK

    版本: AI SDK v7.0.99 | 许可证: Apache-2.0 | 仓库: vercel/ai

    分析日期: 2026-09-13

    概述

    Vercel AI SDK 是由 Next.js 团队打造的 Provider 无关的 TypeScript AI 工具包,提供统一 API 对接 OpenAI、Anthropic、Google 等 25+ 模型提供商。其核心设计理念是三层抽象:Core 层(generateText/streamText)、Provider 层(统一语言模型规范)、UI 层(框架无关的 React/Svelte/Vue hooks)。本文从 10 个维度深入剖析其架构设计。


    1. 统一 Provider 架构

    AI SDK 的核心创新是定义了一套 Language Model Specification(语言模型规范),所有 Provider 必须实现该规范接口。通过 @ai-sdk/provider 包发布规范,@ai-sdk/provider-utils 提供工具函数,各 Provider 包(如 @ai-sdk/openai)实现具体适配。

    // packages/ai/src/model/resolve-model.ts
    // 模型解析:字符串 → Provider 实例 → LanguageModel
    import type { LanguageModel } from '../types';
    
    // 支持两种使用方式:
    // 1. 字符串形式:model: 'openai/gpt-5.4'(通过 Vercel AI Gateway)
    // 2. Provider 实例:model: openai('gpt-5.4')(直连 Provider)
    export function resolveLanguageModel(model: LanguageModel | string): LanguageModel {
      // 字符串通过 Gateway 路由,对象直接使用
    }

    架构意义:开发者可以一行代码切换 Provider,无需修改业务逻辑。Gateway 模式更是将 Provider 选择从代码层提升到配置层。

    (更多…)

  • AI编程(二十九):数据清洗入门 — 给”脏”数据洗个澡,才能下锅

    真实世界的数据从来不干净:空格、错格式、缺胳膊少腿的行混在一起。今天学两招——字符串处理和条件筛选,把脏数据洗成能用的数据

    一、一份”看着没问题”的表格,坑有多深

    先说一个你八成遇到过的场景。

    朋友发来一份”聚餐报名表.csv”,说:”帮我算算一共来多少人,按男女分个组。”你打开一看,十几行,有姓名、性别、手机号,挺整齐的嘛。结果一算——人数比实际多了3个;按性别分组,分出来四组:”男”、”男 “(带空格)、”女”、”M”。手机号更离谱,有的带横杠,有的带”+86″,还有人写了”没手机”。

    你找朋友对质,朋友说:”我就是让大家自己填的啊。”

    (更多…)

  • 18.MetaGPT架构深度分析

    项目: geekan/MetaGPT — 57.4k Stars

    定位: 多智能体协作框架,模拟软件公司 SOP(标准操作流程)

    核心理念: Code = SOP(Team) — 将 SOP 物化并应用于 LLM 组成的团队

    源码版本: main 分支 (2025)


    1. 设计哲学:SOP 驱动的多智能体

    MetaGPT 的核心设计哲学是将软件公司的标准操作流程(SOP)形式化,让 LLM 角色像真实团队一样协作。一行需求输入,产出用户故事、竞品分析、需求文档、数据结构、API 设计等完整软件交付物。

    # team.py - Team 类的核心定位
    class Team(BaseModel):
        """
        Team: Possesses one or more roles (agents), SOP (Standard Operating Procedures),
        and a env for instant messaging, dedicated to env any multi-agent activity,
        such as collaboratively writing executable code.
        """
        env: Optional[Environment] = None
        investment: float = Field(default=10.0)
        idea: str = Field(default="")
        use_mgx: bool = Field(default=True)

    团队拥有环境(Environment)、投资预算(investment)、以及可选的 MGX 增强模式。这体现了”软件公司”隐喻——有预算约束、有组织架构、有协作环境。


    2. 角色系统(Role):智能体的核心抽象

    Role 是 MetaGPT 最核心的抽象,每个角色拥有独立的身份(profile)、目标(goal)、约束(constraints)、动作列表(actions)、记忆系统(memory)和运行时上下文(RoleContext)。

    (更多…)

  • AI编程(二十八):配置文件管理 — 改设置不动代码,程序才像个”正经软件”

    为什么专业程序的设置都放在单独的文件里?今天你做出第一个”改配置不改代码”的程序

    一、一个改到崩溃的真实场景

    先讲一个你大概率亲历过的惨案。

    假设你(或者AI)写了一个”每日打卡提醒程序”,里面写着提醒时间是早上8点。用了一周,你想改成7点半——于是你打开代码,找到那行提醒时间 = "08:00",改成"07:30",保存,重新运行。

    又过了两周,你想改提醒语;再过一周,你想把打卡记录存到另一个文件夹……每次改动都得:打开代码 → 全文搜索找到那行 → 改 → 提心吊胆别改错别的地方 → 保存重跑。

    (更多…)