生成式 AI 时代开源软件生态 - PARK

作者:Dean Wampler 译者:Carl Cui 1998 年,LAMP 的出现第一次清晰描述了用于构建网站的主要开源软件,也让无数开发者找到了构建 Web 应用的共同语言。二十多年后,生成式 AI 的浪潮同样呼唤一套属于这个时代的标准答案,PARK 栈由此而来。作者 Dean Wampler 在这篇文章中为我们展现了 AI 时代开源“风景”,更难得的是,作者在文章穿插了大量引用,方便感兴趣的读者继续探索。 1. 背景:LAMP 技术栈 根据 Wikipedia,LAMP 技术栈这个缩写是由 Michael Kunze 于 1998 年提出的,用于描述当时流行的用于构建网站的开源软件组合。在 20 世纪 90 年代初,随着万维网(WWW)的普及,各大组织使用各种专有工具和操作系统,外加一些开源软件(OSS - open source software)来构建网站。LAMP 技术栈迅速成为最受欢迎的开源组件集合。 LAMP 是一个缩写词,分别代表以下内容: 字母 组件 职责 L Linux 操作系统 A Apache HTTP Server 网络服务器 M MySQL 数据库 P Perl、PHP 和/或 Python 应用程序编程语言 在当时,依赖开源软件的想法是有争议的。因为源代码对所有人可见,人们担心缺乏支持和存在软件漏洞,最终这些问题解决了。开源之所以具有不可抗拒的吸引力,是因为流行的 OSS 项目提供了极大的灵活性、成本效益、无供应商锁定以及快速迭代。LAMP 堆栈成为企业采用开源的主要驱动力之一。 2. PARK 技术栈 就像互联网的兴起一样,大型语言模型(LLMs)、视觉模型(VMs)和其他生成式 AI 的突然爆发,促使人们去识别最适合生成式 AI 的 OSS 组件。这个时代出现了 PARK 技术栈。它是由 Ben Lorica 去年 11 月在文章 Trends Shaping the Future of AI Infrastructure 中首次提出的。 ...

March 20, 2026 · 2 min · Dean Wampler

OpenClaw 对下一阶段 AI Agent 的启示

作者:Kesha Williams 译者:Carl Cui 译者之前写了篇介绍 OpenClaw 的文章:不一样的 OpenClaw,简述了 OpenClaw 这个项目的来龙去脉,并从安全角度讨论了这个明星项目面临的现实问题。随后译者看到了 Kesha Williams 这篇文章,她思考了 OpenClaw 的火爆给 AI Agent 发展带来的启示,值得我们参考,以下是整理翻译后的内容。 1. 自主 AI 并非新事物 OpenClaw 的异军突起感觉与 2023 年 4 月 AutoGPT 横空出世时相似。那时候它也和现在一样,在 GitHub 上迅速走红,承诺能实现 AI 的自主。但实际情况是,那些 agents 陷入了死循环,经常产生幻觉,还造成了高昂的 token 成本。没过多久,人们就纷纷放弃了。 OpenClaw 有一个关键优势:模型变得更好了。最近的 LLM(如 Claude Opus 4.6 和 GPT-5.4)允许模型将各种工具串联起来、从错误中恢复,并规划多步骤策略。OpenClaw 项目既得益于设计,也得益于时机。 OpenClaw 的架构故意保持简单。没有矢量数据库,也没有多 agent 编排框架。Persistent memory 就是磁盘上的 Markdown 文件。让我重复一遍:Persistent memory 就是磁盘上的 Markdown 文件!这个 agent 可以读取昨天的笔记,并在自己的文件中搜索额外的上下文。你可以根据需要查看和编辑 agent 的文件。这其中有一个有用的经验教训:并非每个 agent system 都需要复杂的 memory 策略。更重要的是你理解 agent 在做什么,并且它能够在多次运行中保持上下文。 ...

March 18, 2026 · 2 min · Kesha Williams

