Portfolio · 眠月

项目作品集

AI Agent 工程 · 全栈开发。以下均为真实跑通的完整闭环实践;每张卡片为项目概览,点击可翻转查看技术细讲。

12项目与实践
6重点项目
2开源 PR 已合并
1商业赛获奖
700+Skill 治理规模

「我不把 pipeline 叫 Agent」—— 做 LLM 生产系统的工程闭环,也做 Agent 技能的评测与治理;并能源于 7 个维度说清一个场景为什么不该用 Agent。

01

生产系统 · Workflow

把 LLM 应用做成生产级系统:固定管线 + 计费安全 + 成本治理 + 评测驱动。这些是 workflow,不是 Agent —— 边界不含糊。

CharacterSeed 双 LLM 管线(40+ 端点)· VDB-News 16 路信源 8 步管道(≈¥0.0017/篇)· MPT 双 PR(付费 API 重试语义)

02

Agent 基础设施 · 评测与治理

给 Agent 的技能建评测、治理与沉淀体系:技能有没有用要能被测出来,多而不乱要能被管住,踩过的坑要能变成规则。

agent-skill-framework(evals + with/without 基准,2026-09 升级真 tool-use loop)· 700+ Skill 四层治理 · dev-lessons 99 条经验 + 14 条元原则

03

边界判断 · 何时不用 Agent

用 7 个维度定位一个项目在 workflow→agent 光谱上的位置,论证「为什么这里不需要 Agent」—— 这比硬说「这里有 Agent」更显研究深度。

Workflow vs Agent 7 维度框架 · Agent Washing 批判 · RAG vs Agent 选型框架(130 条技术评论提炼)

入围决赛 · 霆万商业AI挑战赛优秀奖 原创
重点项目

CharacterSeed · AI 数字生命

由人格、记忆、世界驱动的 AI NPC 平台:角色可成长、可主动发起对话,含 TTS 音色绑定、角色相册与故事视频等多媒体能力。

FastAPIReact18 + Vite + TSSQLAlchemySQLiteSSEEdge-TTSffmpeg
核心亮点
  • Director + Actor 双 LLM 管线:注意力聚焦与行为生成分离,原始 JSON 可展开调试,可解释可迭代。
  • Jiwen 积温引擎(Python 移植自开源 Node.js 库):五轴连续状态模型 + 数学漂移 + 阈值触发,驱动角色在用户离线时主动发起对话。
projects\01_luyan GitHub ↗
开源贡献 · PR#1291 / #1296 已合并 非原创 · 上游 harry0703/MoneyPrinterTurbo 12万+ star
重点项目

MoneyPrinterTurbo 双 PR 贡献

为 12万+ star 开源 AI 短视频生成器新增 OpenAI 兼容文生图素材源,打通本地 ComfyUI/SD 私有化链路,并闭环修复付费 API 失败边界。

PythonFastAPIOpenAI 兼容协议Pytest+1441/-32
核心亮点
  • 866 个全量测试通过 + 25 个素材源单测;PR 从 Issue 评论到合并约 8 小时,被维护者评价"方向好、测试充分"。
  • 付费 API 重试语义建模:按"能否确认服务端未创建任务"划分失败类型(ConnectTimeout 可重试 / 读超时不重试 / 429 退避),本地故障必须终止而非继续扣费。
projects\02_MoneyPrinterTurbo-PR PR #1291 ↗ PR #1296 ↗
原创 · 已开源 2026-09 升级:真 tool-use loop GitHub joker1point
重点项目

agent-skill-framework

AI Agent 技能管理框架:技能创建 / 加载 / 评估 / 迭代。执行器已从「技能文本静态注入 + 单次调用」升级为真 agentic loop —— 技能由模型经 load_skill 工具自主加载。

Pythonfunction callingOpenAI 兼容 APIJSON 驱动测试agent traceHTML 报告
核心亮点
  • 评估闭环:JSON 测试用例 → with/without 真实 LLM 基准对比 → 交互式 HTML 报告 → 自动优化技能描述再迭代。
  • 真 agentic loop:瞬时错误指数退避(对齐自研容错方法论)、只读工具重复调用短路(实测省 45% token)、轮数 / token / 墙钟三重上限 + 无工具收尾降级;16 个 mock 用例钉住协议与边界。
projects\03_agent-skill-framework GitHub ↗
原创(AI 辅助) 完整闭环 · 16 路信源 → 每日情报报告 私有仓库 · 可现场演示 / 代码讲解
重点项目

VDB-News · AI 情报管道与可进化报告平台

不止 RAG 问答:16 路信源自动采集 → 8 步分析管道(采集 / 去重 / 聚类 / 分析 / 审核 / 组装 / 分发)→ 每日主题日报。报告带「进化对比」(较上一份新增 / 延续)与信号分级,用户打分反哺后续排序;另配 React19 + TS 管理台做主题、报告、知识库与模型治理。

