做了一个ai项目,面试官追问两小时!
太长不看版:
一个面向金融面试的RPA开源项目:基于Skyvern改造,主打三维度权限、高危审批、LLM容错、双Agent,附带简历写法+面试QA+16天开发日志,代码+文档全开源,专治面试没得聊。
🌟 核心亮点速览(就三点):
- 业务深度:银行真实权限模型+分级审批+审计留痕
- 技术巧思:Action缓存降本60%、双Agent断点续跑、三层LLM容错
- 面试加成:所有设计决策写在日志里,配套简历/QA手册,让你聊得深
👉 项目地址评论区自取,觉得有用给个Star就行~
正文开始:
做这个项目的起因很简单:我想要一个面试时真正能聊得深的项目。不是那种 CRUD 搭完就结束的 demo,而是一个完整的系统——有真实的业务场景驱动、有经得起追问的设计决策、有能跑通的端到端链路。最终我选择基于 Skyvern(用 LLM + 视觉理解驱动浏览器自动化的开源框架),针对金融行业做了一套企业级 RPA 平台的完整改造。现在把它完整开源出来,项目地址放在文末。
这个项目里有什么
一、完整的企业级功能
不是堆功能列表,每个模块都有明确的设计动机:
三维度权限体系(部门 × 业务线 × 角色)
为什么不用简单的 role?因为银行里对公信贷部的操作员不该看到个人金融部的任务,但风险管理部需要跨部门只读,合规审计部需要跨部门审批——单一维度的角色模型覆盖不了这些真实场景。operator 和 approver 在数据库层面强制互斥,对应金融行业的职责分离要求。
高危操作分级审批
转账、放款、核保这类操作不能让 AI 自主执行。我设计了两阶段识别(关键词预筛 + LLM 精准判断),命中后按风险等级路由给不同层级审批人,整个等待通过 Redis Pub/Sub 实现,不阻塞其他任务,超时自动拒绝。
全链路合规审计
每步操作前后截图上传私有化 MinIO(数据不出内网),敏感信息自动脱敏,完整操作时间线支持多维度检索。这不是"加个日志表"的事,是在架构层面设计的。
LLM 三层容错 + NEEDS_HUMAN 状态机
LLM 不是 100% 可靠的。Prompt 格式约束 → Pydantic 校验重试 → 超出重试转人工接管。为 NEEDS_HUMAN 设计了完整的处置流程:查看截图和 LLM 原始输出,选择跳过/手动执行/终止。
Planner + Executor 双 Agent 协作
将「规划」和「执行」解耦为两个独立 Agent,四种失败策略(retry / skip / abort / replan),子任务状态持久化支持断点续跑——银行日终批处理中途中断可以从上一个成功步骤继续。
可组合 Skill 库
7 个独立 Skill(登录、表单填写、表格提取等),统一接口,6 个金融工作流模板通过 Skill 组合实现。所有银行场景共享同一个 LoginSkill,登录页变化只改一处。
Action 缓存 + 模型路由
相同页面结构的重复执行跳过 LLM 调用,模型路由根据页面复杂度自动选择轻量/标准/重型模型,降低约 60% 调用成本。
二、面试能聊什么
列几个我在准备过程中觉得有深度的点,也是面试里容易被追问的方向:
- 权限模型的选型理由:为什么三维度而不是简单 role?怎么处理风控部跨部门只读和合规部跨部门审批这种交叉需求?互斥约束为什么放在数据库层而不只是应用层?
- 审批的异步实现:为什么用 Redis Pub/Sub 而不是数据库轮询或 Kafka?并发量、实时性、部署成本三者怎么取舍?
- LLM 容错的分层设计:为什么不是一层 try-catch 搞定?Prompt 约束、解析重试、人工兜底各解决什么层次的问题?
- 双 Agent 架构的失败策略:retry / skip / abort / replan 四种策略分别对应什么场景?replan 次数上限怎么定?
- Action 缓存的 key 设计:DOM 哈希怎么剥除动态内容?缓存命中率和正确性之间怎么平衡?
这些问题在项目的 16 天开发日志(summaries/)里都有完整的推理过程,不是结论式的,是"我当时考虑了哪些方案、为什么排除了其他选项"这种记录。
三、工程完整度
不只是功能能跑,整个工程链路是通的:
- 601 个测试(561 单元 + 40 端到端集成),85% 覆盖率,覆盖权限边界、租户隔离、审批路由、LLM 容错、缓存失效等场景
- Docker Compose 一键启动(PostgreSQL + Redis + MinIO + Skyvern + UI),开发和生产双配置
- Nginx 反向代理 + gzip + 安全头 + HTTPS 预留
- 完整的 数据库迁移(Alembic)和 种子数据(16 个演示用户、6 个部门、4 条业务线)
- 从登录认证 → 任务创建 → 风险识别 → 审批流转 → 审计留痕,整条业务链路可端到端走通
四、不只是代码
除了项目本身,仓库里还附带了几份可能对你有用的东西:
简历写法指南(docs/resume_guide.md)
三个版本:通用后端版、AI 强化版、全栈版。核心原则不是罗列技术栈,而是写清楚"你判断了什么问题、做了什么取舍、产生了什么结果"。可以直接参考格式往自己的简历上套。
面试 QA 手册(docs/interview_qa.md)
基于这个项目可能被追问的高频面试题,分项目深挖、系统设计、技术原理、金融场景四个维度。每道题给的是回答框架而不是背诵答案——因为背答案没用,面试官换个角度问你就卡住了。
16 天开发日志(每个 day 分支的 summaries/)
每天做了什么、为什么这样设计、踩了什么坑、怎么解决的。不是流水账,是完整的技术决策记录。如果你想理解"一个系统是怎么从零长出来的",从 Day 1 的 summaries/day_1_summary.md 开始读。
技术栈一览
AI Agent 底座 | Skyvern + Playwright |
后端 | FastAPI + Python 3.11 + SQLAlchemy 2.0 |
数据库 | PostgreSQL 14 |
缓存 & 消息 | Redis 7(Pub/Sub + 缓存) |
对象存储 | MinIO |
前端 | React 18 + TypeScript + ECharts |
容器化 | Docker Compose + Nginx |
测试 | pytest + Vitest |
写在最后
我的bg不算出众,甚至可以说比较低,在座的各位想必都要比我优秀的多,但可能也会在春招里面临被拒和自我怀疑的困境,而陷入迷茫。
但与其花时间焦虑,不如把时间花在提升自己的道路上。
我深知这个项目尚不完美——Action 缓存还是内存实现,Skill 库只有 7 个,双 Agent 通信没有消息队列持久化——但它的每一行代码、每一个设计决策、每一 篇踩坑记录,都是在深思熟虑后写下的。面试的时候,它们可以帮你说清楚每个模块为什么存在、为什么这样设计、有什么不足和改进方向。我想,这或许可以为你带来一些其他教程和付费课给不了的底气。
项目完整开源,随意 fork 和参考。如果对你有帮助,希望能给个 Star。
祝各位春招顺利,大家都可以抵达梦想的远方。