2026 年开发者真相:告别编码,重回“规划”

作者:Tim O’Reilly 译者:Carl Cui 这篇文章源自 O’Reilly 的 Tim O’Reilly 与 Google AI 专家 Addy Osmani 在 2026 年 2 月的一场深度访谈。Addy Osmani 在谷歌领导 Chrome 浏览器的开发者体验团队长达 14 年之久,最近转到谷歌云人工智能公司,专注于 Gemini 和 agent 开发。作者 Tim O’Reilly 的这篇概括性文章可以帮助 AI 时代的开发者更好地区分现实和噪音。 1. 难点在于 agent 协调,而非内容生成 Addy 指出,目前人们使用 AI agent 的方式多种多样。一边是单人公司运行着成百上千个 agents,有时连代码都不会审查。另一边则是对质量门槛和可靠性有要求,需要考虑长期维护的企业。 Addy 的看法是,对于大多数企业来说,“真正的边界不一定是为了某个任务而拥有成百上千个 agents。关键在于协调一定数量的 agents,解决实际问题,同时保持控制和可追溯性”。他指出,像 Google Agent Development Kit 这样的框架现在可以在单个系统中同时支持 deterministic workflow agents 以及 dynamic LLM agents,这样你可以灵活地选择什么时候需要可预测性,什么时候需要便利性。 Agent 生态系统正在快速发展。A2A(由 Google 贡献给 Linux 基金会的 agent-to-agent 协议)处理 agent 之间的通信,而 MCP 处理 agent 对工具的调用。组合在一起,它们就像是 AI agent 时代的 TCP/IP。不过 Addy 认为:“几乎没有人想出如何让所有东西尽可能顺畅地协同工作。我们正尽可能地接近那个目标。而这才是这里的实际难题。不是生成,而是协调。” ...

March 18, 2026 · 2 min · Tim OReilly

个人站点安全防护

在个人服务器上搭建网站,对于计划长期运行的站点,有一个问题是必须要考虑的,那就是站点的安全问题。这里介绍一些基本的防护手段。防护的核心原则是:在保持服务可访问的前提下,最大限度地缩小攻击面,并建立多层防御。 1. 核心端口功能与风险 通常 Web 服务器会开放 22/80/443 这三个端口,我们了解下每个端口的主要风险点: 22 (SSH):管理的大门。主要风险是暴力破解和弱口令。一旦被攻破,服务器就易主了; 80/443 (Web):服务的脸面。主要风险是Web应用漏洞(如SQL注入)、DDoS攻击和CC攻击; 所有端口:都存在基于软件漏洞的0-day攻击风险,以及系统配置不当带来的隐患; 2. 个人服务器分层防护 第一层:访问控制与最小化原则(最基础也最有效) 这部分是必须做的,能挡住绝大多数自动化攻击。 SSH 端口安全(关键!) 禁用密码登录,改用密钥对:这是最重要的一步。 密码很容易被暴力破解,而密钥对几乎无法被暴力枚举。 操作:修改 /etc/ssh/sshd_config,设置 PasswordAuthentication no。 更改默认端口(可选但推荐): 将 SSH 服务从默认端口 22 改为一个高位端口(如2222)。 这并不能防住定向攻击,但能瞬间避开 99% 的自动化扫描和攻击脚本。 操作:修改 /etc/ssh/sshd_config,设置 Port 2222。 安装 Fail2ban:这是一个必备工具。 它会监控 SSH 日志,当发现同一个 IP 多次登录失败后,自动将其加入防火墙黑名单一段时间,能有效遏制暴力破解。 配置:重点监控SSH服务,设置合适的maxretry(重试次数)和bantime(封禁时间)。 防火墙配置 只开放必要端口:使用防火墙,只放行你需要对外提供的端口(80, 443, 22(或你修改后的 SSH 端口))。 通常,云服务提供商会提供默认的防火墙功能,通过云服务控制台即可完成配置。如果需要手动配置服务器防火墙(一般是 ufw 或者 firewalld),可以将默认策略配置为“DROP”,然后只放行需要对外提供的端口。命令示例(ufw): sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 2222/tcp # 假设SSH改到了2222端口 sudo ufw enable 注意:优先选择云服务厂商提供的防火墙,而非 ufw,具体原因下面会提到。 ...

