本博客用于记录一些零碎的新知识,以及偶有的牢骚和絮叨。全部文章均为本人原创,如无特别说明,均禁止转载。

在 AI 革命前夜,我终于读懂了《兰亭集序》
今天下午,家里很安静。妻子和孩子在卧室里睡着了。孩子去年刚出生,还很小,睡着的时候脸上有一种完全不设防的安稳。父母也都还健在,一家三代还可以这样平平安安地生活在一起。这样的日子其实没有什么戏剧性,不过是很普通的周末,普通到如果不是某种情绪突然袭来,它可能很快就会被我遗忘。 但也正是在这样一个下午,我突然产生了一种很强烈的感受:也许这已经是我人生中最幸福的时刻了。这个念头出现的时候,我自己也被吓了一跳。可能正因为眼前这一切太幸福了,悲伤才会从里面慢慢浮现出来。我想到父母会老,孩子会长大,我不可能永远停留在此刻。很多年后再回头看,今天下午也许会变成某种再也回不去的梦境。这一刻,我很清楚地意识到:幸福其实是短暂的,只会某个阶段里偶然被我们遇见。 不知怎的,这种情绪让我想起了《兰亭集序》。小时候在语文课本里学过王羲之的这篇序文,也全文背诵过:暮春三月,群贤毕至,少长咸集;流觞曲水,列坐其次。老师讲过字词,课本里也有现代文翻译。但说实话,那个时候我并不真正理解王羲之为什么写着写着会忽然悲伤。在一个风景那么好的地方,和一群朋友饮酒作诗,本来是极快乐的事。为什么突然要说“修短随化,终期于尽”?为什么要感慨“向之所欣,俯仰之间,已为陈迹”?小时候读到这些句子,只觉得这是古人惯常的人生感叹,是一种离自己很远的情绪。 直到今天,我才突然明白了。王羲之悲伤的不是兰亭不好,恰恰是因为兰亭太好了。人在极度幸福的时候,反而最容易意识到幸福的短暂。眼前越圆满,越能感觉到它的不可挽留。那些此刻正在发生的快乐,几乎在发生的同时,就已经开始走向消逝。 向之所欣,俯仰之间,已为陈迹。 过去我只是记住了这句话。今天我才知道它在说什么。 这段时间,这种情绪变得越来越明显。原因不仅是家庭生活本身,也和 AI 有关。我一直在跟进和学习最新的 AI 工具。新模型、新产品、新概念,几乎每天都在出现。刚刚理解一个工具的用法,似乎又有更高效、更强大的东西把它替代掉。时间久了,会有一种很深的力不从心感。 这种焦虑,是一种永远无法掌控局面的感觉。无论你多努力追赶,前方都像是在不断加速。你不知道今天学到的东西明天还有多少价值,也不知道现在赖以安身立命的技能,会不会在几年之内变得一文不值。如果只是我一个人,可能还好一些。人总可以对自己说,大不了从头再来。但当我看到父母、妻子和孩子时,这种焦虑就变得沉重起来。因为我真正害怕的,是眼前这份来之不易的幸福生活,会不会被某种更大的时代浪潮卷进去。 父母、妻子、孩子,一家人幸福安稳地生活。正因为它们这么具体,我才会更害怕失去。以前的人当然也面对无常。疾病、衰老、离别,这些自古以来就存在。但我们这一代人的无常感,似乎又多了一层新的东西。我们不只是面对生命本身的无常,还面对时代结构的无常。AI 革命可能正在到来,而且它带来的变化,也许会比过去许多技术变革更剧烈。工作、教育、财富分配、社会组织方式,甚至普通人理解世界和参与世界的方式,都可能发生变化。 于是,一种古典的悲伤和一种现代的焦虑叠加在了一起。古典的悲伤是:再幸福的时刻也终将消逝;现代的焦虑是:即使我想守护眼前的生活,也不知道应该怎样做。这两件事叠在一起,就形成了一种很难说清的状态。它是一种更深的无力感。你知道人生本来就不可掌控,同时又发现时代正在变得更加不可掌控。你想让眼前的幸福持续下去,却不知道自己应该抓住什么。 也正是在这种状态里,我重新想起了《兰亭集序》。一个身处 AI 革命前夜的现代人,居然会在某个周末下午,在妻子和孩子熟睡的卧室,体会到一千多年前一个古人的情绪。时代完全不同,但情绪的底层居然是相通的。人在最幸福的时候,会忽然意识到幸福不能永久保存;人在最想守护某些东西的时候,会忽然感到自己并没有那么大的力量。 很多文章年轻时读不懂,是因为人生还没有走到那里。那时我们只是把它当作课文,当作考试材料。等到某一天,生活本身把你带到类似的位置,你才会突然发现,原来那些句子不是写在书上的,而是早就等在你生命里的某个地方。 这也许就是文学存在的意义。王羲之没有解决无常。他没有办法让兰亭雅集永远持续。他能做的,只是把那一刻写下来。于是那场聚会消失了,但又没有完全消失。它变成了文字,变成了一种后人仍然可以进入的情绪。时代会变,表达方式也会变。可人心里那些最基本的东西,似乎没有那么容易改变。一个人对幸福的珍惜,对失去的恐惧,对时间的无力感,以及想要通过文字保存某个瞬间的冲动,在一千多年前和今天之间,依然可以彼此相认。 也许这就是我今天从《兰亭集序》中获得的东西。它只是让我知道:我此刻感受到的不安,并不是孤立无援的。很久以前,也有人在极乐之中看见无常,在美景与欢聚中想到消逝,并且把这种感受写了下来。一千多年后,一个普通人在 AI 革命前夜的周末下午,坐在家里,听着妻儿熟睡的声音,忽然读懂了他。这件事本身,就已经给了我一丝确定感。 没想到多年以后,我竟能从《兰亭集序》中获得力量。可能很多时候,人无法阻止幸福成为“陈迹”,但可以决定它成为怎样的陈迹。是仓促经过、事后遗憾的陈迹,还是被认真活过、认真记住的陈迹。 有意思的是,今天这篇文字,也是从我和 AI 的一段对话中慢慢成形的。这一点本身就很有意思。我担忧 AI 带来的未来,却又借助 AI 整理自己的情绪。好像一切都开始和 AI 发生联系,连关于无常、家庭、文学和自我的思考,也不能完全置身事外。

