精选项目

从想法到上线的工程实践

每个项目都记录了真实的问题、技术取舍与个人贡献——我更在意深度,而不是数量。

01 — AI 应用 · 全栈

StarPath Navigator(点亮下一个星星)

2026.07 · 核心开发者

面向准大学生到毕业 1 年内学生的 AI 职业规划工具:先用「星际探索」隐喻推荐职业方向,再生成可逐节点查看的树状学习路线,最后输出可导出 PDF 的规划报告,全程在单页内 5 步完成。

HTML5CSS3原生 JavaScriptSVGPython FlaskDeepSeek API知乎站内搜索marked.jshtml2canvasjsPDF
duasweb.xyz/nextstar/ 打开

关键技术挑战

  • 职业星图可视化:以用户为中心恒星、职业为行星,行星大小表示兴趣适配度、距离表示实现难度
  • 纯 DOM 递归布局算法实现树状学习路线图,支持 20%–500% 缩放与拖拽平移
  • 「知友真实感受」:在用户点开职业行星的时刻调用后端接口检索知乎站内真实从业分享,并蒸馏出正面 / 中性 / 提醒三类关键词,原始帖子可展开对照

个人贡献

  • Flask 提供职业推荐、学习路线、规划报告、知友真实感受等接口,接入 DeepSeek 完成推荐与报告推演
  • 学习路线由四阶段流水线生成:能力地图骨架 → 分批并行展开技能单元 → 组装并硬校验 → LLM 质量终审
  • 提示词工程约束严格 JSON / Markdown 输出;API 超时或解析失败时降级为默认推荐与路线
  • 前端零框架零构建(原生 JS + SVG,CDN 引入 marked / html2canvas / jsPDF),后端 Gunicorn + Nginx 部署上线
5 步
单页完整交互闭环
30 类
专业大类覆盖
20%–500%
学习路线图缩放
02 — Java 后端 · 全栈

Tlias 员工信息管理系统

2026.07–2026.08 · 独立完成

基于 Spring Boot + MyBatis 的企业级员工 / 部门信息管理系统,采用前后端分离架构,完整走通「需求分析 → API 接口设计 → 前后端并行开发 → 单独自测 → 联调测试」全流程。

Spring BootMyBatisMySQLVueElement PlusJWT

本项目为本地部署的 Java 后端工程(Spring Boot + MySQL + Vue),暂无公网演示环境,因此未提供内嵌预览。

关键技术挑战

  • 登录认证体系:JWT Token 鉴权 + 拦截器(Interceptor / Filter)统一登录校验,未登录拦截返回 401
  • 会话跟踪方案对比与实现(Cookie / Session / Token),理解各自适用场景与取舍
  • 文件上传与阿里云 OSS 对象存储集成,处理大文件与访问权限

个人贡献

  • 员工 / 部门 CRUD、分页查询(PageHelper)、条件模糊查询
  • 统一返回封装(Result:code / msg / data)、全局异常处理
  • 基于 AOP 实现操作日志切面,解耦业务与横切关注点
  • 前后端并行开发后独立自测并完成联调,保证接口契约一致
前后端分离
企业级分层架构
JWT + AOP
鉴权与日志切面
OSS
对象存储集成
03 — AI / LLM

微信风格 AI 对话模型(QLoRA 微调)

独立完成 · 大模型微调与落地

基于 QLoRA / PEFT 对开源大模型进行低资源微调,学习特定语气与对话风格,并封装为可调用的推理服务,完成从数据处理到应用落地的完整链路。

PythonPyTorchTransformersQLoRA / PEFTFlaskNLP

本项目的微调与推理服务运行在本地 GPU 环境,无公网演示站点,因此未提供内嵌预览。

关键技术挑战

  • 在有限显存下用 QLoRA 4-bit 量化 + LoRA 适配器完成微调,平衡效果与资源成本
  • NLP 数据清洗与格式化,构建符合指令微调格式的对话训练样本
  • 推理阶段合并适配器权重并封装服务,保证响应稳定

个人贡献

  • 独立完成数据处理、训练脚本编写、超参调优与效果评估
  • 使用 Flask 封装推理接口,对外提供统一的对话调用能力
  • 沉淀了大模型微调与 LLM 应用落地的完整工程经验
QLoRA
低资源 4-bit 微调
0→1
数据到服务全链路
04 — 浏览器扩展 · 前端工程

B站视频画面深色滤镜 + 倍速控制扩展

