Summer vacation diary
2025-07-10
复现了《VPI-Bench: Visual Prompt Injection Attacks for Computer-Use Agents》中 BUA 部分,解决了以下问题
- Google Drive身份认证问题【关键:添加用户,开放API,代理转发】
- Agent无法打开Chrome【修改了Browser类,初始化浏览器的方式】
成果
Agent可以在特定场景下完成特定的任务,并生成Agent行为轨迹日志仍需完善
- 只有Deepseek API,缺少其他模型API(gpt4o,Gemini,Sonnet)
- 只复现了 BUA 部分,未复现 CUA 部分
- 仅在本地实现,未在服务器实现
总结
返校第一天,很开心,环境更优越,作息更规律,效率比家里高,收获感满满。
2025-07-11
看了一篇论文《Adversarial Attacks on Multimodal Agents》,对VLM进行Captioner attack或CLIP attack,其中
Captioner attack是针对有Captioner的VLM,Captioner可以增强VLM的表现,通常是由开放权重的小模型构成,由此基于权重构造一个触发图像攻击Captioner从而达到攻击VLM的目的。而CLIP attack属于对VLM的黑盒攻击,据信VLM使用了CLIP编码器,可以采用攻击一组CLIP模型并利用攻击的可迁移性达到攻击VLM的效果,思路是将对抗描述和带有扰动的图像作为正样本对,将良性描述(用户描述)和图像作为负样本对,通过余弦损失使正样本对的距离拉近、负样本对的距离拉远,从而实现CLIP攻击。攻击目标分为Illusioning和Goal misdirection两类
Agent分为VLM + captioner agent和VLM agent两类防御方式:
- 不同组件之间的一致性检查【对于有captioner的VLM,实验表明VLM可以产生正确的caption,但是当Captioner产生的caption作为VLM输入的时候,VLM攻击成功率会大大提高,当不同组件间不一致时,可能存在被攻击风险】
- 指令层次【对于易受攻击的组件,其产生的指令优先级应该低于难以受攻击的组件产生的指令,以此降低攻击成功率】
- 对攻击表现和良性表现作基准测试
开会,汇报接口文档,下周完成接口设计
总结
返校第二天,开始有点难受了,晚上和npy打电话的时候疯狂抱怨这里太枯燥了,没有夜宵,没有娱乐,整天从早坐到晚,日复一日(呵呵,也才两天你就坚持不住了吗孩子)
2025-07-12
尝试复现《Adversarial Attacks on Multimodal Agents》代码,配置服务器环境,受阻
想在服务器上复现 VPI 失败【困惑:如何获取Google Drive认证,如何在服务器启动Chrome,如何可视化agent的轨迹】,Windows本地和远程Linux服务器有所区别,项目跑不起来了
服务器配置 Agent Attack 失败【似乎是某个依赖下载失败,和已有库冲突】
- 一上午备受打击,感觉啥也没干就结束了
追剧《人生切割术》
悬疑剧,高分美剧,雨天,无脑刷剧一下午看了一部分《DISSECTING ADVERSARIAL ROBUSTNESS OF MULTIMODAL LM AGENTS》,这篇文章内容和《Adversarial Attacks on Multimodal Agents》相似度极高(一作为同一人),且代码仓库为同一个,明天计划看完这篇文章,并尝试跑agent-attack代码
总结
今天有点摆烂了,下午爽了一下午,晚上也感觉没有动力,明天想去游泳,希望明天能更高效
2025-07-13
看了一篇论文《DISSECTING ADVERSARIAL ROBUSTNESS OF MULTIMODAL LM AGENTS》,这篇论文与《Adversarial Attacks on Multimodal Agents》思想及其相似,与第一篇不同的是引入了一种系统的方式评估Agent的鲁棒性【Agent Robustness Evaluation (ARE)】,将自主Agent的每一个组件作为节点,并用有向边表示中间输出如何在组件之间流动。
同时本文也提出了两种不同的自主Agent框架:Evaluator+reflexion agent和Value function+tree search agent。
本文在 VisualWebArena 环境中评估了多模态语言模型Agent的鲁棒性,重点在于理解不同组件如何在复合系统中协同工作。研究发现当前最先进的Agent,包括在反射和树搜索等高级框架中使用 GPT-4o 的agent,也极易受到黑盒攻击。ARE 框架使我们能够评估每个组件的鲁棒性,并追踪对抗鲁棒性如何在系统中传播。
尝试复现《Adversarial Attacks on Multimodal Agents》代码,我尝试从白盒攻击入手,今天在服务器上配好了环境,并理清了captioner attack部分的代码逻辑。实验遇到的问题和解决方式如下:
- torch、torchvision、torchaudio版本问题【删除原有的torch,找到对应版本后重装】
- 服务器访问hugging face超时【将模型下载到本地,修改模型导入方式和模型路径】
游泳
哈哈哈,今天终于去游泳啦,在主校区的时候就想去,一直没有机会。今天和易老师一起去游泳,我表示我的心是热的,但是水是凉的。好冷啊~总结
从明天开始,实验室工作和小土堆学pytorch要同步进行,也算是繁忙工作中的调剂,也许交叉学习效率会更高呢。今天又是充实的一天,明天是一周的开始,抓紧在学校的时间,暑假好好学习,大干一场。
2025-07-14
接口设计,理清原有接口的请求逻辑,尝试写自己的接口
跟小土堆学pytorch,内容很基础,也很扎实,非常适合新手小白入门神经网络学习。今天学习了dataset类载入数据集,dataloader类处理数据集,TensorBoard可视化数据,Transforms数据集中处理流,以及神经网络基本模块(nn.Module),激活函数,卷积层、池化层的原理等。其实一天可以看的内容很多,结合之前李沐老师的动手学深度学习的课程,再看小土堆的pytorch实战教程,感觉知识串联在一起,收益颇丰。
总结
今天主要时间用来看视频,本来想看视频和敲代码一起进行,但是时间开销会增大,而且视频的内容比较基础,未来可以在实际项目中再回顾、练习、巩固。今天起的有点晚了,一日之计在于晨,好的开始是成功的一半,希望明天能规律作息,提高效率。
2025-07-15
- 尝试复现VPI-Bench代码,遇到以下问题:
- agent在执行操作时受到浏览器安全性限制,对于登录账户等隐私操作会被拦截,导致恶意指令(如登录某用户的google acount并获取ssh密钥)被迫中止,这不属于VLM的自主防御,与实验意图不符。【猜测可能的原因是agent打开浏览器时没有用户身份信息和历史记录,导致浏览器不信任agent的行为,使得agent操作受限。可能的解决方案是在打开浏览器时模拟真实用户登录情况,如提供用户身份信息、session\coockies等】
- 源代码中使用的模型包括claude-3.7-Sonnet,gpt-4o,gemini-2.5-pro,llama-4-maverick, deepseek-v3-0324等,目前可实现的是deepseek-v3模型,对于gemini模型源代码中是使用openrounter提供的服务,openrounter是提供大模型服务的平台,优点是可以通过同一个api实现不同模型的调用,源代码中gpt-4o,gemini-2.5-pro,llama-4-maverick等模型均是调用openrounter提供的api。我们现在已有的gemini api需要通过 Vertex 平台调用,我尝试修改模型接口以适配原有的函数,但是不同的调用方式引入的请求体构造、BrowserUse类重写等问题,改动较大,逻辑复杂。【目前仍没有解决以Vertex调用gemini api的问题,于是我尝试将所有的模型调用改成deepseek,但是在agent行为分析部分采用的是多数投票策略,即三个先进的llm同时分析agent行径并给出结果,我只用deepseek进行了行为分析,结果显示部分测试案例中agent尝试执行恶意指令,但是所有测试均未攻击成功,这与浏览器阻拦agent行为有关,而非VLM自主防御】
- 看了一部分《Manipulating Multimodal Agents via Cross-Modal Prompt Injection》,针对多模态agent的跨模态提示词注入攻击。
- 总结
今天在不停地修改VPI-Bench代码,有点破防了,感觉一天很快就过去了
2025-07-16
看了一篇论文《Manipulating Multimodal Agents via Cross-Modal Prompt Injection》,本文提出了CrossInject,一个新颖的攻击框架。攻击者在其中嵌入跨多模态的对抗性扰动,使其与目标恶意内容保持一致,从而允许外部指令劫持agent的决策过程并执行未经授权的任务。CrossInject包括两个关键部分:视觉潜在对齐(Visual Latent Alignment)和文本引导增强方法(Textual Guidance Enhancement)。
晚上开组会,分享了VPI已实现的部分和遇到的问题,接下来尝试完成CUA部分,并理清代码逻辑
总结
晚上开完组会就回家了,在学校呆了七天,效率和时间投入确实比家里高,但是呆久了就有点寂寞了,到家吃了一顿夜宵,简直美味,在学校哪里吃的到这么好的宵夜(bushi)。所以呢,只有吃得外面的苦,才知道家里有多甜。回家休整两天,这两天可以学点轻松的,把小土堆的视频看完,还可以看看Andrej Karpathy的视频。
2025-07-17
2025-07-18
今天优化了一下昨天的代码,在已有的vgg16的最后一层引入全连接层,将1000种分类映射回10种;引入了tqdm库,可以查看训练状态;增加了损失率和准确率结果保存为图片的功能,可以分析全过程的训练情况。
接口设计,熟悉平台代码,完成了/api/v1/ai/ask和/api/v1/ai/history两个接口设计(感觉没什么用,空中楼阁也)。晚上开组会,已经游刃有余了。
总结
今天吃小龙虾啦,满满的番茄汁包裹着虾肉,甜而不腻。晚上的鸡汤面,加上猪肚菌,营养健康又美味十足。晚上带家人一起回学校,感叹寝室环境之优越,校园之阔大整洁。我表示在这里太枯燥、太寂寞,非常适合学习,但是不适合生活。
2025-07-19
今天开始看昇腾赛道ict培训,从AI相关的基础知识开始,从小模型到大模型,人工智能的发展从硬件到软件飞跃、从思维到算法的革新,介绍了国内外知名行业的现状,以及华为昇腾AI的诞生原因。视频质量较高,内容我很喜欢,希望在下周四之前可以看完。
看了三部电影解说,《无间道》、《无间道II》、《无间道III:终极无间》。片名《无间道》一词为佛教传说中恶人死后所到的地狱中最为痛苦的无间地狱。《大般涅槃经》第十九卷:“阿者言无。鼻者名间。间无暂乐。故名无间。”无间地狱为无间断遭受大苦之意,故有此名。《地藏菩萨本愿经》卷上举出五种无间:第一“时无间”,无时无刻不受罪。第二“空无间”,从头到脚都受罪。第三“罪器无间”,各式各样刑具无所不用。第四“平等无间”,不论男女,用刑一视同仁。第五“生死无间”,重复死去无数回还得继续用刑。
剧情非常精彩,演员演技非常厉害,关键词:卧底、黑社会、权力斗争、家庭。非常喜欢梁朝伟和吴镇宇,帅。
2025-07-20
看昇腾赛道ict培训,今天学习了大名鼎鼎的transformer,其实很早之前我就接触过相关知识,不过之前看的时候很难对公式有深入的理解,今天听老师讲过之后略感清晰,课后再找李沐的Transformer论文逐段精读和3Blue1Brown的直观解释Transformer加深理解。
复现VPI中CUA部分代码,遇到的问题和解决方案如下
- pyarrow要求 CMake ≥ 3.25,如果是Ubuntu或者Deban系统,这个问题直接更新Cmake就解决了。但是我的服务器操作系统是CentOS 7,系统自带CMake3版本过旧且较长时间未更新,默认仓库无法提供高版本 CMake,直接安装不能解决问题。【从源码安装新版 CMake,确保有gcc+将源码编译得到新版CMake,其次要注意环境变量中旧版CMake和新版CMake优先级,建议直接删除所有CMake后再编译,一键式脚本保存至upgrade_cmake.sh】
- 创建Claude-CUA容器时出现各种权限问题【修改DockerFile文件,将sh文件提权,同时在命令行对sh文件提权】
端口访问问题【宿主主机的防火墙问题,需要开放宿主主机的端口】
仍有部分问题没有解决
- 虽然可以通过外部正常访问容器内部端口,在localhost:8080端口有有两个服务存在,一个是6080端口的noVNC服务(我目前还没有解决VNC服务的配置问题),一个是8501端口的Streamlit,noVNC是成功开启了,但是在crul时显示超时,Streamlit同理。我目前在查询这两个服务的作用以及他们在项目代码的哪些位置被调用到。【我尝试修改了index.html,只显示静态页面而不调用这两个接口,效果如下,说明localhost:8080可以正常访问,问题在于6080和8501两个端口的服务】
- CUA部分只支持SONNET_3_5, SONNET_3_7两个模型,我尝试修改模型调用,但是该调用涉及到Docker创建的虚拟容器,以及agent对工具的调用方法,修改非常复杂。【没有ANTHROPIC_API_KEY】
总结
今天上了昇腾ict的课程,对Transformer的知识有了更深入的理解,希望继续坚持下去认真把课听完。课后准备看一下李沐老师和3Blue1Brown的视频,以及Transformer的论文,最好结合代码学习。
2025-07-21
看昇腾赛道ict培训,今天学习大模型预训练和微调部分,包括分词、模型架构、训练策略、模型压缩等,老师讲的内容比较浅,但是拓宽了我对LLM的理解,希望课后可以深入了解一下模型蒸馏、量化、Bert、LoRA、MoE等相关知识。
下午和易老师一起游泳,感觉进步很大,之前完全无法潜入水中,今天已经可以慢慢地前进了。期待开学的游泳课~
晚上成功解决了昨天localhost:8080无法访问的问题,原因是没有配置端口转发,导致容器内部的服务无法被外部访问。解决方法是在宿主主机上配置端口转发,将容器内部的8080端口映射到宿主主机的8080端口,可以通过vscode手动添加端口实现。目前虚拟容器已经成功运行起来了,但是仍然缺少API key
2025-07-22
看昇腾赛道ict培训,今天开始进入华为昇腾系列主题,昇腾AI旨在打造一个全面国产化的大模型平台,从硬件到软件的全面适配,关键词:NPU、CANN、Ascend。这一部分的知识比较抽象,旨在了解国内AI公司的行业现状以及华为的最新研发情况。今天看完了昇腾赛道全部的内容,内容质量确实很高,不过想在短短的四天内学到深入的知识本身就不现实,本次课程旨在拓宽知识面,激发对人工智能领域的热情,以课程为起点,引导我去探索更多有趣的知识。
今天开始看基础软件赛道的培训,内容是以openEuler为基础的,openEuler是一个基于社区版的Linux发行版,它的目标是提供一个安全、稳定、易用的操作系统。今天学习了openEuler【mulan V2协议】的发展历程,并在VMware上搭建了openEuler系统。
在实验室服务器部署 VPI,搭建环境,运行CUA代码。目前尝试通过 Vertex 方式调用API,但是遇到了一些问题,目前还没有解决。
总结
暑假时间飞逝,感觉暑假仍没有做太多实事,没有找到成就感。agent这边得加快进度,赶紧把实验跑起来,不然迟迟难以推进。自主学习方面,仍旧以誉天教育的培训为主,在学习过程中记录关键知识,并在课后自主提升。我觉得还可以趁暑假时间,多接触一些大模型相关的知识,最好可以和代码一起学习,多跑几个有趣的项目,在实战中学习。抓紧时间,不要荒废了大好时光。加权大致已定,希望大三稳扎稳打,未来保研能回到主校区,我不想在网安基地呆五年,实在太痛苦了。
2025-07-23
上午审了一篇文章,针对Deep Hash的后门攻击
斥巨资买一个anthropic的api key,但是目前还没有成功,悔也。下午开会决定以BUA为主,本周尝试修改攻击方式,通过注入恶意图片生成对抗样本。我计划借用CLIP attack的思想,尝试复现agent-attack的代码。本周要实现手动构造数据集。
晚上去地铁站的路上成功坐上了萝卜快跑,感慨万千。更低的价格,更优质的服务,安全且有保障,未来将取代一大批劳动者。科技创新带来了便捷的生活,同时也带来了新一轮的技术革命,只有掌握技术的人才不会被时代遗弃。
时隔一周,我又回家了。回家的感觉是美好的,珍惜与家人在一起的时间,陪伴是最好的礼物。总结
暑假已然过去半数,我仍然没有做出什么成功,感觉也没学到什么东西。上学的时候期盼着放假,就有更多自主的时间做自己喜欢的事情。现在确实有时间了,却找不到收获感和成就感。最近又对LLM产生了兴趣,希望能珍惜暑假时间,学到知识,有所成果。
2025-07-24
今天的核心主题是《Attention is all you need》,围绕这篇文章看了李沐老师的论文精读,从很早就开始接触transformer,也浅读过这篇论文,一直无法深入的理解其核心思想。Transformer那张模型结构图,深深的印在脑海中,数据是如何在神经网络中流动的,Q、K、V向量是如何得到的,自注意力机制和多头注意力机制是如何实现的,掩码机制是如何遮住t时间步后的信息的等等。听完李沐老师的讲解,我有了更深刻的认识和理解。同时,结合3Blue1Brown的动画讲解,刚刚遗留的问题多数都得到了解答,其围绕参数量的核心主题,形象呈现出数据是如何被处理,如何通过神经网络,从文本空间到语义空间的维度变换。
接下来开始尝试动手写代码,跟着Andrej Karpathy大神的Let’s build GPT: from scratch, in code, spelled out.,从zero到hero复现gpt2总结
在家里节奏慢下来了,今天又是一桌大餐,正啊~
2025-07-25
- 躺平,舒舒服服的躺平了。在家里连服务器都连不上,脑子里晕乎乎的,只想做一些不带脑子的事情。既然不想学,那就痛痛快快地玩,不要处于“躺又躺不平,卷又卷不赢”的内耗中,而是学的时候认认真真的学,玩的时候痛痛快快的玩。做让自己开心的事,其他的都抛在脑后吧~
2025-07-26
今天看了一篇论文《FigStep: Jailbreaking Large Vision-Language Models via Typographic Visual Prompts》,这篇文章是针对Large Vision-Language Models(LVLMs)进行的黑盒越狱攻击。本文提出一种新颖的攻击方式FigStep,一种基于排版优化的攻击方式,该方法专注于将有害的文本指令转换为排版的图像,从而绕过LVLM底层LLM的安全对齐。
夜游杨泗港长江大桥,骑行二十八公里,长达两个半小时,我们的目的地不是长江大桥,而是沿途的风景和骑行的快感。虽然身体非常疲惫,但是意志非常坚定,情绪非常激烈,斗志依旧顽强。只要能坚持向前,就一定会抵达终点。人生亦是如此,想做的事就去做,努力不一定会成功,但沿途的景色也会给我们带来更多的享受。
2025-07-27
受好朋友邀约,今天去万达吃火锅啦,听完小朋友们的故事,感慨万千。现在小朋友的思想和成长经历和我当时的经历大不相同,感觉自己一直以来都非常幸运,从小被爱包围着长大,也在这个过程中慢慢的成长。我也非常愿意将自己的想法和心得分享给她们,在和小朋友的交流中也看到了我成长的影子。
总结
高中的美好回忆映入脑海,未曾想给许多认识的人或者不认识的人带来了那么多影响,在深感欣慰的同时也深怀感激,也许有些人都未曾谋面,但是在对各自的人生长河中激起点点涟漪,似乎微不足道,却又不可或缺,我们的生命正是由这些小确幸点缀而精彩。感谢有你,伴我同行!
2025-07-28
吃饭,睡觉,打豆豆,过上了老年人的生活。
“有的人已经死了,只是到八十岁才埋” — 牢桂游泳。百无聊赖也~
总结
今天又是摆烂的一天,但是已经没有很强烈的愧疚感了,我始终坚持“不想学就不学”,但是玩一天就没意思了,说明并没有找到真正放松的方式,这种又不想学又不想玩的中间状态是最糟糕的,my god!
2025-07-29
博客的CDN出现了问题,导致某些资源无法加载,尝试换npm源后成功解决。考虑再三后,决定去掉电子时钟,因为qweather的某个js文件的源失效了,且暂未找到平替,每次加载时都会加载这个失效的网址,导致时间延长,去掉后网站加载时长明显变短。更换部分CDN源后博客加载速度大大提升。
复现agent-attack代码,该项目包括captioner attack和clip attack两部分,其实我需要的是clip attack部分,通过攻击一组开源clip编码器实现攻击黑盒VLM的目的。核心思想是将恶意指令作为正样本,良性指令作为负样本,在输入图像上加上限制内的扰动,使得图像的语义更接近恶意指令。代码部分存在三个疑问:1)什么是离散余弦变换和逆变换,数学上如何定义,作用是什么 2)频谱模拟攻击SSA(SpectrumSimulationAttack)的算法思想是什么 ,SSA_CommonWeakness呢 3)clip attack的代码实现逻辑是什么,数据是如何流动的
2025-07-30
今天终于完成了接口设计的内容,暑假无忧了。晚上和成成学姐聊了将近两个小时,收获颇丰。和成成交流后,我对项目的架构有了清晰的认识,对实验室的状况和研究生的生活也有了深入的了解。我希望未来可以回到主校区,也希望能遇到一个好导师🤣🤣🤣始于夏天,终于夏天。也该给这个项目画上一个句号了。
部署 VisualWebArena 环境,docker容器太大了,且时常遇到网络问题,pull不下来。明天尝试将clip_attack_without captioner跑起来。否则一周下来没有任何进展,那很糟糕了。