作为一个刚到ACGO的新人,我也没有什么好说的,来给大家写一篇文章玩玩~
不过,等—作为一个资深两年半学习py,HTML和C++的帅哥,我终于,写完了——(爽)
相信各位新团长、管理员肯定还在为竞赛、题单、作业中有人用AI写代码而发愁?
嗯,那么,接下来的“秘籍”请你接好!
(此文章针对KNighter框架进行编写,后期还会通过码风和做题切出进行编写)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在正式食用前
不过,等,在你康下面的内容之前,建议你去康康"(* ̄3 ̄)热爱¥ 303LYP”写的如何识别AI作业这篇文章
(其实你们知道吗,我一开始以为ACGO在编辑文章时可以写HTML的代码,嘤嘤嘤~)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
源代码(python的知道吧,不会用的私我或者自己去网上找教程)
此版本为V.0.1.0公测版本,不代表正式版本全部,欢迎大家使用提出建议,作者知道了会更新修改哒~
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
版本日志:
V.0.1.0 公测版 2025年12月7日更新
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
不知道大家康懂木有,还是给大家解释一下
技术原理
核心思路借鉴了UIUC团队的KNighter框架 :不直接让大模型判断,而是利用其能力生成特定的静态分析规则,再通过成熟的代码分析工具执行这些规则,从而将AI的“洞察力”转化为可重复、可解释的检测流程。
1.规则生成与模式匹配
通过分析大量AI生成代码的共性特征,生成特定的检测规则,避免了大模型直接分析的全部代码带来的高计算成本和"幻觉"风险。
2.多维度特征融合
结合了传统静态分析(clang-tidy)、代码结构特征(AST分析)和统计特征(代码熵、注释密度等),形成一个综合判断体系。
3.可解释的评分机制
每个特征都有明确的权重和贡献度,用户可以清楚理解判定依据,避免了"黑箱"判断。
注意事项
这只是一个工具,也会有误判的时候
代码长度要求:至少需要100字符以上的代码才能进行有效分析
语言特性覆盖:对某些高级C++特性(如模板元编程)的检测仍在优化中
对抗性规避:经过精心修改的AI代码仍可能规避检测
误报可能性:风格极为规范的人工代码可能被误判为AI生成
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如何食用
大家可以自己去网上找一找如何编写python代码的教程,我简单讲一讲
第一步:安装Python
首先,你需要在电脑上安装Python。
访问官网:打开浏览器,访问 Python官方网站(python.org )。
下载安装包:进入"Downloads"菜单,网站通常会自动推荐适合你操作系统的安装包(比如Windows系统会推荐.exe文件,macOS会推荐.pkg文件)。直接点击下载即可。选择Python 3.7或更高的版本。
运行安装:双击下载好的安装包。在安装过程中,请务必勾选 "Add Python to PATH" 这个选项,这能让你在电脑的任何地方都能轻松运行Python。之后按照安装向导的提示完成安装即可 。
验证安装:同时按下键盘上的 Win + R 键(如果你是Windows用户),输入 cmd 然后按回车,打开命令提示符窗口。输入以下命令并回车:python --version
如果安装成功,它会显示Python的版本号(例如 Python 3.10.14 )。
第二步:准备“检测工具”和“待检测文件”
现在你需要准备两样东西:一是我们要用的Python检测程序,二是你想要检测的C++代码文件。
创建项目文件夹:在你的电脑上找一个合适的位置,新建一个文件夹,可以命名为 ai_code_detector 。这个文件夹将作为我们的工作目录。
放置检测脚本:将我前面提供的完整Python代码( CppAIDetector 类等)保存为一个名为 detector.py 的文件,并放入这个文件夹。
放置(c++)代码:将你想要检测的C++代码文件(例如 main.cpp )也复制到这个文件夹里。
第三步:安装所需的Python库
我们的检测脚本需要一些额外的Python库才能工作。你只需要安装一次。
打开命令行(命令提示符或终端),确保当前路径是你的项目文件夹,然后运行以下命令来安装所需的库:
pip install nltk
第四步:运行检测程序
一切就绪,现在可以运行检测程序了。
在 detector.py 文件的末尾,确保有类似下面的代码块。这段代码的作用是创建一个检测器实例,并读取你的C++文件进行分析:
在命令行中,运行以下命令来启动检测:
python detector.py
第五步:理解检测结果
程序运行后,你会看到一个报告。你需要关注的核心指标是 AI生成概率 。
高概率(例如 > 70%):这段C++代码在风格特征上有很多与AI生成代码相似的地方,需要你重点关注。
中低概率(例如 < 40%):这段代码更可能由人工编写。
中间概率:这是一个“灰色地带”,结果不明确,需要你结合自己对代码和作者的了解进行进一步判断。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
好啦好啦,那么这篇文章展开到这就结束了。
爆肝了好久,希望大家支持一下~
版本号和更新日志在前面代码部分
大家记得看看,会有持续更新的~