Demo

一些做过的事 · ← Lab

StudyVerify — 验证驱动的 AI 编程学习伴侣

个人项目 2026-04 到 2026-05

项目描述

StudyVerify 是一个面向编程入门学生的 AI 辅导系统,集 自动解题、代码沙箱验证、渐进式提示 于一体。

项目设计动机是:ChatGPT 类工具直接给答案可能削弱学生的独立思考过程。因此,本项目通过 Solver / Verifier / Hint 三 Agent 架构,结合 3 层 anti-leak 防御机制,降低直接泄题风险,在学生独立思考与精准引导之间取得平衡。

技术栈

  • 后端: Python 3.11、FastAPI、SQLAlchemy 2.0 async、Pydantic、Alembic
  • 数据库与缓存: PostgreSQL、pgvector、Redis
  • AI / LLM: DeepSeek / OpenAI 多 LLM 网关、OpenAI 兼容 SDK
  • 代码验证与沙箱: Docker socket 兄弟容器沙箱、pytest
  • 前端: Next.js 14、TypeScript、Tailwind CSS、Monaco Editor、Playwright
  • 部署与基础设施: Oracle ARM Cloud、Nginx、Vercel CDN

项目职责

1. 多 Agent 协作架构

设计并实现 Solver、Verifier、Hint 三 Agent 协作流程:

  • Solver:

- 使用 3 阶段 LLM 流水线生成解题方案

- 结合沙箱自验证机制,提高答案可靠性

  • Verifier:

- 使用 Docker 沙箱执行学生提交代码

- 结合 LLM 生成诊断反馈,帮助学生理解错误原因

  • Hint:

- 基于学生失败上下文生成渐进式提示

- 使用 pgvector RAG 检索过往失败案例,增强提示生成质量

2. 评测驱动迭代与 3 层 anti-leak 防御

自建评测集用于系统迭代与防泄题能力测试:

  • 覆盖 100 道题目
  • 包含 300 个 bug variants
  • 覆盖 23 个编程主题

实现 3 层 anti-leak 防御机制:

  1. Pydantic schema 冗余校验
  2. 服务层重试机制
  3. 73 词 benchmark 短语过滤

完成 Step 9 - Step 12 共 4 轮迭代,并诚实记录实验结果:

  • Step 11.5 + Step 12 的假设被数据证伪后进行 revert
  • 实验发现:更多禁用词并不一定提升 anti-leak 效果
  • 目标主题 anti-leak 从 62.5% 降至 48.5%

3. 生产级 Docker 沙箱加固

实现 Docker 沙箱的生产级安全隔离配置,共包含 14 项加固措施:

  • network=none
  • cap_drop=ALL
  • read_only
  • user=nobody
  • tmpfs
  • mem_limit
  • pids_limit
  • nano_cpus
  • shm_size
  • security_opt
  • ipc_mode
  • ulimits
  • init
  • labels

通过单元测试断言上述配置全部生效。

在 Mac 本地环境到 Linux 生产部署过程中,发现并修复 6 个生产专属 bug:

  1. Docker socket GID 问题
  2. 镜像分发问题
  3. 文件权限问题
  4. async SQLAlchemy lazy-load 问题
  5. 学生 print() 污染沙箱 stdout 问题
  6. Nginx LLM 端点超时问题

4. 量化指标与测试结果

项目通过评测驱动方式持续优化,核心指标如下:

  • Verifier 准确率从 84.2% 提升至 100%
  • Step 9 评测发现并修复 Solver entry_function 漂移 bug
  • Step 11 anti-leak baseline 达到 60.1% combined
  • LLM judge 在四种配置下稳定在 约 65%

- 被识别为架构性上限

- 已记录进 README

  • 后端测试:

- 306 个非 integration 单元测试

- 100 个 integration 测试

  • 前端测试:

- 1 个 Playwright smoke test

  • 端到端评测成功率达到 99.4%

SentryGate:隐私优先的 AgentOps 安全网关原型