独立完成 · Chrome / Edge 扩展(Manifest V3)

一款 Chrome / Edge 浏览器扩展:为 B 站视频画面叠加反色深色滤镜,缓解白底课件与录播的刺眼白光;同时提供纯键盘的视频倍速控制,突破播放器自带档位限制,覆盖 0.125×–16×,并配有仿播放器风格的倍速悬浮提示。

Manifest V3原生 JavaScriptCSS3Chrome Extension APIMutationObserver

浏览器扩展需安装到浏览器中运行,没有独立网页,演示请见下方视频与 GitHub 仓库。

关键技术挑战

  • 绕过播放器对倍速的重置:监听每个 video 的 ratechange 事件,把目标速率"钉"回,切集 / 换清晰度后仍保持
  • 直接读写 video.playbackRate,突破播放器菜单的固定档位,实现 0.125×–16× 连续可调
  • 用 MutationObserver 兜住动态加载与切集的 video,新出现的视频自动应用滤镜与速率
  • 倍速悬浮提示(OSD)挂载到播放器容器,并通过 fullscreenElement 适配全屏场景

个人贡献

  • 从 Tampermonkey 油猴脚本演进为工程化扩展:GM_setValue → chrome.storage.local,切换实时生效无需刷新
  • 设计 - / = / \ 三个键的倍速增减、归位与回退规则,按住 → 临时 2× 加速、松开恢复
  • 快捷键采用捕获阶段监听,并在输入框内自动让路,避免影响弹幕与搜索框打字
  • 构建带开关的弹窗界面与 16 / 48 / 128 三档图标,README 含效果对照图,已开源至 GitHub
0.125–16×
连续可调倍速
Manifest V3
符合最新扩展规范
MIT
已开源
05 — AI 应用 · 全栈

PromptDeck(提示词牌桌)

独立完成 · 前端 + Node 服务端

用扑克牌交互逐步澄清需求,最终产出一份可直接使用的提示词。交付形态是「单页前端 + 极简 Node 代理」:客户端为原生 ES Module,服务端只用 Node 22.5+ 内置模块,零框架、零构建、零 npm 依赖。

原生 HTML / CSS / ES ModuleNode.jsnode:sqliteDeepSeek APIGSAP零构建
duasweb.xyz/promptdeck/ 打开

关键技术挑战

  • 把模糊需求拆成一张张「选项牌」:模型每批交回 7–15 道题,候选池剩余 ≤ 5 时后台预取下一批,用户全程无感知
  • 端到端状态机 + GSAP 时间轴驱动开盒、飞牌与成文表演;模型路径与本地题库降级路径行为保持一致
  • 存储用 Node 内置 node:sqlite(WAL):手机号为主键、每人上限 20 条、旧 JSON 自动迁移、库损坏可自愈

个人贡献

  • 客户端零依赖(原生 ES Module),服务端仅用 node:http / fs / sqlite,不引入 express 等第三方包
  • 提示词工程约束成品结构:分「完整 / 精简」两档骨架,固定段逐字保留、占位符原样透传,代码侧再做一次结构校验
  • 鲁棒性设计:模型超时 / 越界 / 解析失败一律降级到本地题库与模板成文;单条坏题只剔一条,坏题超 30% 才整组降级
  • API Key 只存服务端 .env,前端不落任何密钥;已部署上线并跑通端到端验收
0 依赖
前端零框架 · 服务端零 npm
7–15 题/批
动态出题 + 候选池预取
已上线
duasweb.xyz/promptdeck
06 — 自动化工具 · Python

签到管家 CheckinButler

独立完成 · 多平台自动签到 + 消息推送

三个平台(WorkBuddy / Trae / Qoder)的多账号每日自动签到工具:总编排器串起「签到 → 日报聚合 → 企业微信推送」全链路,日报里带各账号剩余积分与最近到期提醒;纯 Python 标准库实现,任意 Windows 电脑拷过去跟着 CLI 向导就能复刻。

Python 标准库多账号凭证管理企业微信 WebhookPushPlusWindows 计划任务CLI 交互Git

本项目无公网演示环境(跑在本地 Windows 计划任务里),代码已完整开源,见下方 GitHub 仓库。