March 4, 2026 · 2 min · Carl Cui

Hugo 主题 PaperMod 配置

为 hugo 站点设置默认主题后,需要在配置文件中对主题进行配置,以定制 hugo 站点显示内容。hugo 配置文件位于站点根目录下,可以是 hugo.toml, hugo.yaml, config.yaml 其中之一。hugo 可选的主题比较丰富,可以在 https://themes.gohugo.io/ 选择自己喜欢的主题。不同的 hugo 主题,对 content 目录下文章组织有不同的要求,并且配置选项也各不相同,配置时还需要参考主题各自的文档。 我的博客配置了 PaperMod 主题,这篇文章主要对该主题的初始配置做一个记录。 1. PaperMod 初始配置 为 hugo 站点下载 PaperMod 主题: # 将 PaperMod 项目设置为 git 仓库的子模块,并下载 PaperMod 主题 git submodule add --depth=1 \ https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod PaperMod 下载到 theme 目录后,将站点默认主题配置为 PaperMod,此时 hugo 配置文件如下: baseURL: "https://examplesite.com/" title: ExampleSite languageCode: 'us-en' theme: PaperMod 这样,hugo 站点已经具备了 PaperMod 主题的雏形,但是站点处于“毛坯”阶段,需要进行一定的“装修”。 注意:hugo 支持本地预览,主题配置过程中可以通过下面的命令实时查看站点“装修”效果: # -D include content marked as draft # --disableFastRender enables full re-renders on changes # --gc enable to run some cleanup tasks (remove unused cache files) after the build hugo server -D --disableFastRender --gc 2. PaperMod 进阶配置 2.1 一些简便的配置 参考 PaperMod 示例站点配置,以下是 hugo 配置文件中一些便利性的配置: ...

March 3, 2026 · 2 min · Carl Cui

基于 Caddy 展示个人静态博客

基于 hugo 生成的个人静态网站,有多种上线方式可以选择(参考 Host and deploy with hugo)。如果你和我一样,打算将个人博客部署在自己的 VPS 服务器上,那么 VPS 服务器需要运行 HTTP 服务,可以是 nginx,也可以是 caddy。这里我选择 caddy,因为它的文档完整,安装配置简单。 1. 安装 caddy caddy 支持多种安装方式,可以直接下载 caddy 二进制文件: from releases on GitHub (expand “Assets”) Refer to Verifying Asset Signatures for how to verify the asset signature from our download page by building from source (either with go or xcaddy) 也可以通过操作系统各自的包管理器进行安装,通常这种方式会为 caddy 自动创建用户和用户组,还会为 caddy 配置 systemd service。 生产环境下,十分建议将 caddy 配置为 systemd service。 Debian, Ubuntu, Raspbian # Debian, Ubuntu, Raspbian sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg chmod o+r /etc/apt/sources.list.d/caddy-stable.list sudo apt update sudo apt install caddy Installing this package automatically starts and runs Caddy as a systemd service named caddy. It also comes with an optional caddy-api service which is not enabled by default, but should be used if you primarily configure Caddy via its API instead of config files. ...

March 2, 2026 · 3 min · Carl Cui

基于 Github Actions 自动更新博客