FastAPIRAG / 向量库报告引擎SSE 流式React19 + TS成本治理Docker / HTTPS
核心亮点
  • 产品判断:把定位从「新闻问答」改成「数据管道 + 可进化报告」——最终产出是一份报告而非一次对话,并用进化对比(新增 / 延续)让"每天自动更新"这件事被用户看见。
  • 个性化闭环:显式打分(👍 加权 / 👎 直接剔除)+ 隐式兴趣画像双路反哺检索与排序,报告越用越准,而不是一次性生成后就静止。
  • 工程与成本:修复充值幂等失效(幂等键与余额未同事务,资金正确性缺陷)、scrypt 密码 + 登录限流 + 上传鉴权等安全加固;embedding 成本压到 ≈ ¥0.0017/篇,单份报告 ≈ ¥0.014。
projects\05_vectordb-news
原创 · Android
Android

Attention Gallery · 智能相册

本地优先的智能相册 Android 应用:图像相似度自动聚类分组、堆叠卡片浏览,照片不上传云端。

Jetpack ComposeKotlinRoomCoilML Kit
核心亮点
  • 本地 ML Kit 相似度聚类:隐私友好,规避"相册上传云端"的敏感问题;Room + 协程批量加载设备照片流。
  • 现代 Android 全链路:权限申请 → 扫描聚类 → 分组浏览,可独立构建 APK 演示。
projects\06_photo-album-mvp
原创 · Android
Android

android-wechat-scroller

微信文章悬浮滚动条阅读器:用无障碍服务为长文章叠加可拖动的悬浮滚动条,快速定位阅读位置。

projects\07_android-wechat-scroller
原创 · 桌面工具 PyInstaller 打包 exe
小工具

html-file-manager · 本地素材文件管理器

管理本地 HTML 素材的桌面应用:按文件名 / 内容 / 标签搜索,分类树 + 标签体系 + 内置 HTTP 服务,打包为独立 exe。

Python标准库 http.server原生 JS 前端PyInstaller桌面 exe
核心亮点
  • 无框架实现:用 Python 标准库 http.server + 线程写本地服务,配原生前端完成交互,不引第三方框架。
  • PyInstaller 路径兼容:get_resource_path / get_data_dir 区分 exe 与源码运行环境,内置数据目录管理。
projects\10_html-file-manager
原创 体量小 · 补充展示
小工具

programmer-portfolio-website · 接单作品集网站

个人接单与作品展示站:多页面原生前端 + Express 后端处理表单提交与数据管理,可作个人主页直接演示。

Node.jsExpress原生 HTML/CSS/JS表单落盘
核心亮点
  • 轻量全栈闭环:无框架组织多页面站 + Express 表单 API + admin 后台管理页。
  • 边界意识:刻意不做过度工程——展示 → 表单提交 → 落盘 → 后台管理,核心链路控制在最小实现。
projects\11_programmer-portfolio-website
原创 · 后端 + 前端全栈 数字人链路已真实出片
重点项目

viral-content-analysis · AI 爆款内容分析与脚本生成

输入关键词或链接,自动完成采集 → 爆款结构分析 → IP 风格改写 → 0-100 评分排序 → 选题 → 可拍摄脚本 → 数字人成片,附零构建网页界面与异步任务系统。

PythonFastAPI · 29 端点Pydantic原生 ES Module SPAOpenAI 兼容 LLM异步任务队列ffmpegMCP / CLIpytest · 257
核心亮点
  • 提示词根因诊断:90 条内容分析后 9 个字段只有 1 个有值 → 定位到提示词未描述输出契约 → 修复后 Top1 从 57 提升到 71.3 分(S 级)、聚类从 85 类碎片化收敛到 16 类、成功率 100%。
  • 防 LLM 编造事实:脚本会把"老洋楼"写成"百年老洋楼" → 建立时间表述规则校验(1972年 = 九七二年 = 上世纪九十年代,统一归一化后比对),10 个用例零误报零漏报。
projects\12_viral-content-analysis
原创 · 已上线 AI Agent 工程实践 · 持续更新
重点项目

TechLog · AI Agent 工程博客

自建技术博客(Next.js 15 + React 19 + Tailwind 4 + Contentlayer):沉淀 Agent 工程化的一手踩坑复盘——架构演进、容错设计、上下文工程与成本治理。

Next.js 15React 19Tailwind 4ContentlayerMDX静态导出
核心亮点
  • 不是搬运转载:深度复盘均来自真实项目踩坑(Skill 压平架构后 Restatement 回归、付费 API 重试语义建模、22 篇文档蒸馏为可进化技能)。
  • 写作流工程化:Obsidian 同步 → MDX → Contentlayer 静态生成 → 一键构建部署,从写作到上线全链路自动化。