关键技术挑战

  • 三平台凭证体系各不相同:WorkBuddy accessToken 自动续期、Trae 客户端凭证解密提取、Qoder token 到期前 72 小时自动刷新,统一成可扩展的账号接入层
  • 当日完成闸门用「账号集合」比对而非仅看日期:全部账号到达终态才落标记,中途新增账号自动识别照常执行,既不重复请求接口也不漏签
  • 凭证安全与分发链路:打包自动排除凭证 / 推送密钥 / 日志并自检兜底,bat 脚本强制 ASCII-only 规避中文编码解析错位

个人贡献

  • 总编排器实现闸门判断、三平台签到、日报聚合(含积分 / 到期明细)与推送决策,支持 --force 强制重跑
  • CLI 向导 + 数字菜单覆盖环境自检、绑定推送、添加账号、定时任务、试跑验证全流程,按 9 随时返回上级
  • 修复真实踩坑:GBK 编码静默丢号、误删其他账号凭证、bat 中文闪退等,沉淀五篇教程与 doctor.py 自检工具
3 平台 5 账号
每天 00:05 无人值守
0 依赖
纯 Python 标准库
5 步向导
新机 10 分钟上线
07 — 前端工程 · 天文可视化

星临 · Starlin

独立完成 · 真实星表渲染 + 天文引擎

古人把漫天群星划分成星官、星座与二十八宿,为的是在无声流动的时间里刻下可供辨认的记号——星空,是人类最早的计时器。星临延续的是同一套思路:用星标定时间。锁定出生的精确时刻与经纬度,它还原那一刻你头顶的真实星象,也给出同一瞬间太阳系八大行星的排布。它不占卜、不算命运、不附会吉凶,只是把你降临宇宙的那一瞬,从时间的长河里切出来。

WebAssemblystellarium-web-engineVueAT-HYG 真实星表OpenNGCastronomy-engine 星历AGPL-3.0

它想做的事

  • 时间本身没有刻度,是人类抬头把群星分门别类,才有了辨认时节的坐标;而历法是人为的刻度——同一件事,换一套纪年日期就会改变,日历上的生日终究只是标签,不是宇宙自带的节点
  • 星临想做的,是用星标定时间:输入出生的时刻与地点,还原你出生地头顶的真实星空——中国的三垣二十八宿落在何处,西方的八十八星座各是哪几颗星在值守
  • 同一瞬间,太阳系也只有一种排布:水星跑到哪里、金星在日东还是日西、木星挨着谁——恒星随岁差缓慢偏移,行星则几乎不会让同一图案重现,这组排列在人的一生里不会再来一次
  • 两轴相交,才是真正的诞生原点——不是日历上的某一天,而是宇宙在这一刻留下的、独一无二的一帧

它是怎么做到的

  • 星位不是手写的数组,而是来自 AT-HYG 真实星表:32.9 万颗恒星,逐颗带位置、星等与色指数;深空天体取自 OpenNGC,4,983 个星系、星团与星云各按真实坐标落位
  • 渲染核心是 Stellarium 官方开源引擎 stellarium-web-engine(C++ 编译为 WebAssembly),前端以 Vue 组织交互;两档 LOD——亮星常驻,暗星只在视场足够小时点亮,一帧都不浪费
  • 太阳、月球与八大行星的位置由 astronomy-engine 星历推算,月相与月球视直径都是真算的:相位来自被照亮比例,视直径由真实半径与距离几何得出
  • 两双看天的眼睛:西方八十八星座可按需叠上古典插画,华夏三垣二十八宿逐宿配有古画与传说;看完了,一键把这一夜的星空导出成图带走
  • 引擎为 AGPL-3.0,站点同时提供完整的对应源码包下载
329,252
颗真实星表恒星
4,983
个深空天体
88 + 28
西方星座 + 中国星官
更多实践

Java 后端基础巩固项目

SSMP 图书管理系统

Spring Boot + SpringMVC + MyBatis-Plus + MySQL + Vue + ElementUI,实现列表、增删改、分页、条件查询与统一异常处理。

Brand 品牌管理系统(JDBC 版)

基于 JDBC + Druid 连接池 + PreparedStatement 完成完整 CRUD,规范 ORM 封装与资源释放。

养老金管理系统(JavaSE 控制台)

双层哈希表存储设计、缴费记录增删查、养老金年均 / 月均自动计算,具备输入校验与较强鲁棒性。

JavaSE 综合练习

数字加密、双色球、文字格斗、学生管理、图片拼图、斗地主排序、线程池 BS 架构简易服务端等。

想了解更多技术细节?

欢迎查看 GitHub 或直接与我联系。