这篇文章介绍一种将博客自动更新到 HTTP 服务器的方式。 假设你有一个 VPS 服务器,并且上面已经运行 HTTP 服务器(可以是 nginx,也可以是 caddy)。那么将 Hugo 站点提交到 GitHub 后,可以借助 GitHub Actions 将站点自动部署到 VPS 服务器,核心思路是:在 GitHub 的虚拟环境中安装 Hugo、生成静态文件,然后通过 SSH 将public目录的内容同步到你的 VPS 上。 整个过程配置一次,之后你只要git push,网站都会自动更新。 下面是一个经过实践检验的自动化部署方案,包含配置步骤和完整的 YAML 代码。 1. 配置 GitHub Actions 第一步:准备工作——在 GitHub 仓库中配置密钥 为了让 GitHub Actions 能安全地登录你的 VPS,你需要将 VPS 的登录凭证存储在 GitHub 仓库的“Secrets”中。 在你的 GitHub 仓库页面,点击 Settings → Secrets and variables → Actions。 点击 New repository secret,添加以下两个密钥: SERVER_IP:你的VPS公网IP地址(或者可解析的网址亦可)。 SSH_PRIVATE_KEY:你的VPS登录私钥。 如果你没有密钥对,可以在本地通过ssh-keygen -t rsa -b 4096 -f ${private_key_path}生成: ...

March 2, 2026 · 2 min · Carl Cui

基于 hugo 构建个人博客

基于 hugo 构建个人技术博客剥离了数据库和动态脚本的复杂性,让你能完全专注于写作和技术分享。另外,hugo 的工作方式可以非常自然地借助 git 对文章进行版本管理,特别适合有一定命令行基础的人。 1. 准备工作,安装必要工具 需要安装两个基础软件: Git:用于文档版本管理和后续的主题安装。 Hugo (扩展版):核心的静态网站生成器。建议安装带有“extended”后缀的版本,以确保支持Sass/SCSS等现代主题特性。 macOS用户:brew install hugo 国内用户可能需要为 brew 配置 proxy,例如为 brew 配置 SOCKS5 代理: export all_proxy=socks5://$HOST:$PORT 或者为 brew 配置 HTTP 代理: export http_proxy=http://$HOST:$PORT Windows用户:可以使用 scoop install hugo-extended,或从Hugo GitHub Releases页面下载。 安装完成后,在终端输入 hugo version 验证是否成功。 注意:不同 hugo 主题对 hugo 的版本有一定需求,可以从 Hugo GitHub Releases 页面下载特定版本 2. 搭建博客骨架 在终端执行以下命令,Hugo会为你生成一个包含所有必要目录的站点骨架。 # 创建一个名为 "my-blog" 的站点(可替换为你喜欢的名字) hugo new site my-blog Congratulations! Your new Hugo site was created in ./my-blog. Just a few more steps... 1. Change the current directory to ./my-blog. 2. Create or install a theme: - Create a new theme with the command "hugo new theme <THEMENAME>" - Or, install a theme from https://themes.gohugo.io/ 3. Edit hugo.toml, setting the "theme" property to the theme name. 4. Create new content with the command "hugo new content <SECTIONNAME>/<FILENAME>.<FORMAT>". 5. Start the embedded web server with the command "hugo server --buildDrafts". See documentation at https://gohugo.io/. # 进入站点目录 cd my-blog # 目录下生成了 `archetypes`、`content`、`themes`等文件夹和 `hugo.toml` 配置文件 tree . ├── archetypes │ └── default.md ├── assets ├── content ├── data ├── hugo.toml ├── i18n ├── layouts ├── static └── themes 8 directories, 2 files # 初始化Git仓库,方便后续管理主题和代码 git init # 为项目配置 .gitignore 文件 .gitignore 文件示例: # 构建输出目录 /public/ # 本地构建缓存与锁文件 /resources/ /.hugo_build.lock # 编辑器/IDE辅助文件 /assets/jsconfig.json /hugo_stats.json # 操作系统无关文件 .DS_Store Thumbs.db 3. 选择并配置主题 Hugo本身不带默认样式,你需要选择一个主题。 ...

March 2, 2026 · 2 min · Carl Cui