核心架构开发 2026-04 到 2026-05
  • 项目描述: 面向 Codex / MCP Coding Agent 工具调用场景,构建本地 MCP 安全网关原型,对经过 SentryGate MCP Server 路由的 read_filewrite_filelist_directoryrun_command 等工具调用进行风险评分、隐私脱敏、审批拦截与审计观测;已完成 Codex Desktop MCP 接入,并验证普通文件读取脱敏、.env 读取阻断、写文件审批流等端到端场景。
  • 技术栈: Python、FastAPI、MCP / FastMCP、Pydantic、Streamlit、Pytest、Ruff、Mypy、LM Studio、JSONL、Codex Desktop
  • 项目职责: 主要负责 SentryGate 的架构设计、MCP 工具封装、安全策略、隐私脱敏、审批流与 AgentOps 可观测性 Dashboard 开发。

1. MCP 工具网关设计: 设计并实现 SafeToolService 作为核心执行边界,封装 sentry_read_filesentry_write_filesentry_list_directorysentry_run_command 等 MCP 工具,统一处理 workspace 边界校验、执行决策、隐私脱敏与审计记录。

2. 风险评分与安全策略: 实现基于规则的 RiskScorer,将 MCP-routed tool calls 判定为 allow / block / require_approval,对 .env、私钥文件、路径穿越和危险命令进行硬阻断,并默认将写文件和命令执行纳入人工审批流程。

3. 隐私脱敏与稳定 Tokenization: 实现 PrivacyMasker 脱敏引擎,覆盖 Email、API Key、GitHub Token、JWT、数据库 URL、PEM 私钥和 .env 风格密钥等常见敏感模式,通过稳定 token 化将敏感值替换为 [EMAIL_001][API_KEY_001] 等占位符,避免原始敏感内容进入 Agent 输出和审计日志。

4. Human-in-the-loop 审批流: 构建本地审批流程与 localhost-only Approval API,支持 Dashboard 中对 require_approval 请求进行 Approve / Reject;审批执行前会重新运行风险评分与 workspace 校验,且不允许人工审批覆盖硬阻断结果,确保审批只作用于原始被审查的同一请求。

5. AgentOps 可观测性 Dashboard: 设计 JSONL 审计日志与 Trace / Span 级别观测字段,记录 trace_idspan_idlatency_ms、风险分数、决策原因和脱敏命中情况;基于 Streamlit 构建只读 Dashboard,展示决策分布、风险分数、Top Risk Reasons、近期事件和待审批请求;完成自动化校验,pytest 166 passedruff / mypy 均通过。

IP Type Checker:IP 类型识别分析平台

个人项目
  • 项目描述:面向开发者的 IP 类型判断工具,核心目标不是单纯查询地理位置,而是判断 IP 更像住宅家宽、移动网络、校园/教育网、企业专线、机房云、CDN/代理或骨干批发网络。系统已支持网页查询、网站分流测试、出口 IP 汇总以及 curl ipinfo.005917.xyz 命令行 API,帮助用户快速判断当前出口 IP 是否接近真实民用网络。
  • 技术栈:FastAPI、Jinja2、原生 JavaScript/CSS、SQLite、GeoLite2、IP2Region、IPinfo、ip-api、DeepSeek API、scikit-learn、Cloudflare Turnstile、Nginx、systemd、GitHub。
  • 项目职责:主要负责全栈架构设计、核心分类逻辑、机器学习、AI 学习闭环和线上部署维护。

1. 设计 IP 类型分类引擎:基于 ASN、Prefix、运营商名称、RDNS、地理位置、风险信号等特征建立规则优先级体系,支持住宅家宽、移动网络、校园网、机房云、CDN/代理、骨干网等多类型判断,并输出置信度、原生判断和证据链,避免将机房/代理误判为真家宽。

