安全创客实践(2026)
实习实践报告,记录 Linux、Git、算法训练、工程实践与实时对抗 AI 项目,并附上完整答辩演示稿。
实习实践报告#
安全创客实践(2026)
以 Linux、Git、算法训练、软件工程实践与实时对抗 AI 项目为核心的综合实践总结。
一、实践主要内容及进程#
项目概述#
本次安全创客实践以 Linux、Git、程序调试、软件测试与算法训练 为基础,以 “蒜头攻防大作战”实时网格对抗 AI 为综合项目。
平台要求角色每回合向上下左右相邻格移动,处理苹果、护盾、身体增长、双方同步行动和周期性缩圈等机制。
其中核心函数:
walk()需要在 100 ms 内返回合法动作,同时评测代码不得:
- 输出标准信息;
- 读写文件;
- 创建额外进程。
团队整体采用:
工程工具学习 → 算法能力训练 → 规则建模 → AI 迭代 → 回归测试与答辩
的推进路线。
第一阶段:工程基础训练(7 月 5 日 ~ 7 月 7 日)#
学习内容#
完成:
- Linux 环境使用;
- Git 版本控制;
- 程序调试;
- 代码规范;
- 防御式编程实践。
Git 与工程协作#
通过以下操作练习版本管理:
initaddcommitbranchmergerebaseclonefetchpull掌握:
- 版本回退;
- 冲突处理;
- 远端协作。
调试与测试#
结合:
- 编译警告;
- 日志分析;
- 断言;
- gdb;
- gcov;
- 黑盒测试;
- 白盒测试。
定位:
- WA(Wrong Answer)
- TLE(Time Limit Exceeded)
- RE(Runtime Error)
等问题。
同时围绕:
- Bash 危险操作防护;
- 字符串函数安全使用;
- 动态数组安全;
- 输入检查;
- 边界处理;
建立防御式编程意识。
第二阶段:算法能力训练(7 月 8 日 ~ 7 月 11 日)#
集中学习:
- 队列;
- 栈;
- 链表;
- 图;
- 搜索算法。
完成:
- DFS;
- BFS;
- Dijkstra;
- SPFA;
- 贪心算法;
- 启发式搜索。
通过:
- 迷宫问题;
- 连通块问题;
- 最短路问题;
- 状态搜索问题;
理解不同数据结构与算法的适用场景。
贪吃蛇状态搜索#
在算法训练中,使用:
四进制 Hash + BFS
压缩蛇身方向状态。
以:
蛇头坐标 + 形状编码作为搜索状态,为后续综合项目中的:
- 动态状态重建;
- 搜索判重;
提供方法基础。
阶段整理(7 月 12 日)#
按照实训安排休息,并整理:
- 前阶段代码;
- 错题记录;
- 学习笔记。
为工程实践阶段做好准备。
第三阶段:工程实践训练(7 月 13 日)#
完成:
- 自制简易 OJ;
- “实现自己的 Shell”实验。
自制 OJ#
通过:
Makefile ↓编译执行 ↓输入输出对比 ↓结果判定串联完整程序评测流程。
Shell 实验#
结合:
- 进程;
- 地址空间;
- 父子进程;
- fork();
- exec();
实现:
- 命令读取;
- 命令解析;
- 子进程执行。
进一步理解用户态程序与操作系统接口。
第四阶段:实时对抗 AI 综合项目(7 月 14 日 ~ 7 月 15 日)#
项目名称:
蒸头攻防大作战
首先分析:
- Player 接口;
- 地图规则;
- 护盾机制;
- 身体增长;
- 同步行动;
- 缩圈规则;
- 碰撞规则。
随后实现:
状态建模#
包括:
- 身体历史记录;
- 尾格释放模拟。
BFS 多指标评估#
对候选落点计算:
- 连通面积;
- 出口数量;
- 资源距离;
- 尾部连通性;
- 缩圈风险。
对手策略推演#
枚举对手所有合法一步:
- 模拟同格碰撞;
- 计算最坏情况;
- 对己方动作进行评分。
第五阶段:测试与优化(7 月 16 日)#
使用:
./run.sh
./run.sh --visible结合:
- 日志;
- 多地图;
- 多对手环境;
完成回归测试与性能验证。
整理:
- 项目仓库;
- README;
- 演示文稿;
- 实践报告。
复核:
- 核心算法;
- 时间复杂度;
- 测试数据;
- 工程约束。
第六阶段:项目答辩(7 月 17 日)#
围绕:
- 任务规则;
- 状态重建;
- BFS 多指标评估;
- 对手最坏情况推演;
- 复杂度分析;
- 测试结果;
完成成果展示,并回答教师提问。
二、主要收获与体会#
工程能力提升#
本次实践将零散的:
- Linux;
- Git;
- 调试;
- 测试;
- 算法知识;
串联成完整工程链路。
版本控制使策略调整:
可追踪、可回退。
日志、gdb、覆盖分析和批量回归使问题定位从:
“凭感觉修改”
转变为:
“基于可复现实验证”。
同时,通过:
- 编译警告;
- 合法性判断;
- 接口兜底;
使时间、空间和异常行为具有明确边界。
算法思维提升#
团队认识到:
实时对抗的关键不是简单追逐最近资源,而是建立符合裁判规则的动态模型。
身体历史和尾格释放决定下一回合真实可用空间。
BFS 不仅用于最短路,还能够复用:
- 面积;
- 出口;
- 资源;
- 回尾;
等多个指标。
面对同步行动的不确定性:
对手全枚举 + 最坏情况评分
比单一路线预测更加稳定。
工程协作提升#
阶段目录、统一脚本、README 与答辩材料降低了团队沟通成本。
实践证明:
文档和展示不是开发后的附属工作,而是工程质量的重要组成部分。
只有明确:
- 规则;
- 数据结构;
- 函数职责;
- 复杂度;
- 能力边界;
才能及时发现实现偏差,并形成可复用方法。
三、对实践单位的建议#
建议继续保留:
- 规则明确;
- 结果可复现;
- 支持可视化回放;
的对抗任务。
同时补充:
- 尾格释放;
- 双方同格拾取护盾;
- 缩圈临界情况;
- 无合法落点;
- 超时情况;
等标准测试用例。
如果平台能够展示:
- 单回合耗时;
- 失败原因;
- 地图覆盖;
- 关键回合回放;
学习者能够更容易区分:
- 规则错误;
- 实现错误;
- 策略不足。
教学方面建议增加:
- 中期代码走查;
- 匿名基线对手;
- 阶段排行榜;
- 模拟评审。
四、实践成果#
1. 核心程序#
核心文件:
/code/player.h实现:
- init()
- walk()
包含:
- 输入检查;
- 身份识别;
- 身体历史;
- 尾格释放;
- BFS 多指标评估;
- 对手推演;
- 碰撞处理;
- 缩圈处理;
- 安全兜底。
复杂度:
[ O(n \times {=tex}m) ]
2. 测试结果#
随机种子回归测试:
项目 数量
胜 61000 平 0 负 0
性能测试:
walk()最大耗时约 1.13 ms
低于平台:
100 ms限制。
支持:
- 多地图;
- 多个预编译对手;
- 常规运行;
- 可视化观察。
3. 算法与工程材料#
完成:
- 队列;
- 栈;
- 链表;
- 图;
- 搜索算法训练;
- 贪吃蛇四进制 Hash + BFS 状态压缩;
- 自制简易 OJ;
- Shell 实验。
形成:
Makefilerun.shREADME日志系统批量运行脚本地图文件4. 答辩材料#
完成并部署实际演示稿:单独打开「蒜头攻防大战」答辩演示。
系统展示:
- 项目难点;
- 总体决策流程;
- 身体状态重建;
- BFS 指标;
- 对手最坏情况;
- 复杂度;
- 测试结果;
- 改进方向。
5. 方法总结#
形成实时网格对抗方案:
- 使用历史状态补全不可直接观测信息;
- 使用 BFS 提取可解释指标;
- 使用最坏情况评价处理对手不确定性;
- 使用批量回归与性能测试验证实现。
总结:本次实践完成了从基础工具学习,到算法设计,再到完整 AI 工程实现的全过程训练。