代码之罪:3.2亿诈骗案背后的技术总监
我辞职照顾阿尔茨海默症的母亲时,以为只是换一份远程工作。直到警察查封公司,我才发现两年写的每一行代码都在给自己攒刑期。当法庭拒绝我现场演示APP时,我知道有人想让我们永远闭嘴。
01
2023年6月18日,父亲在电话里沉默了三秒才开口:“你妈今天把我认成你了。”我在天州滨江的国企办公室里,盯着电脑屏幕上未提交的代码。我是这家国企最年轻的技术总监,年薪38万,期权明年兑现,手底下管着12个人。“医生说阿尔茨海默症就是这样的,”父亲的声音很平静,平静得可怕,“今天记得,明天就忘了。而且她最近开始乱跑,前天差点走到高速公路上。”我闭上眼睛。母亲才62岁,退休前是小学语文老师,最喜欢背唐诗。去年她还给我儿子讲《静夜思》,说“举头望明月”的“举”字写得真好。挂掉电话后,我写了辞职信。领导老陈晚上十点打给我:“成江,你疯了?你知道多少人盯着你这个位置?”老陈叹了口气。他知道我家的情况,我是独子生,妻子在绍兴教书,儿子刚上幼儿园。母亲在绍兴上虞老家,父亲心脏不好。这个家需要我回去。三天后,我办完离职手续,正在收拾工位物品时,微信弹出一条消息:“江哥,听说你离职了?我们公司招远程技术岗,待遇不错,主要做海外项目,时间自由。有兴趣聊聊吗?”发消息的是王小帅,两年前我带的实习生,后来跳槽去了家创业公司。银行卡余额:12万。房贷还剩82万没还,月供8000。母亲如果住护理院,每月至少5000。儿子的私立双语幼儿园,每学期15000。“小美交友,做社交APP的。我现在是前端组组长,缺个技术大牛。老板说可以给到月薪三万。”“绝对正规!我们在天州未来科技城有正式办公室,2300平,一百多号人。国内版已经做了两年,现在重点发展海外市场。江哥,你就远程指导,每周来一两天就行,不耽误照顾家里。”PPT做得挺专业:小美交友网络科技有限公司,成立于2021年,旗下三款社交APP,累计用户400万+,已实现盈利。创始人袁成凯,连续创业者,简介里写着“毕业于浙大计算机系,曾任职阿里”。02
面试安排在三天后,天州文一西路某写字楼32层。整层楼都是小美交友的办公室,装修得很现代:开放式工位、玻璃会议室、茶水间里有胶囊咖啡机和零食柜。前台是个年轻女孩,工牌上写着“陈小雪,客服专员”。她抬头看我时眼神有些躲闪,很快又低下头去。推开玻璃门,袁成凯站起身。他大概四十出头,穿着灰色Polo衫,戴黑框眼镜,像个标准的技术型创业者。“成江,久仰!小帅天天念叨你,说你是他见过最牛的前端。”握手,寒暄,落座。会议室白板上画着产品架构图,密密麻麻的关系线。“我们做的是海外社交市场,”袁成凯递给我一份商业计划书,“东南亚、中东、拉美。国内版已经跑通了模式,现在复制到海外。”我翻看计划书。用户数据、留存曲线、付费转化率。看起来都正常,甚至比很多同行好。“相亲交友,”袁成凯笑得很坦然,“线下见面那种。但我们做得很干净,不搞擦边球。你可以下载一个看看。”我当场下载了“小美交友”APP。注册流程简单,首页推荐异性用户,有“一键搭讪”、“送礼物”、“视频聊天”功能。UI设计得不错,交互流畅。“代码是你写的?”我问王小帅。他坐在旁边,有点紧张。“大部分是。江哥,你来了帮我重构一下,现在的代码有点乱。”袁成凯适时插话:“成江,我知道你家里情况特殊。这样,你平时在家远程办公,每周二四来公司开个会就行。月薪三万五,社保全额交,年终奖另算。”“海外版的技术负责人。国内版已经稳定了,你不用管,就专心做海外市场。东南亚文化差异大,要本地化改造。”“小帅推荐的,”袁成凯点了根烟,“他说你技术方面没问题,而且你家庭情况特殊,更能理解我们需要什么样的工作方式。说实话,我们也希望团队成员稳定。”后来我才明白那个眼神的意思:他早就知道公司不对劲,但他需要帮手,需要有人分担压力。而我是最合适的人选:急需用钱,技术过硬,而且因为要照顾母亲,不会深究公司业务细节。03
入职第一周,我主要熟悉代码库。国内版的代码确实如王小帅所说,混乱、重复、注释不全。但架构还算清晰,核心功能就那几个:用户匹配、即时通讯、礼物系统、支付接口。周二技术例会,产品经理演示新需求:“海外版要加一个‘超级邀请人’功能,用户邀请好友注册可以得佣金。”“比那个复杂,”产品经理解释,“邀请人不仅拿佣金,还能看到被邀请人的部分数据,帮他们呃撮合在一起。”会议室安静了几秒。袁成凯笑了:“成江考虑得对,但海外法律不同。东南亚很多国家允许这种模式,只要用户授权就行。”技术总监罗大海接过话:“江哥,你就照着需求做,合规问题有法务部处理。”罗大海是项目经理,戴着厚厚的眼镜,说话慢条斯理。他在公司呆了两年,据说从初创就在。后来我发现,每次提到敏感话题,都是他出来解释打圆场。“江哥,你别太较真,”他压低声音,“公司业务有点灰色地带,但只要我们不做违法的事情就行。我们就是打工的。”“你看国内版,”王小帅吐了个烟圈,“那些女主播不是真来交友的,就是赚礼物的。但我们平台是正规的,主播个人行为,我们管不了。”我心中一沉:“你是说,我们明知主播的起点用意不是真正交友,出发点是在骗用户礼物钱,然后我们还提供平台?”“话不能这么说!”王小帅赶紧摆手,“我们有用户协议,禁止诈骗行为,还有举报机制。但要完全杜绝,不可能啊!”这时,财务部的张燕端着咖啡经过,听到我们的对话,脚步明显顿了一下,快步走了。王小帅继续说:“江哥,你刚来,别问太多。月薪三万五,天州有几个公司能给这个数?你做海外版,跟国内业务没关系,怕什么?”昨天刚问过,环境好一点的要6500一个月。父亲的降压药又涨价了。后来在法庭上,检察官问我什么时候知道公司有问题的。但其实2023年6月那个周二下午,在写字楼的吸烟区,我就已经知道了。04
第一个月工资到账:35000,扣完社保还有32000。我给母亲付了护理院半年费用,给儿子换了套更好的乐高,给妻子买了她看中很久的包。妻子很高兴:“这公司真好,还让你在家办公。要不我辞职搬去天州?”“别了,”我说,“你工作稳定,先别动。而且我在家时间多,可以照顾妈。”其实我隐瞒了一件事,虽然在家办公,但工作时间反而更长。海外版项目紧,又要适配不同国家的语言和支付系统,我经常熬到凌晨两三点。九月的一个深夜,我正在调试阿拉伯语的RTL布局,父亲打来电话。“‘春眠不觉晓’后面,她接的是‘举头望明月’。我说不对,她急哭了,说就是这样的。”我听着电话那头母亲的抽泣声,还有父亲笨拙的安慰。屏幕上的代码突然变得模糊。“没用,”父亲声音疲惫,“上周刚去过,医生说这病就这样,只会越来越差。药只能延缓,不能逆转。如果可以弄到美国进口药的话,只能说延缓速度慢一点。”凌晨三点,王小帅在开发群里@我:“江哥,支付接口的汇率转换有问题,用户投诉多付了钱。”国企的稳定、社会地位、未来的期权全都换成了这份高薪但可疑的工作。而这一切,只因为我需要钱,很多钱,去维持一个正在缓慢崩塌的家庭。第二天上班,我在茶水间遇到张燕。她正在泡枸杞茶,黑眼圈很深。她苦笑着点头:“月底结账忙。对了张总监,你工资还正常吧?有问题找我。”张燕欲言又止,四下看了看,声音压得很低:“你看过公司的完整财报吗?”张燕管账,她最清楚公司资金流向每月数百万的推广费用流向几十个个人账户;女主播提现时公司抽成30%;而所谓超级邀请人,其实就是拉皮条的掮客,按人头和消费额拿提成。但她没说,因为月薪两万,因为儿子在留学每年要钱,因为丈夫生意这两年失败欠了一屁股债。05
2023年11月,公司开季度会。袁成凯宣布了一个消息:“国内版业务要逐步收缩,重心全部转向海外。明年上半年,我们要进入10个国家!”第一,罗大海没鼓掌,他在笔记本上写着什么,然后迅速合上。第二,商业运营部的郝鹏飞没参会。王小帅说他去泰国了,谈海外公会合作。第三,袁成凯提到风险控制时,特别看了一眼法务部的位置,那里坐着个年轻女孩,不是专业律师,是行政兼任的。会后,王小帅请我吃火锅。两瓶啤酒下肚,他话多了起来。“一点八个亿,”王小帅伸出两根手指,“今年预计超三个亿。”“你以为呢!用户充值买虚拟币,兑换礼物打赏给主播。平台抽三成,主播拿七成。一个头部主播,月入三五十万很正常。”王小帅笑了,笑得有点苦涩:“江哥,你怎么还这么天真?这是生意!用户花几十块几百块,买个情绪价值,买个小姐姐陪聊,买个幻想。你情我愿的事。”“我们有免责条款啊!”王小帅打断我,“用户协议第37条写得很清楚:平台仅提供交友机会,不保证成功;用户应理性消费;如遇诈骗请及时举报。”好一会儿,他才说:“江哥,你知道我为什么找你吗?因为你技术好,而且你缺钱。我们都缺钱。这世道,干净又赚钱的工作有几个?现在很多大厂都也必有咱们赚得多。”“所以要小心,”王小帅凑近,“记住了,你只管写代码,业务上的事别问。需求来了就做,有问题提出来,但别深究。这是生存之道。”那晚我失眠了,脑子里反复回响王小帅的话。凌晨四点,我爬起来,打开公司代码库,找到国内版核心模块。// 打赏逻辑处理函数function handleGift(userId, giftId, receiverId) {constgiftPrice = getGiftPrice(giftId);constbalance = getUserBalance(userId);if(balance < giftPrice) {return{ code: 1, message: "余额不足" };//2. 如果用户当天首次大额打赏(>199元),触发"心动模式"if(isFirstLargeGiftToday(userId) && giftPrice > 199) {//向主播发送系统提示:"用户XXX有高消费潜力,建议重点维护"sendSystemHintToAnchor(receiverId,userId, giftPrice);//解锁主播的"特殊关怀"功能:可发送专属问候、可查看用户部分访客记录unlockSpecialCareFeatures(receiverId,userId);if(getTotalGiftToAnchor(userId, receiverId) + giftPrice > 5000) {//系统提示:"可考虑向用户索要微信/电话,但需通过平台话术"suggestGetContactInfo(receiverId,userId);addUserTag(userId,"high_value");//4. 如果用户是"高价值"标签,且48小时内未打赏if(hasUserTag(userId, "high_value")&&getLastGiftTime(userId) < Date.now() - 48*60*60*1000) {//向主播推送提醒:"您的重要用户XXX已48小时未互动,建议联系唤醒"pushRemindToAnchor(receiverId,userId);deductBalance(userId,giftPrice);addAnchorIncome(receiverId,giftPrice * 0.7); // 主播得70%addPlatformRevenue(giftPrice* 0.3); // 平台抽30%return{ code: 0, message: "打赏成功" };但看深层逻辑:它系统性地识别高消费用户,指导主播如何维护这些用户,鼓励主播索取联系方式,并且在用户消费懈怠时提醒主播再次联系。而且,代码注释里有一行小字:// 话术模板见运营后台,关键词:‘真心’、‘感动’、‘想见你’、‘支持我’。我不是刚毕业的菜鸟,我知道这意味着什么。如果只是主播个人忽悠用户,那是主播的问题。但平台提供话术模板、识别高价值用户、指导主播如何持续榨取这就是平台在组织、策划、实施。这是一条完整的犯罪链条,而我写的代码,是这条链条上的核心齿轮。我洗了把脸,对着镜子说:“张成江,你什么都不知道。你只是个写代码的。”然后我继续上班,继续写代码,继续领每个月三万五的工资。06
2024年春节前,公司发年终奖。我拿到6万,王小帅5万,张燕8万。袁成凯在年会上宣布:“今年公司净利润超预期,明年全员涨薪10%!”大家欢呼。但我注意到角落里的客服女孩陈小雪,她低着头玩手指,没笑。陈小雪是“00后”,2022年5月入职,月薪6000。在天州,这个工资勉强够活。她工位在我斜对面,经常加班到深夜,回复用户投诉。电梯到了1楼,她没回答,快步走出去。我跟了两步,在写字楼门口追上了她。陈小雪回头看我,眼睛红红的:“张哥,你负责技术,你看不到那些投诉。我每天每天要处理几十个投诉,用户说被骗了钱,主播收了礼物就拉黑,有的用户被骗了几万块。”“举报了有什么用?”她声音颤抖,“大部分女主播用的假信息,封了一个号,换个手机又注册了。而且上面有指示,涉及金额小的投诉,尽量安抚用户,给点平台币补偿,不要走退款流程。”“客服主管钱成。他说如果全额退款太多,会影响公司现金流。”冷风吹来,陈小雪打了个寒颤。她穿着单薄的外套,在天州湿冷的冬夜里显得格外瘦小。“张哥,我上个月处理一个投诉,用户是个农民工,在工地干活,攒了三万块钱,全部打赏给一个女主播。那主播说会嫁给他,他信了。现在钱没了,主播消失了,钱打水漂了。”“我申请退款,钱主管驳回了,说‘不能开这个口子’。我只能按标准话术回复:建议用户报警,平台会配合调查。但谁都知道,这种案子警察根本不管。”她哭了,眼泪大颗大颗往下掉:“那个农民工后来给我打的最后一个投诉电话,说‘姑娘,我不怪你,是我自己傻,我太蠢了’。但我知道我是在做不好的事情。”“我想辞职,但我爸去年查出肺癌,一个月药费就五千。我弟还在上大学。六千块在天州是少,但总比没有强。”她擦干眼泪,挤出一个笑:“张哥,你就当我没说。我可能年后就不来了。”实际上,陈小雪干到2024年5月,被公司优化掉了。她拿了三个月赔偿金,一共两万多,准备回老家。但警察还是找上了她,在她回老家的火车上。法庭上,检察官说陈小雪非法获利23万。她哭着说:“那是我两年工资加上赔偿金,我一分脏钱都没多拿!”诈骗罪共犯,涉案金额3.2亿,个人获利23万,数字摆在那里,背后的血泪和无奈,没人关心。那个夜晚,其实我本该做点什么。我可以给陈小雪一笔钱,让她辞职;我可以举报公司;至少,我应该停止写那些诱导消费的代码。但我什么都没做。我只是拍了拍她的肩膀,说:“你再考虑考虑,工作不好找。”然后我转身走向停车场,开着我新买的Model 3回家。车里开着暖气,座椅加热很舒服。我想着明天要给母亲买那个进口的药,2800一盒,医保不报销。当罪恶不是刀架在脖子上,而是温水煮青蛙时,大多数人会选择闭上眼睛,数着银行卡里增长的数字。我们都是普通人,有家人要养,有房贷要还,有想要的生活。所以我们学会了自我欺骗:我只是打工的,我不了解业务,代码无罪。07
第一件事是郝鹏飞从泰国回来了。这个商业运营部负责人晒得黝黑,脖子上多了条金链子。他在会议室跟袁成凯吵了一架,声音大到走廊都能听见:后来王小帅告诉我,郝鹏飞反对在海外版完全复制国内模式。东南亚法律虽然松,但有些国家诈骗罪判得很重。而且海外用户不好控制,万一闹大了,可能引发外交问题。但袁成凯坚持:“国内监管越来越严,必须尽快在海外赚钱。按计划执行!”原来的行政女孩不见了,来了个四十多岁的男人,姓郑,据说是从某律师事务所挖来的。他上班第一天就调取所有用户协议、隐私政策、免责条款,关起门来改了三天。第三件事,也是最重要的我开始接触海外版的合规方案。罗大海把我叫到会议室,白板上写着新需求:“海外版需要开发一个用户保护系统。”“功能是这样,”罗大海指着流程图,“第一,用户单日消费超过500元,弹出风险提示。第二,用户连续三天大额消费,自动冻结账户24小时。第三,主播引导用户线下见面的消息,系统自动标记,人工审核。”罗大海推了推眼镜:“江哥,这话说的,当然是真保护。”“国内版没有法律明文规定,”他顿了顿,“而且架构太老了,不好改。海外版从零开始,可以做完善点。”罗大海是个老实人,技术出身,不擅长撒谎。他的眼神在躲着我的注视。“江哥,”他终于开口,“有些事,不知道比知道好。你就按需求做,做漂亮点。这个用户保护系统,很重要,可能是护身符。”我瞬间明白了。公司高层知道业务有风险,所以在海外版预设一个合规的外壳。万一出事,可以拿这个当证据:“看,我们有保护系统,我们尽了提醒义务,用户非要充值,我们拦不住。”这是技术上的免责设计,和那些写在用户协议第37条的免责条款一样,都是事先准备好的退路。代码很精巧:消费警示用了三种颜色提示(黄、橙、红),冻结账户有三级梯度,敏感词监控覆盖了六国语言。我还特意加了一个功能:所有风险操作,系统都会在后台生成日志,包括“触发时间、用户ID、操作类型、处理结果”,日志保存五年。我想,万一将来真的出事,这些日志至少能证明,我作为技术人员,试图保护用户。后来在法庭上,公诉人指着这个功能说:“看,他们明知有诈骗风险,才需要做这些防护。这是反向证明他们知情!”但当时我不知道。我甚至还为自己的责任感感动,觉得比其他只顾写代码的程序员强。08
2024年5月,公司陆续裁员。陈小雪走了,其他几个客服也走了。张燕悄悄告诉我:“公司账面紧张,国内业务收入下滑。”“用户变聪明了,不好骗了。”她说这话时语气平淡,像在说今天天气不好。那段时间,我注意到袁成凯经常不在公司。王小帅说他在跑融资,见了一圈投资人,没人愿意投。“赚钱,但不光彩,”王小帅苦笑,“投资人也要声誉。而且风声有点紧。”王小帅左右看了看,压低声音:“我听说,有用户报警了,大东那边的。公安可能立案了。”这是典型的侥幸心理,总觉得天塌下来有高个子顶着,总觉得老板有背景有关系,总觉得不会轮到自己。但我们忘了,在3.2亿的案子里,没有高个子,个个都是垫脚石。6月初,袁成凯突然召开全员大会。一百多人挤在大会议室里,气氛凝重。“今天宣布两个决定,”他站在台上,表情严肃,“第一,公司国内业务从今天起暂停运营。第二,海外业务独立拆分,成立新加坡分公司。”袁成凯双手下压:“安静!国内版不是不做,是升级改造,需要时间。所有员工,愿意去新加坡的,公司包签证、包住宿,薪资翻倍。不愿意的,国内业务暂停期间,发基本工资三个月。”基本工资是80%,也就是我的28000,王小帅的22400。对很多人来说,这笔钱不够在天州生活。“不知道,”他摇头,“我妈身体也不好。而且江哥,你不觉得奇怪吗?为什么突然要撤?”那天下午,我写代码时一直心神不宁。母亲又打来电话。她现在偶尔会清醒几分钟,刚才突然说:“阿政,你工作是不是很累?累了就回家。”“你爸说你晚上老加班,眼睛都红了。钱够用就行,别太拼。”海外版的用户保护系统今天要上线,但我最后检查时,发现一个严重问题:也就是说,所有风险警示、账户冻结、敏感词监控的记录,除非手动开启,否则不会保存!我立刻找罗大海:“罗哥,日志系统为什么默认关闭?”“哦,那个啊,”罗大海一脸你懂的表情,“开启日志会占服务器资源,影响性能。等需要的时候再开。”我明白了。又是一个做样子的功能:平时不开,真出事时临时打开,假装系统一直在运行。“这不行,”我坚持,“要么就真做,要么就别做。这样骗谁?”罗大海叹了口气,把我拉到楼梯间:“江哥,你是真不懂还是假不懂?这个系统,就是个摆设!用户真要投诉,我们打开日志,调出记录,给人家看看:‘喏,我们提醒了三次,你不听,怪谁?’明白了吗?”罗大海盯着我看了很久,最后说:“江哥,你是我招进来的,我跟你说句实话。公司最近可能真要出事了。你早做打算。”他走了,留下我在楼梯间发呆。窗外是天州未来科技城,一栋栋写字楼里亮着灯,成千上万的人还在加班,写代码、做PPT、开电话会。他们中有多少人也在做“灰色”业务?有多少人也在自我欺骗“我只是打工的”?有多少人知道风险,但因为房贷车贷孩子学费,选择沉默?我想起刚毕业时,导师说:“技术是中立的,但技术人有立场。”现在我的立场是什么?是母亲药费的账单,是儿子幼儿园的录取通知书,是妻子看到我高薪时安心的笑容。我回到工位,写下了最后一行代码:不是技术代码,是一封简短的辞职信。写完后,我盯着这十一个字,看了整整二十分钟。然后,按了删除。再等等,等儿子放暑假,等母亲的病情稳定一点,等我把房贷提前还掉一部分。09
那天上午很普通。王小帅在修复一个bug,张燕在算五月的账,陈小雪的工位空着,已经换了个新来的女孩。袁成凯没来公司,罗大海在开远程会议。我接到母亲护理院的电话,说她的进口药快吃完了,要不要续。挂了电话,我查了银行卡余额:12万。如果离职,这些钱够撑多久?三个月?四个月?然后呢?下午三点,张婷婷发来消息:“江哥,投放后台的数据看板是不是挂了?”张婷婷是市场部唯一的员工,负责投广告。月薪15000,和我当初一样,以为找到好工作,却不知道已经坐上了一艘正在沉没的船。王小帅从厕所冲回来,脸色惨白:“好多警察!上来了!”大家还没反应过来,玻璃门被推开。七八个穿制服的警察走进来,为首的中年警官手里拿着文件夹。没人回答。警察开始检查电脑,拔电源,贴封条。我看到警察拿起我的机械键盘看了看,又放下了。后来在法庭上,这个细节被反复提及,作为我长期在此工作的证据。那些普通得不能再普通的场景,此刻成了我对自由世界的最后记忆。10
讯问室在南州公安局。白墙,铁椅,摄像头的红灯亮着。“2021年底,外包形式。2023年6月全职加入。”“知不知道‘一键搭讪’‘超级邀请人’这些功能是做什么用的?”警察停下笔,看我:“张成江,你是资深程序员,你应该知道这些功能的实际效果。它们是不是在诱导用户快速建立联系,产生消费冲动?”“那你知不知道,女主播利用这些功能,诱导用户打赏,然后拉黑?”“只是‘听说过’?”警察身体前倾,“你是技术负责人,客服每天处理的投诉,数据会不会进系统?你看不看后台数据?”这是实话,但也是狡辩。作为技术总监,我有权限查看所有数据,只是我从来没去看或者说,不敢去看。警察把这些数字记下来:“所以你在小美交友工作期间,总收入大约61万?”“小美交友公司经营收入3.2亿元,被认定为诈骗资金。你的工资从这3.2亿里出,所以你的61万是非法获利,要追缴。”这个词像一盆冰水从头浇下。意味着我这两年白干了,意味着我给母亲买药的钱是赃款,儿子幼儿园的学费是赃款,我们一家人的生活都建立在犯罪之上。“起诉书里,你是第一被告人。”警察站起身,“收拾一下,送看守所。”“第一被告人?”我脑子嗡嗡作响,“为什么是我?我只是技术人员,老板是袁成凯,运营是郝鹏飞……”“你,”警察看着我,“是技术环节的主要实施者。知道什么叫共犯吗?明知是犯罪还提供帮助,就是共犯。”“真不知道吗?”警察从文件夹里抽出一张纸,“这是你们公司的后台数据统计:2023年1月至2024年5月,客服共处理投诉2873起,涉及金额4128万元。这些投诉数据,每个月都会发到技术部邮箱,要求‘优化系统减少投诉’。你邮箱是zhangchengjiang@xiaomeijiaoyou.com吧?”是的,我收到过那些邮件。但我从来没点开附件,只看标题:“本月投诉数据汇总,请技术部关注”。“但你收到了,”警察说,“一个正常人,在相亲交友公司工作,收到‘投诉数据汇总’,难道不好奇里面是什么?为什么不点开?因为你不敢,你心里知道公司有问题,你在自我欺骗。”在讯问笔录上签字按手印时,红色的印泥沾在食指上,怎么也擦不干净。就像罪孽,一旦沾上,就渗进了皮肤里。11
监室六个人。我睡在最靠厕所的位置,因为新来的都睡那儿。上铺是个盗窃犯,半夜小声问我:“大哥,你犯的什么事?”头顶有一小块窗户,能看见夜空。我想起小时候在山东老家,夏天躺在屋顶上看星星。那时候以为人生很长,有无限可能。现在才知道,人生就是一次次选择。选对了,继续走;选错了,就掉进坑里,再也爬不出来。第二天开始,时间变得模糊。一天二十四小时,只有放风半小时能看到太阳。其他时间,就在六平米的监室里,坐着,等着。律师是法律援助指派的,姓李,很年轻。第一次会见时,他问我:“说实话,你知情吗?”“我知道业务有灰色地带,知道可能有主播骗人,但不知道公司层面是组织诈骗。”我苦笑:“没有。所有证据都指向我知情。我写代码,我收高薪,我有权限看投诉数据。”李律师叹了口气:“张先生,这种案子,说真话没用。法庭看的是证据链条。你在链条上,就是共犯。”我心里清楚。但我还是抱着一丝希望。也许法官能理解技术人员的处境?也许能区分“明知”和“应知”?也许还有一线生机?入看守所第四个月,妻子来会见,隔着玻璃,她眼睛红肿:“妈昨天走丢了。”“护理院的人一时没看住,她自己跑出去了。找了五个小时,在郊区的高速路口找到的,差点差点被车撞。”“接回家了,爸看着。但爸心脏不好,上次差点晕倒。”妻子咬着嘴唇,“成江,你到底什么时候能出来?”“存款还剩两万。妈的药断了,换成国产的,便宜但效果不好。儿子私立幼儿园下学期可能上不了了。”我握紧拳头,指甲掐进掌心。这就是现实,当你失去自由时,你的一切都在崩塌:家庭、经济、家人的健康。而这一切,只因为当初那个选择:闭上眼睛,继续写代码。12
天气很好,阳光透过法院高高的窗户照进来。我被排在第一个,手铐在押解过程中一直戴着,直到进法庭才打开。旁听席坐满了人。我看见了妻子,她抱着儿子,孩子瞪大眼睛好奇地看着这个陌生环境。父母没来。公诉人念起诉书时,声音在大厅里回荡。那些数字被念出来,有种不真实感:3.2亿,400万用户,61万非法所得……“第二,我开发的功能是行业通用功能,不具有诈骗专属性。”“第三,我2023年入职后主要负责海外版,与涉案国内业务关联有限。”公诉人反驳:“但你领的工资、社保、年终奖,都来自这3.2亿!你享受了犯罪收益,就是共犯!”辩论陷入僵局。关于技术中立的讨论持续了两小时,直到我的律师提出一个请求:我站起来:“给我一台电脑,快的话半天我就能把APP恢复到案发时的版本。如果有所谓的诈骗功能,我愿意当庭认罪。”这是我唯一的机会:用技术对抗指控,用代码解释代码。审判长休庭商议。回来时,他摇头:“不具备演示条件。”那些我熬夜写出的逻辑,那些被指控为诈骗工具的功能,连被展示的机会都没有。因为有人不想让代码说话。代码太诚实了,一行行逻辑摆在那里,哪里是诈骗,哪里是正常功能,一看便知。庭审第二天,焦点转移到我的收入。那张表格被投影在大屏幕上:工资、奖金、社保公积金合计61万,全部标红:“非法获利予以追缴”。“意味着,”我的声音沙哑,“我从入职第一天起就在犯罪,意味着我给母亲买药的钱是赃款,儿子幼儿园的学费是赃款,我们一家人的生活都建立在犯罪之上。”法庭很安静。审判长低头记录,陪审员表情严肃,法警站得笔直。在那一瞬间,我突然明白了这个案子的本质:它不是要追究某个人的罪,而是要给3.2亿资金找到一个合规的出口。而我和其他14名员工,就是这个出口的代价。但我们这些普通员工,成了罪名的承担者,成了数字的牺牲品。休庭时,律师小声告诉我:“张婷婷的父亲昨天脑溢血,没抢救过来。”我脑子一片空白。张婷婷,那个市场部唯一的女孩,月薪一万五,以为找到了好工作,现在父亲去世都不能去见最后一面。这就是现实。没有温情,没有理解,只有冰冷的法律程序。只要你被认定为共犯,你的一切苦难都不重要,你只是案卷里的一个名字,一个数字。13
我的取保候审申请又被驳回。律师带来的消息让人绝望:关键人物郝鹏飞、钱成仍未并案,电子数据虽然移交了,但“仍需时间审查”。看守所里过年有加餐,一人一个鸡腿。我吃不下,给了旁边的狱友。我想起去年除夕,一家人包饺子,母亲还能认出我,说“成江,你多吃点,瘦了”。春节后,律师突然带来一个爆炸性消息:“郝鹏飞的笔录出来了!”“他说,”律师压低声音,“公司高层明确知道业务涉嫌诈骗,但给员工传达的是‘合规业务’。尤其是技术人员,袁成凯特别嘱咐过:‘不能让技术人员知道太多,他们容易有道德包袱。’”“郝鹏飞为了减刑,什么都说出来了。他还提到一个细节:2023年底,公司开过一次高管会,袁成凯说过这样一句话:‘技术人员就是写代码的机器,别让他们想太多。’”“至少可以辩称是,”律师眼睛亮了,“如果法庭采信这一点,你们的‘明知’就成问题了!”这就是反转。我们一直以为自己是共犯,但实际上,我们可能也是受害者:被高层刻意隐瞒真相,被高薪诱惑留下,被当成犯罪工具使用而不自知。郝鹏飞和钱成至今没有并案,他们的证言能否用在我们的庭审中?公诉人会不会说“这只是郝鹏飞的一面之词”?更重要的是,就算我们不知情,我们写的代码客观上帮助了诈骗,这算不算犯罪?14
案件搁置期间,我收到了一封信。不是律师函,是妻子的笔迹:她说:‘告诉成江,我忘了他是谁,但我记得他是个好孩子。如果他做错了事,要认;如果没做错,要争。妈等不了太久了,但妈相信他。’”信很短,字迹潦草,估计是匆忙写的。但每一个字都像针,扎在我心上。我妈,一个连自己儿子都忘了的人,却记得“要认错,要争”。她不知道我犯了什么罪,不知道3.2亿是多少钱,不知道我可能要在监狱里度过余生。我闭上眼睛,选高薪,明知有问题还继续写代码,为了家庭牺牲良心。如果时间能倒流,回到2023年6月那个下午,在吸烟区王小帅对我说“别太较真”时,我会怎么做?因为现实太沉重了:母亲的药费、儿子的学费、房贷的压力、中年危机的焦虑。在这座大山面前,道德成了奢侈品。这就是人性的真相:没有绝对的好人坏人,只有在不同压力下做出不同选择的普通人。有人说:“程序员就该判重刑,明知是诈骗还写代码!”两种声音都有道理。但真正身处其中的人才知道,那不是在“明知”和“不知”之间的选择,而是在“怀疑”和“生存”之间的挣扎。然后一天天过去,代码越写越多,工资越领越多,沉没成本越来越大,直到再也无法回头。看守所的日子让我想清楚一件事:如果我出不去,我希望至少能给后来的技术人员提个醒。如果为了高薪留下,至少留个证据:邮件、聊天记录、会议纪要,证明你曾质疑,你曾反对,你不是同谋。虽然这些证据可能也救不了你,但至少,能让你在夜里睡得踏实点。15
2026年3月,律师告诉我一个消息:郝鹏飞、钱成的案件要开庭了,但和我们是分开审理。“意味着,”律师叹气,“你们可能先被判决。等你们的案子定了,他们再开庭。这样,他们的证言就用不到你们案子里了。”我懂了。这是一种策略。把核心人物和普通员工分开,避免证言相互影响。普通员工先判,定了基调,核心人物再酌情处理。“只有一个办法了,”律师看着我,“集体绝食抗议,要求并案审理。”绝食第一天,看守所领导来谈话:“你们这是扰乱秩序!”“我们只要求依法并案审理。”我发言,“郝鹏飞和钱成是关键证人,不并案对我们的审判不公。”第四天,法院终于回应:“鉴于案件特殊情况,合议庭正在研究并案可能性。”第五天,我晕倒了。醒来时在医院输液,律师坐在床边。“最高法刚发布了一个典型案例:某P2P平台诈骗案,技术总监被判无罪,理由是‘仅提供技术服务,无诈骗故意’。”“但那个案子有个关键点,技术总监保留了所有质疑的邮件,证明他曾多次反对违规操作。”我沉默了。我没有保留那些邮件。或者说,我根本没有发过质疑邮件。“还在研究,”律师说,“但至少,风向可能在变。技术人员的责任认定,越来越谨慎了。”我突然想起儿子,他今年该上小学了。如果我出不去,他的入学表格上,“父亲职业”那一栏该怎么填?16
这次,法庭同意了我们部分请求:郝鹏飞和钱成不会并案,但他们的部分笔录可以作为证据引入。更重要的是,法庭允许我们提交一份“技术分析报告”。报告是我在看守所写的,用纸笔手写了120页,分析了涉案APP的每一个功能模块。我把技术逻辑、产品意图、实际效果拆解得清清楚楚:“一键搭讪”功能——缩短用户建立联系的时间,增加冲动消费可能。“超级邀请人”功能——实质是传销式拉新,激励用户发展下线。“送礼打赏”功能——配合后台算法,识别高消费用户并重点维护。最上层是袁成凯等决策者,中间是郝鹏飞等运营者,最下层是我们这些执行者。“技术人员处于链条末端,仅接收需求,不参与策划。我们像厨房的厨具,厨师用刀切菜还是杀人,厨具无法选择。”“需要,”公诉人站起来,“但我先问被告人一个问题:张成江,如果你真的怀疑公司有问题,为什么不辞职?”我深吸一口气:“因为我母亲有阿尔茨海默症,每月药费要八千。因为我儿子要上学。因为我需要钱,很多钱。”“审判长,”我的律师举手,“这不是放弃原则,这是生存所迫。如果公诉人认为这是罪,那么请问,这个社会有多少人为了生存在做违心的工作?”走出法庭时,我看到妻子抱着儿子在旁听席最后一排。儿子对我挥了挥手,口型在说:“爸爸加油。”尾声:三年后
不是无罪释放,而是“判三缓四”——有期徒刑三年,缓刑四年。也就是说,我实际在看守所羁押790天,剩下的刑期在外面执行,只要四年内不再犯罪,就不用坐牢。判决理由写得很长,核心就一句:“被告人作为技术人员,主观恶性较小,在共同犯罪中起次要作用,且有家属需要抚养,酌情从轻处罚。”其他同事也差不多:王小帅判三缓三,张燕判二缓三,陈小雪判一缓二。没有一个人实刑。但代价是:我的61万全部追缴,房子被查封拍卖,妻子卖了绍兴的房子才还清罚金。母亲在我入狱第二年去世。去世前,她偶尔清醒时会问:“成江呢?”父亲总是骗她:“出差了,很快就回来。”出狱那天,阳光刺眼。妻子和儿子来接我,儿子已经小学二年级了,长得很快。我接过键盘,很轻。就像我的人生,一场大火后,什么都没留下,只剩一点灰烬。“江哥,我在一家小公司写代码,月薪八千。张燕在超市当收银员,陈小雪回老家开网店。我们偶尔聚聚,从不谈过去。但我想告诉你一件事,我自学了法律,明年准备考律师资格证。我想帮那些和我们一样的人,在技术、道德和法律之间,找到一条生路。我回了个“好”,然后打开电脑,注册了一个新的GitHub账号。第一个仓库,命名为“Tech_Ethics”(技术伦理)。第一行提交信息写着:“代码不应该成为罪恶的齿轮,写代码的人也不应该闭上眼睛。”作为一名程序员,我失去了三年自由,失去了母亲,几乎失去家庭。这就是我的故事。一个普通码农,在3.2亿诈骗案中的浮沉。我犯了错,也付出了代价。但生活还在继续,代码还在继续。如果有天你读到这段代码,请记住:技术没有善恶,但技术人有选择。