上线了一个离职补偿金计算工具
最近上线了一个小工具:SeveranceGO-CN:中国离职补偿金计算工具 。项目代码也放在 GitHub:masonblog/SeveranceGO-CN 。 它的用途很直接:输入入职时间、离职时间、上一年度收入、劳动合同履行地、合同签署情况、离职原因等信息后,工具会估算经济补偿金、违法解除赔偿金、代通知金,以及未签书面劳动合同可能对应的二倍工资区间。 先把免责声明放在前面:这只是辅助估算,不能替代正式法律意见和律师判断。 劳动争议里,解除理由、通知程序、证据材料、当地工资口径、仲裁和法院尺度,都会影响最后结果。这个工具更像一次"第一轮体检":先把大概区间、关键变量和风险点列出来,方便当事人知道接下来该核对什么。 为什么要做这个工具 做公司业务和劳动争议咨询时,我经常遇到同一个问题: 公司要跟我解除劳动合同,我大概能拿多少钱? 这个问题看似简单,其实很容易算偏。 很多人只记得一个公式:工作几年就是 N,违法解除就是 2N。但真正落到个案里,马上会冒出一堆细节:工作年限怎么折算?半年以上不满一年算不算一年?月工资有没有封顶?当地上年度职工月平均工资是多少?公司属于无过失性解除,还是经济性裁员?有没有提前三十日通知?没签书面劳动合同的期间从哪天起算、到哪天截止? 律师当然可以逐项解释,但很多基础问题完全可以先交给一个表单处理。尤其是在咨询前,如果当事人已经知道自己可能涉及 N、N+1、2N,还是二倍工资争议,沟通效率会高很多。 于是我就想做一个尽量朴素的工具:不制造焦虑,不承诺结果,只把规则摊开,把计算过程写清楚。 法律规则不是一句 prompt 就能解决的东西 这个项目最有意思的地方,在于如何把劳动法规则翻译成代码。 法律人看《劳动合同法》第四十六条、第四十七条、第八十二条时,脑子里浮现的是构成要件和法律效果:什么情形应当支付经济补偿,补偿年限如何计算,月工资基数如何确定,什么情况下适用三倍封顶,未签书面合同什么时候触发二倍工资。 程序员看同一组问题,看到的是输入、分支、边界条件和输出。 Vibe Coding 的价值也在这里:我不用先把自己训练成一个全栈工程师,才能开始做产品。但这并不意味着我可以只对 AI 说一句"帮我做个离职补偿计算器",然后等它交付成品。越是法律产品,越不能这样做。 我的做法是先把规则拆成几层: 事实输入层:入职、离职、收入、地点、合同签订时间、解除原因。 法律判断层:判断是否可能存在经济补偿、违法解除赔偿、代通知金或二倍工资。 数据口径层:匹配地区工资数据、最低工资、封顶基数,并允许用户手动覆盖。 结果说明层:不仅给一个数字,还要说明这个数字是怎么来的、哪些地方需要复核。 这其实很像写一份法律检索备忘录:先列事实,再列规范,再做归入,最后提示风险。只不过这次的输出物从 Word 文档变成了一套可以运行的 React + TypeScript 页面。 最难的是边界感 做法律工具,最怕两种倾向。 一种是装得太懂。明明只是按公开规则做估算,却把结果包装成"你一定能拿到这么多钱"。这很危险,因为劳动争议高度依赖证据和程序细节,一个解除通知书的措辞、一次谈话录音、一次调岗降薪的背景,都可能改变判断。 另一种是缩得太后。什么都说"具体情况具体分析",最后用户看完还是不知道自己在哪里。 我希望这个工具站在中间:该算的先算,该提示的明确提示,该留白的地方不要硬判。比如疑似违法解除,就展示 2N 的估算区间,同时提醒用户核查解除理由、规章制度、送达程序和证据链;涉及第 40 条解除,就把是否提前三十日通知作为影响 N+1 的因素;未签书面合同,则单独估算可能的二倍工资区间,不把它粗暴塞进补偿金里。 这也是法律人参与 Vibe Coding 的一个优势:我们对"不确定性"比较敏感。代码喜欢确定答案,法律常常只有风险区间。真正要做得可用,就要让产品承认这种不确定性。 数据口径:先可用,再持续修 首版内置了 2024 年工资标准参考数据,并覆盖中国大陆各省级行政区下的地级行政区、自治州、地区、盟以及部分省直管县级行政单位。这里面最麻烦的是,各地公开口径并不完全一致,有的城市能找到官方全口径或城镇单位平均工资,有的只能暂用国家统计局分区域数据作为封顶参考;最低工资也会存在不同档位。 所以我在页面里保留了"可覆盖"输入框:如果用户掌握当地仲裁、法院或人社部门最新口径,可以手动填入。对法律工具来说,这比假装数据库永远正确要诚实得多。 后续我会继续补充和校正数据源,也欢迎熟悉本地劳动争议口径的朋友提 issue 或 PR。 给律师的一点感想 过去我们总觉得,律师的技术化转型大概就是会用检索库、会写提示词、会让 AI 起草合同。但做完这个工具后,我越来越觉得,真正有价值的地方不止是"让 AI 替我们写文字",还包括把法律服务里可以结构化的部分产品化。 ...