原创 · 已开源 Windows 系统工具 · 全栈
小工具

portwatch · 本机端口占用归因与历史留档

把「端口被哪个进程占了」从 netstat 的一行 IP:PORT,变成可追溯的归因链路(端口 → PID → 进程名 → exe → 启动命令行 → 工作目录 → 启动时间),并把每次占用的出现 / 消失留档成可回溯的历史。

PythonpsutilFastAPI + SSESQLite WALReact 19 + Vite + TSasyncio
核心亮点
  • 性能陷阱定位:Windows 上 psutil.Process.ppid() 每次调用都会重建一次全量进程快照(约 45ms),逐进程取父进程让整轮采集从毫秒级恶化到 4476ms、吃穿 2 秒轮询周期 → 改为一次快照 + 查表后降到 73ms(保留兜底分支,因用到私有 API)。
  • 分层纪律 + 故障隔离:事件表只由采集层的真实观测追加,心跳刷新 / 对账闭合只允许改区间表;历史层投递同步非阻塞、sqlite3 全部走 asyncio.to_thread,任何 DB 异常都不影响实时 SSE 主链路。
  • 心跳缺陷的定位与修复:稳定占用不产生 delta → last_seen_at 永远等于 first_seen_at → 进程被强杀后对账闭合时取到重启时刻,占用时长被虚增(停机多久就虚增多久);修复后长驻占用 3.4 小时内 last_seen_at 持续推进。
  • 诚实的时间语义:2 秒采样只能把变化定位在 (上一轮, 本轮] 内,字段名刻意用 first_seen_at / occurred_at,并在文档中显式声明采样不确定性。
  • 测试与 CI:16 个 pytest 用例钉住三层契约(快照结构与自端口归因 / diff 语义与保守保护判定 / 历史层三条设计纪律),GitHub Actions 四矩阵(ubuntu + windows × py3.11 / 3.13)回归。
frontend-works\portwatch GitHub ↗
原创 · 已开源 内置只读 Agent 助手 Windows 系统工具 · 全栈
小工具

flowwatch · 本机流量实时监控与进程归因

回答任务管理器回答不了的问题:哪个进程在跟谁通信、用了多少带宽、从什么时候开始的 —— 并把「说不清是谁的流量」如实分账(本机归因 / 属主受限 / 未归因 / 别人的流量 / 非 TCP-UDP),不混进总数里假装准确。

Pythonctypes + NpcapFastAPI + SSESQLite WALReact 19 + Vite + TSDNS / TLS SNIETW
核心亮点
  • 内置只读 Agent 助手(1576 行):12 个工具(8 取数 + 4 记忆原语)+ 6 轮工具循环 + 三层记忆(热状态 / 证据日志 / 长期事实);隐私物理隔离(聚合档不注入明细工具,对端 IP 进不了上下文);幻觉护栏三轮(强制纠正轮 → 系统补查 → 未核实标注),出自真实事故,修前 2/8 零工具调用 → 修后 0/8。
  • 未归因率 36.8% → 29.8%(最小窗口 1.1%):先给查表函数插桩拿未命中原因分布,再用 100ms 高频轮询做判别实验,把缺口拆成「短命 socket 漏拍 20.5% / 表里从未出现 79.5%」,再针对性修(promisc=0 + 本机地址白名单 + 端点/四元组两层记忆 + 自适应刷新)。
  • 两条路先被实测否掉才转向 ETW:表解析优化只有 1.6×(10Hz 要吃单核 36%)不值得;端口级推断在 CDN 场景会混。ETW 事件 ID 查官方清单才发现记忆里的 10/11 是错的(实际 12/28)。
  • 系统层三条纪律:结构体不手算偏移(ctypes 按文档顺序定义 + 导入断言尺寸 48/120/80/112)、fail-closed(本机地址校验连续失败就停用,绝不误归因)、拿不到权限就降级(非提权 state=denied,主链路照常)。
  • 历史层:连续量按时间桶聚合(每分钟每进程一行 + 域名桶 + 事件三关:出现要够格 / 尖峰要有基线 / 冷启动静默);一次自锁事故换来「写库独立线程 + 有界队列、读接口走线程池」的故障隔离。
  • 隐私与口径都写进设计:promisc=0、不落包体、只统计元数据、只监听 127.0.0.1;域名只读明文元数据(DNS 应答 + TLS SNI);未归因率同时给本窗口与近 60 窗滚动两个口径并附样本量。
frontend-works\flowwatch GitHub ↗ B站·演示片 ↗
原创 · 已开源 后台内存 5–8 MB(实测) Windows 桌面工具 · 单文件交付
重点项目

ExeTrace · 应用历史定位器