2. 融合多源 IP 数据:接入 GeoLite2、IP2Region、IPinfo、ip-api 等数据源,用于补充国家、省市、运营商、ASN、移动网络、代理、托管等信息;针对中国 IP 使用 IP2Region 补强省市和运营商识别,针对海外 IP 使用 ASN/ISP/移动信号辅助分类。

3. 构建 AI 辅助学习闭环:引入 DeepSeek 作为低频长尾 ASN 的辅助判断来源,设计缓存优先、异步学习、预算限制、候选规则和黄金样本机制,使系统能够在不阻塞用户查询的情况下学习小众 ASN/IP 段,并逐步沉淀为可复用规则,降低后续查询成本。

4. 实现前端查询与网络测试工具:开发 IP 信息查询页、网站分流测试页、出口 IP 汇总、网站连通性测试和 API 文档页,支持中英切换、深浅色主题、移动端适配、点击出口 IP 直接查询类型等交互,提升普通用户排查代理分流和网络出口的效率。

5. 完善安全与稳定性机制:为公开查询、反馈和 API 接口加入限流、Cloudflare Turnstile、人机验证、可疑请求保护和 CLI 接口 15 次/分钟限制;通过 Nginx 区分浏览器访问和 curl 访问,实现网页体验和命令行 API 共存。

6. 测试与部署维护:编写单元测试、烟测脚本和真实 IP 样本评测流程,持续验证核心样例和危险误判;通过 GitHub 管理版本,使用 systemd + Nginx 部署到 VPS,完成生产环境更新、日志排查和问题修复。

CNY→MYR 汇率比较站

独立全栈开发 2026-04
  • 项目描述: 面向在马来西亚的中国留学生开发的实时汇率聚合工具,集中国银行、银联、Visa、Wise、Maybank 等 21 个换汇渠道的汇率于一页,旨在解决用户在多家银行 / 卡组织 / 国际汇款服务间反复查询、手动换算的低效痛点,支持自定义换汇金额、跨渠道排序、近 30 日 / 近7日趋势对比与 AI 一句话趋势摘要。
  • 技术栈: Python、FastAPI、SQLAlchemy 2 async、SQLite、Alembic、APScheduler、Next.js 14、TypeScript、Tailwind CSS、Recharts、httpx、curl_cffi、BeautifulSoup4、Firecrawl、Docker、Cloudflare 等
  • 项目职责: 独立负责前后端架构、数据采集与运营后台开发

1. 多源数据聚合架构设计: 设计可插拔的渠道接入框架,统一将所有来源的汇率归一化为同一计价方向,内置数值合理区间与跨渠道价差校验,任何源头改版或异常报价都会在入库前被拦截,显著降低脏数据流入前台的概率。

2. 可视化调度系统: 设计 DB 驱动的调度模块,支持每个渠道独立配置"固定间隔 / 每日定时 / 每周指定哪几天"三种刷新策略,后台改完即时生效、无需重启服务,既能覆盖银行类按工作日更新的源,也能避免周末空跑浪费配额。

3. 反爬场景突破: 针对多家银行的不同防护层(Cloudflare、Akamai、Incapsula)采取差异化方案,从模拟真实浏览器指纹、定位品牌官网背后的"干净接口"、到对仅个别 IP 层封锁的源采用受控的托管抓取作为单点例外,在全程不滥用代理的前提下实现 21 个渠道的稳定接入。

4. 正确性保障: 制定"汇率数值不交由 LLM 解析"的硬约束,所有数字均由确定性规则提取,避免买入/卖出、现汇/现钞、不同计价倍数等容易混淆的字段被悄悄读错;新渠道首发前必须从服务器实抓一次,该流程多次提前发现外部依赖兼容、页面结构、第三方默认缓存等隐性问题。

5. 运营后台与可观测性: 实现带登录鉴权的管理后台,可视化管控渠道状态、刷新调度、首页头条来源,以及与 OpenAI 兼容协议对接的 AI 摘要模块,管理员可自由切换大模型供应商,系统自动记录每次抓取与生成的运行日志与失败告警,便于长期维护。