借助 AI,我做了一个各省假期政策查询网站
起心动念:一个法学生的"不务正业" 作为一名公司律师,我每天打交道最多的就是各种法规条文,以及来咨询各种法律条文的亲戚朋友。其中一个最常被问到的问题,就是各种劳动法规。尤其是各地假期政策,比如婚假怎么请,产假有多长……这些是每个人都会遇到的问题。 前段时间,我有个朋友跳槽到一家深圳的公司,问我:“深圳的陪产假到底是几天?网上查的乱七八糟的。“我翻了一圈,发现确实如此。国家层面有一套规定,各省又有各自补充的地方规定,信息散落在各级人社厅的官网、政府公报、地方性法规里,没有一个能一站式对比查看的地方。 我当时就想:要是有一个网站,选一个省份,所有假期政策一目了然,中央规定和地方特别规定并列展示,每条规则还附上法律出处,那该多好。 然后我脑子里蹦出另一个念头——我为什么不自己做一个呢? 放在以前,这个念头冒出来三秒钟就会被我自己摁回去。我不会写前端,不会画地图,不知道怎么部署网站。但最近这一年,情况变了。 当法学撞上 Vibe Coding 先聊聊什么是 Vibe Coding。这个词是 Andrej Karpathy 在 2025 年初提出来的,大意是:你不再需要逐行手写代码,而是用自然语言描述你想要什么,AI 帮你写。你要做的不是"编程”,而是"指挥”。你负责想法和品位,AI 负责执行。 我刚接触 Vibe Coding 的时候,也经历过一段迷茫期。看别人用 Cursor、用 Claude Code 三下五除二搞出一个项目,自己上去一试,发现根本不是那么回事。AI 确实能写代码,但写出来的东西经常有这样那样的问题:组件渲染不出来、类型报错、样式错乱、路由不对…… 后来我慢慢悟出来一个道理:Vibe Coding 不是"不用动脑子",而是"换一种方式动脑子"。 你不能真的完全放手,你得学会审阅代码、提出精准的修改指令、在 AI 卡壳的时候指出方向。某种意义上,这和 review 一篇法学论文没什么区别——你不是从头到尾自己写每一个字,但你必须判断哪里有问题、该怎么改。 而我的法律背景,在这个项目里扮演了一个意想不到的角色。 法律思维如何重塑我的开发流程 法学的核心训练是什么?如果只让我说一点,那就是体系化的分类与归入。面对一个案件,你要做的第一件事不是拍脑袋下结论,而是把事实拆解成若干个法律要件,逐一检视,最后得出结论。 这套思维方式,在我做这个假期政策查询网站的时候,天然地映射到了数据结构的搭建上。 假期政策说白了,就是一个多层级的规则体系: 第一层,国家法定基准。比如产假 98 天、婚假 3 天,这是写在《女职工劳动保护特别规定》和《人口与计划生育法》里的,全国通用。 第二层,各省地方补充规定。比如上海在 98 天基础上再加 30 天产假,广东的陪产假是 15 天,少数民族自治地方还有特殊政策。 第三层,兜底规则。如果地方没有特别规定,就自动沿用中央标准。 这个三层结构,我用法学里"一般法与特别法"的关系来理解:特别法优先于一般法,特别法没有规定的,适用一般法。这恰恰就是代码里 mergePolicy() 函数的核心逻辑——先加载中央基准数据,再用各省的覆盖字段去 merge,本地有的覆盖中央,本地没有的 fallback 到中央。 所以当 AI 问我要怎么设计数据结构的时候,我几乎没有犹豫就画出了这个 YAML schema: 婚姻假: 天数: 3 适用条件: 依法办理结婚登记的夫妻 工资待遇: 正常发放 法律依据: - 名称: 国家劳动总局、财政部关于国营企业职工请婚丧假和路程假问题的通知 条款: 第一条 然后在各省的文件里,只写和中央不同的部分。比如江苏: ...

