服务外包特别记录
前言
我记得在我入学之前,就有学长告诉过我,“大小挑”等比赛不要去参加,都是PPT大赛,没有什么参加的价值。入学之后也经常听到类似的声音,劝我不要去参加诸如此类的比赛,没有含金量纯纯浪费时间。但很遗憾,大一的我还是踩进了这个“陷阱”,这个比赛吃掉了我大半个学期的时间,但是最后遗憾国三下播,非常不具有性价比。在这里只能说“后人哀之而不鉴之”,为了尽最大可能的阻止“亦使后人而复哀后人也”的悲剧发生,我决定在此处书写下这段“血泪史”。如果你是新生,或者准备参赛,在此之前一定要好好读这篇文章。
摘要
虽然说是取得了“国三”,但是我对这个结果并不满意——我认为这次的作品不应该只获得这种评级。6月6日答辩结束之后,我花了相当长的时间来思考详细的原因,我把它归类成了以下几点:
- 团队组建仓促,组建之前缺乏对成员的详细了解
- 选题仓促,缺少前期调研和技术选型
- 团队成员之间的协作效率低下,且没能很好的形成团队共同知识
- 决赛答辩文稿存在较大的问题
- 组委会评委可能并不是相关赛题领域的专家
总结出的这几点,我会在接下来的正文部分,按照时间顺序详细展开。
正文
PART1 团队组建
时间来到2026年3月初期,刚开学的时候就收到了来自某位老师的推荐,说“有个研究生实验室在招募学生做项目”,当时由于好奇我便前往咨询,他们希望做“基于AI AGENT的自动化应急响应”。
我当时就纳闷了,这个项目听起来不像是一个人能干的出来的,于是我继续问能获得什么支持,得到的答复却是:
- 团队你要自己组建,人你要自己找
- 钱是没有的,就算商品化了也分不到你一杯羹
- 能提供的只有一些类似“奇安信防火墙”接口,等类似的支持
- 除了“应急响应”,还想做“异常流量识别”以及“漏洞修复”
- 实验室还有其他类似“智能学习”等项目,不想做这个也可以看看别的
- 如果接了这个项目,实验室老板希望三个月能交付使用
聊了大概三十分钟,我就感觉这是个大雷,合着就是要找免费的黑奴呗。感觉不靠谱,于是便拒绝了这个所谓可以“提升能力”的“美差”。
不过,这个方向倒是引起了我的注意,因为在交流的时候,他们顺便提到,这个和服务外包的 A29 题很像,如果接了这个项目可以顺带参赛并拿奖。后来我仔细去研究了一番,感觉确实可以参加,但是没必要跟着这边做吃力不讨好的活,于是便计划着自行筹备团队。
随后,我开始找人,于是便从从自己班里面找了三个较为熟悉且说“可以干活”的人,由于考虑到只有我一个人有一点点网安知识会很麻烦,于是剩余一位从Vidar-Team找。整个团队只花了不到五天时间就确定了人员。随后便是签字,盖章,提交报名表。“草台班子”就这样成立好了。这样一个匆忙组建的团队也为后面产生一系列问题埋下了地雷。
PART2 团队管理与协作
由于团队里面有五个人,必然是涉及到一些异步协作。团队里面都是大一的学生,没有办法保证每个人作息相同,都是白天在线。参考了我参加的其他外包项目的团队运作模式,我建立了飞书组织以及一个统筹的QQ群(但在后来的实践中发现对于这样一个临时组建,每个人的任务不固定的情况下,这样一套依靠飞书工单的写作是极为低效的,反而还不如直接在QQ群里面喊一嘴来得直接,到最后飞书变成了云文档工具)。
随后便是常规的基础设施建设,阿里云上随便9.9买了个域名(no-hack.top),找了台海外的服务器把git仓库等基础设施搭起来——在多人协作的情况下,git仓库是必要,否则版本控制会非常混乱。
中间其实还有个变动:在我和签字的指导老师交流了之后,得知 A29 题是某个学校出的题目,并不是企业,有给自己学校的队伍留“萝卜坑”的风险,所以从A29换成了安恒信息出的A10。A10同样是网安背景,但是是自动化渗透测试系统,这也就造成了,为什么我们团队叫 N0_H@CK ,域名是 no-hack ,但是做的作品和防御一点关系都没有。
这就显得很仓促了,连题目都是临时确定,临时修改的,更别谈技术选型有没有好好做,需求分析有没有理清楚(事实上,这些步骤有是有,但是全是我把赛题扒下来丢给agent做的,也就是说。。。其他人其实可能并不知情,即使文档被共享到了QQ群,他们可能也是没有查阅的)
PART3 初赛
随后,3.19 开了第一次线上会议,会议其实主要还是构建共同知识框架,把现有的信息分享给所有人,确保形成共同知识。以及确定每个人的职责。
这里就出现雷点了,虽然会议是开了,任务是部署下去了,但是各位有没有很好的理解、去执行就真的说不准了。并且,成员中出现了普遍的前置性知识缺失:
- 会网安的不会前后端
- 会后端的不懂网安
- 有人连git和docker等最基本的工具都不会用
- 有人迷信ai但是连agent都没用过
- 有人临时变卦说自己没空,帮不上忙
这样一来,之前的团队分工就被彻底打乱。3.19距离4.22截至提交只有一个月时间,在这一个月内需要完成前后端+测试+文档,这是非常大的工作量。
所以,我采取了另一种策略:不再按照原本的方案走——对于技术能力强的成员、我能带多少是多少,能帮我分担多少是多少;技术力弱的成员给他们发教程,去学习最基本的工具使用,以了解项目为主,负责最后阶段辅助编写文档。
于是就这样开始了。前后端先得确保功能能跑的出来,文档才能跟进。现在,我成了整个团队里面唯一懂一点后端以及网安且能抽出时间干活的人,于是近一个月的时间,我每天做的最多的事情,就是盯着vscode的agent窗口,按照前期规划的大致框架喂给agent,让它去燃烧token,生成的时间,我就去审查agent写出来的代码。大概前前后后用掉了310刀的token。很快,在4.1下午,这套90% AIGC 的前后端成功的跑起来了,打通了我部署的thinkPHP靶机。至此整体的功能初步完成了。
由于初赛并不要求线下展示,所以线上提交的文档资料成为了能否进入复赛的决定性因素。于是从4.9确定前后端功能完善之后,便进入了文档编写阶段。但是又来了个问题,按照正常的服务外包参赛团队来说,应该是有一个人来专门负责来做文档,这个人可能不参与技术上的事情,但是在做文档、PPT方面得是专精。
很遗憾的是,我们现有的团队并不具备这样一个人,并且由于从头到尾实际上只有两个人真正参与了前后端的构建和部署,其余三个人并不清楚整个项目的结构,这又为文档编写上的协作增加了不小的困难。于是,我再一次揽上了文档编写的工作。其实按道理来说,真的不应该在是我主导这项工作。
纯文字的文档简单,当时的AI就已经足够应付这些工作,最多只需要人工多复核几遍,对一些不符合人类用语习惯的句式等进行调整就,改下排版可以了。但对于中小学阶段美术常年只能被评为及格的我来说,做PPT确实是难如登天的事情。即便现在有了能够做PPT的agent,做出来的不是ai味太重,就是根本没有重点内容。人工仍然是主要的力量。我甚至一度想去找真的“外包”(比如咸鱼一把梭),但先不说做出来的效果如何,光是30一页起步的价格有点让我死心,20页就是600块打底。没办法,只能把目光重新投回人工古法制作。
虽然说PPT是一个比较紧急的任务,但实际上,由于种种原因(例如人员调配,时间分配等),PPT是距离截稿前5天才开始动工的(别问,问就是真的没人做,并且当时我身上还有其他文档任务)。这个时候我开始追求效率,由于线上是追踪不到动态的,会导致效率低下,于是我要求组员请假,抽出了整天的时间来线下做PPT。在反复打磨数版之后,在4.20才算是做出了一些至少能看的版本。随后经过一些线下的文稿核对和校验。在4.22的凌晨一点钟提交了正式的初赛文档包。此时距离初赛正式结束还剩11小时。
PART4 准备复赛
4.22提交完初赛文档包之后,我也是难得的迎来了一段稍微“闲适”的时光,其实初赛期间我是两线作战,不但有这个所谓的“服务外包”,外面还接了真的外包。两者叠加常常会吃掉我一整天的时间,每天持续到凌晨一点更是常态。不过,这一段突如其来的悠闲时光让我一时间有点难以适应,我甚至突然感到了空虚——这是正常的。我只是太习惯忙碌了,需要让自己休息了。
不过,说是休息,其实也没好到哪里去,无非就是换了个地方让我忙,随后就去整理了所有DDL,紧随其后的就是高数的期中。
对于服务外包,我也在时刻关注动态,但据往年说,获奖是比较困难的,普遍每个赛题只有10%-20%的获奖率。但我其实对我们的作品相当自信,虽然文档做的垃圾了一点,但只要看到项目包里面的源码,我相信就不至于给我们打出非常低的分。
很快时间来到5.19,当天下午的三点钟,赛事官网上公开了晋级名单,不出所料,我在名单上找到了 N0_H@CK。东部赛区似乎是32个队伍,但最后只进了8支,但出乎意料的是,八支队伍全是双非,连双一流都没有。那么,还有一场硬仗要打。晋级成功,代表我们已经获得了国三,但是能不能继续往上走一走呢?
于是 5.20 就安排了针对于复赛的部署会议,考虑到复赛是需要线下路演的,整体的PPT与文档需要重做,并且为了增强竞争力,整个产品从功能上还要再继续增加。很好的一点是,对于中间产生的所有费用,报账,预定等环节组总算是有人来负责了,并且没有出差错,这大大降低了我的额外精力开销。
于是又是一轮大规模修改,历时15天,从5.21-6.5,整个产品可以说完全变了个样,和初赛的是两个东西。对于PPT,我们放弃了初赛的设计风格,直接整体重做,线下的PPT应该具有吸引力,不能有太多的文字内容,整体上应该以图片为主,毕竟15分钟的展示时间,对于文字的阅读量是非常有挑战的。对于颜色选择,PPT应该选择浅色;而项目书则是重新增加了内容,最后整体的内容量来到了80页,很遗憾的是,我们错误理解了这份演说文稿实际上应该起到的作用,这应该是一份导览图,而不是产品说明书,我们当时没有人意识到这一点,这也给后面的答辩埋了不小的地雷。
不过,这中间有一些我不得不吐槽的点:
- 不是哥们怎么临阵有逃兵啊?
为了方便5.30-6.4线下集中做文档,我让组员拿着复赛进入的证明文件去找学院请假,结果有人开了五天的假跑回家了,mmp的,本来人手就少,还跑了是几个意思啊?
- 重度AI依赖症,连最基本的判断能力都没了
行,文档可以用AI,这没问题,但你tm交给我之前能不能自己先核一遍稿子,看都不看就把一堆AI幻觉丢给我来审核,3万字的文稿我得审2个小时才能看完!光是一个项目书就被我打回了10次。
- 永远不要在临交稿之前改需求
就6.3晚上突然突然想起来要加一个MCP支持和RAG向量库支持,这俩玩意直接影响了PPT和报告的制作。这些框架性的东西应该在开始之前就定好,而不是临时起意再去加。
- 语文不好的别来写演讲稿
你可以用AI来确定框架,但是你不能直接拿AI跑啊,演讲稿是口头表达的,不是书面语,写出来的必须是符合人的用语习惯。并且如果连语病都排不出来的话,还是别来写了。
6.5的凌晨三点钟,我终于核完最后一版项目书,早上直接去印刷。就此所有前期准备工作已经做完,只差最后的路演展示。
PART5 坠机
6.5下午到达的南京,直接去赛场报道了,当场就完成了PPT的拷贝。接下来的时间基本上都是在背讲演稿,较为遗憾的是2.7k字实在是有点难背。以至于6.6下午的答辩,我发现我根本背不下来,只能即兴发挥,对着PPT讲。
下午两点半,开始候场,我们组在玻璃窗外面观察前一组的情况。我发现了一个出乎意料的点:这一组的项目书很薄,更像是一本宣传册。反观我们组的册子,80页,这是一本交付手册,对于只有15分钟查阅时间来说简直是不可能读完的。
场上一共五个评委,其中左边两个看起来似乎是来自安恒的技术人员,右边三位评委不知道来自什么机构,但显然已经昏昏欲睡。 在此之前我就有推测:我们是下午答辩,两点钟开始,是犯困的时候,并且我们组第五个答辩,从时间上来说已经导致了可能产生疲劳,听前面4组的答辩已经一刻不停地听了1小时,可能根本没有心思听你继续讲。果真,轮到我们这一组的时候,在开始之前递交项目书的时候,就已经发现了中间几位“评委”有点异样。
分发完项目书之后,我开始我的讲解,但由于演讲稿没背熟,中间的讲解出现了卡顿,这可能也进一步降低了评分。不过令我非常不满的是,虽然我讲解存在卡顿,但是中间的几位评委显然没有展示出他们应有的态度:中间那位全程似乎在睡觉,右边那位更是在摆弄我们的项目书,似乎把我们的项目书当成了一叠钞票,用大拇指拨动着玩。最右边那位更是全程在盯着上一组的项目书发呆。唯独只有左边两位来自安恒的评委稍微看了一眼项目书,至少全程在听。即便不满,但我还是以非常尊敬的态度完成了整个讲演。
随后是五分钟的提问环节,更是依托,我敢说单反看过项目书最后一页的部署文档,都不会问出来那些弱智问题。三个问题之后便草草收尾结束。当我走出答辩场所之后,我就觉得有点完蛋。果然,第二天颁奖典礼,第四批区域二等奖就喊到了我们。没招了,事已至此,先打wm吧,于是下一站前往新街口的机厅。
PART6 回顾与反思
从南京回来的路上,我的脑子里全是那个评委用大拇指拨弄我们 80 页项目书的画面。那种哗啦啦的声音,像是在嘲笑我们过去三个月燃烧的 500 刀 Token、无数个为了项目熬的夜,以及为了某些小事而引发的团队内耗。后来我与江苏大学等其他几支队伍交流,发现大家的反馈如出一辙。
作为团队的负责人,我必须承认:国三下播,技术上我们没输,但比赛策略上,我们输得体无完肤。 我总结出了以下四条:
1. 把“交付手册”当“商业盲盒”递给疲惫的评委
我们犯的最大的一个错误,就是把技术人员的执着带进了答辩场。
信息过载: 5.21 到 6.5,我们把项目书扩充到了 80 页。我们以为这是“诚意”和“技术扎实”的体现,但在下午两点半、评委已经听了 4 组汇报、处于深度审美疲劳的极端场景下,一本 80 页的“技术交付文档”对他们来说不是作品,而是折磨。
竞品的得当之处: 前一组那本像宣传册一样薄的项目书,才是最符合“15分钟速读”的产品经理思维。评委要看的不是代码怎么写的,而是“痛点是什么、你用什么炫酷技术解决了、商业前景在哪”。我们务实地写了部署文档,结果换来的是评委连最后一页都没翻过,抛出了一堆弱智问题。
2. 大一的“能干活”是一句正确的废话
在草台班子组建之初,我以为“找愿意干活的人”就行,但实际执行中,技术断层和认知差距直接拖垮了后期效率。
前置知识鸿沟: 当团队里出现“会网安的不会前后端、会后端的不懂网安、甚至有人连 Git 和 Docker 都要现学”的情况时,异步协作的工作机制就会彻底沦为摆设。
以前我觉得‘只要肯学就行’。但是在 DDL 只有一个月的情况下,潜在巨大的时间成本,足以把整个项目拖进深渊。 队长不仅要当全栈开发,还要当带薪保姆、AI幻觉过滤器、以及人肉复读机。以后组队,技术栈互补是底线,如果你技术力强,千万不要把比赛当成带新人的新手村。AI 依赖症的惰性: 引入 AI 辅助写文档是我的决策,但我没有建立相应的QA(质量保证)机制。我错误地以为大家都有甄别 AI 幻觉的能力,导致成员直接将未经人工校验的粗糙文本交给了我。如果重新来过,我应该在最开始就制定严格的审稿标准:任何 AI 生成的内容,必须由生成者通读并修改语病后才能提交合并。流程的缺失,导致我作为队长在后期沦为了人肉洗稿机。
3. 框架未定,临时加需求是大忌
6月3日晚上,距离交稿不到 48 小时,我们突然决定加入 MCP支持和 RAG 向量库支持。
虽然从技术追新的角度来看,这让系统听起来更前沿,但这种功能性的变动直接牵一发而动全身,导致 PPT 和演讲稿要重写。
这直接导致了我在 6月5日 拿到最终稿时根本没有时间熟练背诵,在 6月6日 下午的赛场上因为即兴发挥而出现卡顿。在行政体制比赛中,一次嘴瓢的扣分,往往比你多写一个硬核功能的加分要多得多。
4. “萝卜坑”与评委的专业壁垒
服务外包或大小挑这种比赛,其潜规则和机制的不透明是客观存在的。
赛题 A10 虽然是安恒出的,但场上五个评委,真正懂网安技术的可能只有左边那两个安恒的技术人员。右边三位体制内的老专家可能连“自动化渗透测试”和“漏洞利用”的基本概念都模糊。
面对非技术背景的评委,跟他们讲 CrewAI 怎么串联 Agent、怎么打通 ThinkPHP 靶机,无异于对牛弹琴。他们更喜欢听宏大叙事。在这种信息不对称下,有特殊背景或擅长“画大饼”的高校队伍,自然能轻易拿到“定制”的萝卜坑名额。
结语:江湖再见
大一的这一场“国三下播”,算是这个学期我交过最贵的一笔学费。但我并不后悔。代码是我盯着一行行审查的,各种基础设施是我亲手搭的,靶机是我们实打实打通的。在这场“草台班子”的历练里,我的工程能力和带队兜底能力被极限拉伸,我已经拿到了属于我的经验值,值了 (其实是毕设免掉了) 。
体制内比赛的 PPT 游戏到此为止,no-hack.top 的域名或许做了一个跟防御毫无关系的项目,但这并不妨碍我们走向真正的技术赛道。
也许,你下一次看到 N0_H@CK,是在别的在 CTF 赛道,或者在CVE 和 CNVD的贡献者名单里。在那些地方,代码是唯一的黑话,漏洞是最好的通行证。
后人哀之而不鉴之,亦使后人而复哀后人也。 这篇血泪史就放在这里,愿下一届的你们,不必踩进同一条河里。
江湖再见。
2026年7月16日