解决「AI 做出的软件,关掉就再也找不到」:后台记录打开过的每一个应用,随时一键找回;也能对任意 exe / 软件文件夹一键钉到桌面。

PythonTkinterctypes / Win32注册表 + ToolHelpSQLitePyInstallerRust / egui
核心亮点
  • 双轨历史:注册表冷启动回填(FeatureUsage/MuiCache)+ 运行期实时监控 —— 首次启动就有历史,不用等下一次打开。
  • 记录判据收紧(穷举验证):从「任意可见窗口」改为「前台窗口 or explorer 父进程」—— 排除输入法 / 崩溃报告器这类弹窗噪音。
  • 后台内存 18–22 MB → 5–8 MB(隐藏时 UI 泵降频 + EmptyWorkingSet;同口径对照 QuickClipboard 13.1 / OneDrive 15.6);稳态 CPU 1.89% 单核(ToolHelp 替换 psutil,依赖整体移除)。
  • 一次「未响应」事故换来的 UI 纪律:批量 Tk 操作分片时间预算(图标 0.4s/轮、列表 0.35s/轮),扫描期跳过全量重建;复现脚本留在 tools/probe_*.py。
  • 任意程序一键钉(v3.1 并入原 DeskPin 能力):选中历史即钉;也能对任意 exe / 软件文件夹钉 —— 文件夹自动识别主程序(同名 exe 优先 → 跳过 setup/unins/helper 噪音 → 浅层优先),多候选下拉切换;纯 ctypes COM(IShellLinkW)零依赖,创建后读回校验、同名自动编号绝不覆盖。
  • Rust 版体积 20.5 → 6.78 MB;内存目标未达成也如实写(对照出 eframe 空壳基线 115.6 MB,不把基线说成应用开销)。
frontend-works\exetrace GitHub ↗ B站·介绍 ↗ B站·实操 ↗
原创 · 已开源 确定性预筛 + Agent 取证 产品线第三个:端口 → 流量 → 异常守护
重点项目

patrol · 本机流量巡检(异常守护)

流量监控工具回答「发生了什么」,patrol 回答「这件事值不值得你看一眼,以及为什么」—— 先把噪音筛掉(确定性预筛),再让 Agent 对可疑信号做多步取证。

Pythonflowwatch 数据契约(只读)Agent 取证Windows 计划任务
核心亮点
  • 两段式架构,职责不越界:预筛层确定性(无模型参与、可回放复算);取证层才引入 Agent,且只在预筛出信号后触发 —— 全量数据不进模型上下文。
  • 预筛噪音控制有实测口径:0.9 条/天 —— 保证「每天的告警量是人能看完的」。
  • 一次重大实测驱动的设计:某加速器驱动级代收全机流量,按常规口径看「一切正常」→ 三次对照实验实锤,由此催生连接视角信号(不比字节数、比连接行为),补上「代收后依然异常」的盲区。
  • 每个数字都有复现手段(--replay 168 回放一周 / --test-alert 触发真实告警链路);未做的能力(CI / ETW 关联 / 阈值定标)也写在 README。
frontend-works\patrol GitHub ↗
原创 · 已开源 实测 1.97× (同字节数对照) 单文件 28 KB · 零依赖
小工具

gh-fast-download · GitHub 大文件多线程下载器

GitHub 大文件单连接常被限速到几十 KB/s —— 28 KB 单文件脚本把文件切 N 块、多线程并发;本机实测 4 MiB:74.8s → 38.0s(1.97x),产物 sha256 完全一致。

Pythonurllib + ThreadPoolRange 分片断点续传GitHub Actions
核心亮点
  • 实测方法学是核心:--limit-mb 让两种方式传输完全相同的字节数再比(截断内容逐字节一致,回归测试钉住);「样本 ≥ 4×分片」固化为函数 + 测试 —— 分片只切出 1 片时并发没发生,会得出假 0.9x(踩坑三次)。
  • 推翻自己:同一素材两次实测 0.90x → 2.06x —— 「两个数据点不足以支撑因果结论」,据此把「CDN 聚合限速」的误判写进了项目文档。
  • --preflight 预检模式:把「今天这条链路能不能演出效果」从运气变成流程(给出结论与可复制命令)。
  • 安全审查修掉真实缺陷:调用 API 时曾无条件关 TLS 校验且同时发送 token(凭据泄露风险)→ 现在默认强制校验 + 危险组合主动告警;53 个离线测试 + CI 6 矩阵。
  • 诚实条款写进产品:不承诺固定倍数 —— 单连接没被限速时它会如实说「此刻帮不上忙」。配套宣传视频 BV1jxpc69Ekk(逐帧渲染 + 同屏赛跑对比 + TTS 旁白,全链路可复跑)。
当前筛选条件下没有项目。