Claude Code 源代码泄露:一个 .npmignore 引发的连锁风暴
2026 年 3 月 31 日,AI 圈迎来了一场意想不到的"愚人节前夕大礼":Anthropic 旗下明星产品 Claude Code 的全部源代码,因一个打包失误意外流向了互联网。 这不是黑客攻击,不是内鬼泄密,而是有人忘记在 .npmignore 里加了一行 *.map。 就这样,51 万行 TypeScript 代码、44 个隐藏功能开关、以及一个叫做 KAIROS 的神秘"后台自主代理",在几小时内暴露在所有人面前。 事件经过:一个 .map 文件引发的雪崩 泄露是如何发生的? 2026 年 3 月 31 日,Anthropic 在 npm 上发布了 @anthropic-ai/claude-code 的 2.1.88 版本。这次更新本是例行维护,但却附带了一个巨大的"彩蛋"——一个 59.8 MB 的 JavaScript Source Map 文件(.map 后缀)。 Source Map 是开发者用于调试压缩/混淆代码的工具,它能将编译后的代码映射回原始的 TypeScript 源码。正是这个本应只存在于内部的调试文件,被意外打入了公开发布的 npm 包里。 更关键的是,这个 .map 文件还指向了一个 Anthropic 自家云存储上的 ZIP 压缩包,里面存放着完整的源代码仓库。所有人只需要顺着这条线索,就能下载到全部代码。 根本原因:有人忘记在 .npmignore 文件中添加 *.map 规则,导致 Source Map 文件随包一起发布。 传播有多快? 代码在公开后数小时内便被开发者社区察觉,随即被备份到 GitHub 上。根据 Layer5 的统计,相关仓库的 Fork 数量迅速突破 41,500 次,一度成为 GitHub 历史上增长最快的仓库。 ...

