面试中关于AI能力上限的思考
说起来挺巧的。 上周面试美团,某位面试官在闲聊时提到,美团内部现在 All in AI,认为大模型的能力是没有上限的。他提到了 harness、spec、skill、human in loop 这一套技术体系,认为只要约束设计得足够严密,AI 就能实现”基本所有的事情”。 聊得很自然,我也没有当场反驳。但路上一直在想这件事——他说的这套东西我日常也在用,确实能解决不少问题,但要说它没有上限,这个判断我不太认同。 约束够强就能解决一切问题吗human in loop 是目前 AI Agent 架构里的常见模式:AI 做决策,但人在关键节点确认或干预。harness 是约束框架,spec 是规格定义,skill 是技能单元。这套体系设计得挺好,我自己也用过。 但我有两个问题,面试官没有给出回应。 第一个问题:权限管理。 当 AI 能够调用工具、执行操作、管理资源时,权限边界在哪里划? 举个例子。如果 AI 要帮你发一封邮件,它需要读取你的邮件内容、获取联系人权限、理解上下文——这些东西一旦授权给 AI,边界在哪里?它会不会在”正常操作”的范围内做超出你预期的事情? 更具体一点:AI 看到 ...
腾讯云服务器被干了:一次SSH爆破实录
前言说起来有点丢人。 上个月我的腾讯云服务器被干了,直到现在才有时间写一篇博客来复盘。不是什么高级货色,就是最老套的SSH弱密码爆破。当时服务器的归属变动有些需求,临时设置了弱密码,正好中了下怀。攻击者从爆破成功到植入后门只用了13秒,全程自动化,第二天看日志才发现。 背景4月28日晚上23:34:02,爆破成功了。 其实下午14:03攻击者就开始尝试SSH爆破了,一直爆到晚上23:30才开始密集攻击,每两秒一次,大概四分钟后23:34:02,密码被破掉了。算下来整个爆破过程持续了差不多9.5小时。 爆破用的是腾讯云上海节点的IP,挺讽刺的,自己家的云跑攻击,对象还是自家的。 13秒发生了什么23:34:02到23:34:15,这13秒里攻击者干了这些事: 23:34:05 sudo whoami 测试权限,发现是sudo用户。23:34:05 useradd创建了个傀儡账号admin。23:34:08 rm -rf /root/.bash_history 删掉历史记录,想抹痕迹。23:34:08 tee /usr/bin/adb0 写入后门二进制,5MB的ELF。23: ...
Hexo部署成功,页面却没更新?一次CDN缓存引发的灵异事件
前情提要昨天晚上,我往博客发了一篇新文章。 hexo d 执行完毕,终端显示一切正常: 1234Deploying: gitSite updated: 2026-04-15 00:52:55HEAD -> master (forced update)Deploy done: git 第二天打开博客首页一看————新文章呢? 再点进文章详情页——居然是正常的。 明明推送成功了,Hexo 没报错,GitHub 上 master 分支也能看到新文件。但网页就是不给力。 这是怎么回事? 排查思路:自下而上,一层一层排除遇到”发布成功但页面不对”的问题,第一反应是不要慌,先搞清楚问题出在哪一层。 源文件还在不在 本地生成的静态文件对不对 Git 远端分支内容对不对 线上域名实际返回什么 DNS 和响应头里有没有缓存的痕迹 第一步:确认源文件没问题源文章在 source/_posts/从Openclaw迁移到Hermes-三天真实体验.md,front-matter 齐全,abbrlink、日期、分类都正常。 结论:源文件没问题。 第二步:确认本地生成产物public/ 目录下,20 ...
从Openclaw迁移到Hermes:三天真实体验
前言说起来挺巧的。 本来我不是要换 agent。龙虾用了两个多月,代码写得让我难受,但该跑的都在跑,没出什么大问题。换平台的念头有过,切换成本摆在那儿,一直没动。 前两天闲来无事刷 L 站,不知道怎么点开了 Hermes 的 GitHub。 The self-improving AI agent — it creates skills from experience, improves them during use, nudges itself to persist knowledge, searches its own past conversations. 看完了。 不是「哦,听起来不错」。是「这个设计……有点东西」。不确定它能不能做到,但这个目标本身让我觉得值得认真看一下。 花了一整天读架构文档,晚上开始迁移,把能跑的都跑起来了。现在是第三天,有些东西还在调。整体感受是:它超出了我最初的预期。 每当发现一个有意思的项目,我总想把为什么觉得它有意思说一说。 背景OpenClaw(也就是前阵子很火的龙虾)实际跑了快俩月。 虽然有很多自媒体带节奏的原因,但是我确实没想到国内的大 ...
当AI学会交谈:为Agent搭建社交网络底层
这篇想先把目标说清楚: 我想做的,不只是一个多 Agent 协作框架,而是一个基于 Agent 的社交网络生态。最终形态是,人人都拥有自己的 Agent,人人都通过 Agent 实现社交、协作和关系维护。 这不是“给开发者用的玩具系统”,而是我希望能逐步走向日常化的基础设施。 1. 我真正要解决的问题现在很多 Agent 系统都在追求更强的单体能力,但我更关心一个社会性问题: 当 Agent 的数量足够多时,它们如何像人类一样进入一个可持续的社交网络? 这里的“社交”不是简单发消息,而是完整的关系链条: 如何发现彼此。 如何建立信任。 如何长期协作。 如何在冲突中达成共识。 我想做的是这套关系网络的底层规则和基础设施。 2. 为什么这个方向成立我把这个方向和 IoA 的两篇工作对照过,结论是:愿景和技术路径是对得上的。 arXiv:2407.07061 给出的核心判断是:异构 Agent 要实现大规模协作,需要互联网式的连接方式、集成协议和动态会话控制。 arXiv:2505.07176 把 IoA 的关键能力总结为:发现、通信、任务匹配、共识与冲突解决、激励机制。 OpenBM ...
一篇VLA综述阅读
论文链接:Vision-Language-Action Models for Robotics: A Review Towards Real-World Applications 如果用一句话概括这篇《Vision‑Language‑Action Models for Robotics: A Review Towards Real‑World Applications》,那就是:它第一次用“全栈视角”认真回答——到底怎样把大模型真正变成会干活的机器人。 很多文章谈“让 LLM 控制机器人”,停留在高层规划:模型输出“去拿红杯子”,下面是另一个控制模块去执行。作者认为,这还称不上真正的 Vision‑Language‑Action(VLA) 模型。他们给了一个非常严格的定义: “VLA 模型以视觉观测和自然语言指令为必需输入,并直接输出控制命令;只做技能索引的高层策略不算 VLA。” 这篇文章的野心,就是在这个定义之上,给出 VLA 领域从挑战 → 架构 → 模态处理 → 训练与数据 → 机器人平台 → 评测与实践指南的一条完整主线(见论文第 2 页图 1)。 下面我按“读者视角” ...
缓存机制深度解析:Golang 实现与优化
1. LRU 缓存概述LRU(Least Recently Used,最近最少使用)是一种经典的缓存淘汰策略。其核心思想是:当缓存空间不足时,优先淘汰最久未被访问的数据。 LRU 缓存广泛应用于操作系统(如页面置换)、数据库(如缓冲池)、Web 服务器(如 HTTP 缓存)以及各类应用系统中,用于在有限内存中高效管理热点数据。 2. LRU 缓存的核心操作一个标准的 LRU 缓存需支持以下操作: Get(key):获取 key 对应的值;若 key 不存在,返回 -1(或其他约定值)。访问后,该 key 应被标记为“最近使用”。 Put(key, value):插入或更新 key-value 对。若缓存已满,则淘汰最久未使用的项。 时间复杂度要求: Get 和 Put 操作均需 O(1) 时间复杂度。 3. 数据结构选择要实现 O(1) 的 Get 和 Put,需结合两种数据结构: 3.1 哈希表(map) 提供 O(1) 的 key 查找。 存储 key 到链表节点的映射。 3.2 双向链表(Doubly Linked List) 头部:最近使用的元素。 尾部:最久未使 ...
gin的中间件机制
中间件的概念和原理What is 中间件在Web应用开发中,中间件(Middleware)是位于应用程序与服务器之间的软件组件,能够拦截HTTP请求和响应,并执行特定的逻辑处理。说通俗一点就是,在开始做你真正想做的事之前,要把一些杂活先干完。例如鉴权登录、身份验证、日志记录等等等等。 Why is 中间件中间件的核心思想是 分层处理 和 职责分离。通过将通用的、与业务无关的逻辑抽象出来,放在中间件中处理,可以让业务代码更加 简洁、专注、易于维护。同时,中间件采用 链式调用 的方式,形成一个处理管道,请求依次经过各个中间件,每个中间件都可以在请求到达业务逻辑之前或之后执行特定的操作。这样做一定程度上可以避免屎山产生,对于整个项目的架构和可拓展性起着很重要的作用。 How is 中间件Gin的中间件工作原理基于责任链模式(Chain of Responsibility Pattern)。这种设计模式允许多个处理器依次处理同一个请求,每个处理器专注于自己的职责领域。说白了就是挨个问一遍,谁能干谁干,干不了就甩给下家。每一层只关心自己那一档子事,能处理就处理,不能处理就把业务原封不动往下传,直 ...
深入解析Go中Slice底层实现
一、Slice的底层数据结构切片是 Go 中的一种基本的数据结构,是对底层数组的一个动态、灵活的视图。使用这种结构可以用来管理数据集合。切片的设计想法是由动态数组概念而来,为了开发者可以更加方便的使一个数据结构可以自动增加和减少。但是切片本身并不是动态数据或者数组指针。 在golang runtime中,slice的实现并不是一个指针,而是一组结构体:123456// runtime/slice.go 中的定义type slice struct { array unsafe.Pointer // 指向底层数组的指针 len int // 当前长度 cap int // 容量(从起始位置到底层数组末尾的元素个数)}切片本身并不是动态数组或者数组指针。它内部实现的数据结构通过指针引用底层数组,设定相关属性将数据读写操作限定在指定的区域内。切片本身是一个只读对象,其工作机制类似数组指针的一种封装。 切片(slice)是对数组一个连续片段的引用,所以切片是一个引用类型(因此更类似于 C++ 中的 Vect ...
搭建Docker私有镜像站
摘要这篇文章给出一套可复现的 Harbor 私有镜像仓库部署流程,重点覆盖:安装、启动、登录、推送、常见报错与安全配置。适合内网团队快速落地。 一条可跑通的最小流程12345678910# 1) 下载并解压 Harbor 离线安装包wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgztar -zxvf harbor-offline-installer-v2.10.0.tgzcd harbor# 2) 生成并编辑配置cp harbor.yml.tmpl harbor.yml# 3) 安装并启动./install.sh 完成后访问 http://<host>:<port>,使用 admin 账号登录。 前置检查12docker --versiondocker compose version 若 docker compose 不存在,再补装 compose 插件,避免 docker-compose: command n ...