高铭暄逝世,中国现代刑法学论争
2026年2月26日,当代著名法学家、中国刑法学"泰斗"高铭暄,因病逝世,享年98岁。 作为新中国培养的第一代法学家,高铭暄的一生堪称中国刑法的活化石。他是唯一一位全程参与新中国第一部刑法制定的学者;他是新中国第一位刑法专业的博士生导师;他撰写了改革开放后我国第一部法学专著,并主编了第一部全国统编的刑法学教科书。毫不夸张地说,今天中国大地上每一份刑事判决书的背后,都有高铭暄奠定的理论基石。 然而,科学的规律就在于不断地反思与超越,法学自然也不例外。在缅怀高铭暄历史功绩的今天,我们也正处于中国刑法学经历深刻转型的节点。近年来,中国刑法学界围绕着 “四要件"与"三阶层” 两个犯罪构成体系,展开了一场旷日持久、影响深远的学术论争。这场论争,表面上看是学者们在书斋里的争辩,但其底层逻辑,却是国家刑罚权如何行使,以及每一个普通公民的权利如何得到保障的宏大命题。 高铭暄:一部中国刑法的活化石 要理解高铭暄对中国刑法的贡献,我们要把目光投向1928年5月的浙江省玉环县,一个叫鲜叠的小渔村。高铭暄就出生在这里的一个书香门第与法律世家。在国民党统治时期,他的父亲曾历任杭州地方法院推事(相当于现在的法官),以及浙江高等法院审判员,他的叔叔和大哥也都从事法律相关的工作。 在这种浓厚的家学渊源熏陶下,高铭暄自幼便对法律产生了强烈的向往。9岁那年,抗日战争全面爆发,高铭暄的父亲不愿为日本侵略者卖命,愤然弃官回乡,赋闲在家,并在闲暇之余严格督促高铭暄读书。初中毕业后,他考入当时全国闻名的温州中学。当时的温中校长,著名的教育家金嵘轩举办全校征文大赛,题目是《如何建设新温中》,年少的高铭暄凭借扎实的文字功底一举夺冠,扬名全校。 1947年高中毕业时,高铭暄展现出极高天赋,他同时被复旦大学、武汉大学和浙江大学录取。他选择了浙江大学法律系,随后因时代变迁和院校调整,他又转入了北京大学法律系,并在1951年升入中国人民大学法律系刑法研究生班深造。在人大,他遇到了对他一生影响深远的苏联法学专家贝斯特洛娃、达马亨等人,系统地接受了刑法学的专业训练。1953年,高铭暄以全优的成绩毕业并留校任教,从此开启了他躬耕教坛七十余载的传奇生涯。 漫漫立法路:从第22稿到第38稿 新中国成立前夕,基于彻底摧毁旧国家机器的政治考量,中央作出决定,废除国民党政府"六法全书",另起炉灶建设社会主义法制。这一破旧立新的决定,导致在建国初期的一段时间里,国家在惩治犯罪时处于 “无法可依"的真空状态,司法机关办理案件往往单凭政策,或者依赖《惩治反革命条例》、《惩治贪污条例》等零星的单行法规。 1954年9月,新中国第一部 《宪法》正式颁布,制定一部统一的《刑法》终于被提上了日程。同年10月,全国人大常委会办公厅组建了刑法起草班子,受中央书记处的直接领导。当时,刚刚留校任教一年的高铭暄,凭借扎实的学术功底,被抽调参与起草工作。这一年,他年仅26岁,是整个起草小组中最年轻的一员。 那时的他或许未曾料到,这项工作,他一干就是25年。 刑法的起草过程,是一场常人难以想象的漫长跋涉。起草班子夜以继日地工作,广泛收集案例、研究国内外立法,到1957年6月写出了第22稿,又在1963年10月,打磨出了第33稿。这个第33稿甚至已经通过了中共中央政治局常委会的审查同意,眼看就要正式完成。 然而,随之而来的 “文化大革命”,让中国的法制建设陷入了长达十余年的停滞。起草工作被迫全部中断,中国人民大学甚至一度停止办学,高铭暄本人也经历了下放劳动,后被分配到北京医学院,一待就是八年。在这漫长而苦闷的岁月里,高铭暄始终保存着当年起草刑法的各种资料文献,等待着法治春天的再次来临。 终于,1978年10月,随着中共十一届三中全会的临近,国家明确提出了 “有法可依、有法必依、执法必严、违法必究”的原则,刑法立法迎来了 “第三次上马”。起草班子在1963年第33稿的基础上迅速重启修订。经过反复推敲和激烈争论,最终形成了历史性的第38稿。 1979年7月1日,第五届全国人大第二次会议表决通过了 《中华人民共和国刑法》。高铭暄百感交集,他后来回忆说,这结束了新中国三十年没有刑法的历史,也宣告了"不引用法律条文的刑事司法文书一去不复返了”。从当初26岁的青年学者,到此时已是两鬓斑白的中年汉子,高铭暄把人生最宝贵的年华,全部倾注在了这38稿的字里行间。 为了留下这份珍贵的历史记忆,高铭暄在1981年出版了 《刑法的孕育和诞生》一书。这不仅详细记录了1979年刑法从第22稿到第38稿定稿阶段的争议与修改过程,更是改革开放后我国第一部法学学术专著,出版不到一个月便被抢购一空。 “四要件"理论的确立 有了刑法,面临的下一个问题就是:司法机关在具体的办案中,到底应该用什么样的逻辑去认定一个人是否构成了犯罪?这就引入了刑法学中最核心、也是争议最大的理论——犯罪构成理论。 正如我们前面所说,建国初期废除了旧法统,新中国的法学教育走上了一条 “以苏俄为师”的道路。20世纪50年代初,以贝斯特洛娃为代表的苏联专家来到中国政法院校授课,他们带来的,正是当时在苏联占据统治地位的“四要件"理论。 为了让大家在当时的百废待兴中迅速掌握定罪规律,1957年,高铭暄所在的中国人民大学法律系刑法教研室集体撰写了 《刑法总则讲义》,重点引介了"四要件"理论,标志着这套学说在中国的落地。到了1982年,为了适应恢复高考和法制重建的需求,司法部组织全国著名学者编写全国统编教材。高铭暄与武汉大学的马克昌教授(当时学术界并称 “北高南马”)合作主编了新中国第一部**《刑法学》统编教材**。这本教材总发行量接近200万册,彻底将"四要件"理论确立为中国刑法学不可动摇的基本框架。 什么是"四要件"理论?该理论认为,要判定一个行为构成犯罪,必须同时具备四个像拼图一样的要件: 第一,犯罪客体:也就是这个行为侵犯了什么样的社会关系。比如杀人犯侵犯了他人的生命权,盗窃犯侵犯了财产权。 第二,犯罪客观方面:这指的是犯罪活动在客观外在的表现。包括行为人做了什么、造成了什么后果,以及行为和结果之间有没有因果关系。 第三,犯罪主体:也就是实施这个行为的人,是不是达到了法定的刑事责任年龄,是不是精神正常。 第四,犯罪主观方面:这指的是行为人做这件事时的心理状态。他是故意的,还是过失的? 在"四要件"理论的逻辑体系下,这四个条件是一种 **“一存俱存,一损俱损”**的关系。法官在审理案件时,需要在脑海中画一个十字架,把这四个要件一一填入。只有四个条件全部齐备、严丝合缝地拼在一起,才能认定犯罪成立。这种强调 “主客观相统一”的思维模式,直观、清晰、极易上手。在当时司法人员法律素养普遍不高的历史背景下,“四要件"就像是一把极其高效的快刀,为中国司法机关迅速理清案情、准确打击犯罪立下了汗马功劳。 从"四要件"到"三阶层”:一场刑法学界的世纪之争 然而,随着1978年改革开放的推进,中国的社会结构、经济模式和思想观念都发生了翻天覆地的变化。原有的计划经济体制逐渐向市场经济转轨,社会矛盾和犯罪形态也变得日益复杂(比如出现了各种新型的经济犯罪、金融犯罪等)。 在这样的背景下,仅仅规定了130个罪名的1979年刑法,开始显得捉襟见肘,难以满足社会发展的需求。从1981年到1996年间,全国人大常委会密集出台了20多个单行刑法和附属刑法规范来"打补丁”。直到1997年,国家决定对刑法进行全面、系统的修订。高铭暄作为立法专家,再次全程参与了这次修法。1997年刑法不仅大幅增加了罪名、调整了刑罚结构,更重要的是,它明文规定了**“罪刑法定”、“适用刑法人人平等”、“罪责刑相适应”这三大基本原则。高铭暄一生都在坚持和呼吁“罪刑法定”——罪名绝不能类推,法无明文规定不为罪**。这一原则的最终确立,标志着中国刑法真正走向了现代化,也为中国刑法学走向世界奠定了坚实基础。 立法的完善为刑法学理论的繁荣提供了土壤。进入20世纪90年代,随着中国法学教育的开放,大批中青年学者(如陈兴良、周光权、张明楷等)开始远赴德国、日本等传统法制强国深造,并系统地翻译引入了大量德日刑法学文献。 这些"新兴学者"们带回了一套全新的定罪逻辑——也就是源于德国的**“三阶层"理论**。这套理论主张,在认定犯罪时,法官的思维不能像四要件那样是"平面拼图”,而应该像是一个有着三个严密过滤网的漏斗。 具体来说,“三阶层"分为三步: 第一层,构成要件该当性:这纯粹是一个事实判断。法官只看行为人的动作和结果,是不是表面上符合刑法条文的描述。比如你拿刀把人捅死了,这就是符合了故意杀人罪的"该当性”。 第二层,违法性:这是对行为的客观价值判断。行为虽然符合法条描述,但是在整体法律秩序下,这种行为有没有正当的理由?如果存在这种正当理由(比如你是为了正当防卫,或者紧急避险),那么你的行为在法律上就是被允许的,自然就不违法。 第三层,有责性:这是对行为人的主观谴责。如果你的行为符合法条描述,又没有正当理由,法官还要看能不能在道义上谴责你。如果你是一个没有辨认能力的重度精神病人,或者你是在他人的胁迫下干的,那么法律认为你没有"责任”,同样不构成犯罪。 “三阶层"理论的引入,在中国刑法学界无异于投下了一枚深水炸弹。陈兴良等学者旗帜鲜明地主张,应当进行 “刑法知识转型”,实现犯罪论体系的 “去苏俄化”,全面拥抱德日阶层理论。他们尖锐地批评四要件体系,认为它不能明确区分"违法"和"责任”,缺乏递进过滤的逻辑,在面对复杂疑难案件时容易导致无章可循,法官"只能在一种难以名状的感悟中完成生杀予夺的裁决"。 而传统学者阵营则坚决反击。他们认为,四要件在中国经过几十年的司法实践打磨,已经形成了深厚的路径依赖和制度契合。如果彻底"另起炉灶",会导致基层司法人员思想混乱。而且,将人权保障不力的黑锅完全扣在四要件理论头上也是荒谬的。人权的保障靠的是刑事诉讼程序的公正和具体制度的落实,而不是单纯玩弄概念游戏。 这场学术交锋在2009年的国家司法考试中达到了高潮。当年的司考命题在某些案件的定性判断上,开始明显向"三阶层"的逻辑倾斜,这在法学界引发了巨大的震动与争议,甚至有学者戏称这是刑法学界的**“诸神之战”**。 四要件 vs 三阶层:一场逻辑上的深度剖析 各位看到这里可能会有疑问:四要件和三阶层,不都是把犯罪的条件拆分开来吗?无非一个是四个篮子,一个是三个漏斗,本质上到底有什么区别?为什么那么多顶尖的新生代学者笃定地认为,三阶层在逻辑上更加严密? 为了解答这个硬核的专业问题,我们需要在逻辑层面进行一次深度的剖析。 在处理简单案件时,任何理论都会显得游刃有余。检验一个理论是否严密,必须把它放在边缘的、极限的疑难案件中去施压。陈兴良等学者正是通过对极端案例的分析,犀利地指出了四要件的逻辑硬伤。 场景一:正当防卫的逻辑困境 假设你走在街上,一个歹徒拿刀要杀你,你为了自保,夺过刀把他反杀了。这在法律上叫正当防卫,不构成犯罪。 在四要件看来,这件事很别扭。因为法官认定你不构成犯罪时,必须解释你缺少了哪个要件。你杀人客观上造成了死亡(有客观方面),你是个正常成年人(有主体),你就是想弄死他来自保(有主观故意)。那到底缺了啥?传统教材只能勉强解释为"排除了社会危害性",于是硬生生地在四要件的理论大厦旁边,搭了一个**“排除犯罪事由"的独栋别墅**,把正当防卫塞了进去。这在逻辑上是断裂的。 但在三阶层理论看来,逻辑如丝般顺滑:你的反杀行为符合杀人的"构成要件”(事实成立);但是到了第二步"违法性"审查时,因为你是在面临不法侵害时正当防卫,这在法律价值上是受鼓励的正当行为,因此阻却违法。因为不具有违法性,所以无罪。逻辑闭环,完美解释。 场景二:共同犯罪中的教唆犯 这是另一个最能体现三阶层理论逻辑严密性的经典场景。假设一个成年人张三,教唆一个13岁的未成年人李四去入室盗窃。 ...