作品集 / Works

系统设计与研究

以下是我独立设计并交付的工程项目与研究成果,重点展示系统架构思路与关键技术决策。

01.

工时管理平台 AI 智能助手

LangGraphFastAPIMilvusvLLMBM25RedisMCPPrometheusDocker

独立从 0→1 设计并交付的企业级 AI Agent 系统,面向 500+ 员工的工时管理系统集成上线。 覆盖需求分析、库表设计、AI 服务开发到 Docker 生产部署全流程。

斯维尔科技 · 2025.07 — 至今

系统演示

工时管理系统 AI 助手实际使用截图
工时管理平台主界面 + AI 助手浮窗(用户输入「帮我填工时」,AI 引导式追问项目与时长)

核心指标

500+服务员工数工时管理系统集成上线
50RAG 评测集覆盖工时/请假/福利等
87%意图分类精度2000 条测试集
P95 <3s查询响应时间端到端 SSE 流式响应

Agent 分层架构

L1A-RAG 问答
MultiQuery 改写 · 并行检索
BM25 + Milvus 混合
CrossEncoder 精排 Top-5
来源引用标注
✓ 已完成
L2Tool Agent
Function Calling 单次完成意图+参数
12 个业务工具
六级权限体系
双层记忆系统
✓ 已完成
L3DeepSearch
PlannerAgent 并行多工具
SQL Agent 自然语言转 SQL
三层安全校验
LLM 综合汇总
✓ 已完成

关键架构决策:将「意图分类→参数提取」两步级联 LLM 调用重构为单次 Function Calling, 消除分类边界处的误差传播;规则路由降级为 LLM 不可用时的 fallback。

系统部署架构

用户浏览器
HTTPS
↕ SSE 流式响应
SpringBoot 后端 :8080
JWT 鉴权 · AIController · WebFlux SSE 代理
↕ HTTP SSE(内网)
FastAPI AI Service :8000
llm_with_tools
Function Calling 主节点
qwen3-8b (vLLM)
意图+参数 单次完成
execute_tool
权限校验 → 工具执行
execute_rag
混合检索 + Reranker
plan_and_execute
PlannerAgent 并行多工具
execute_llm / clarify
RAG 管道
Milvus 60% + BM25 40%
jieba · MultiQuery
CrossEncoder Reranker
SQL Agent
自然语言 → SQL
三层安全校验
动态表选择
记忆系统
Redis 短期会话
BM25 长期偏好
Prompt YAML 热重载
Redis
短期会话 + 长期偏好
Milvus + etcd + minio
知识库向量存储
MySQL
业务表 + 审计日志
vLLM GPU 服务器
qwen3-8b + bge-large-zh

监控看板设计

Prometheus + Grafana · 10 panels
Grafana 监控看板示意图

示意图(matplotlib 渲染)。生成脚本开源:grafana-mock-generator

RAG 检索管道

MultiQuery 改写
LLM 将问题改写为 3 种不同表述,并行检索,缓解语义漂移
EnsembleRetriever
Milvus 向量检索(60%)+ BM25 关键词检索(40%),jieba 中文分词
CrossEncoder Reranker
BAAI/bge-reranker-base 对候选文档重新打分,取 Top-5 精排
LLM 生成回答
ChatPromptTemplate (rag.yaml) + qwen3-8b 流式生成,附带来源标注

SQL Agent 安全设计

硬规则层 · 25%
语句白名单 + 黑名单
sqlparse AST 只允许 SELECT;关键字黑名单拦截 DROP / TRUNCATE / EXEC;列黑名单阻止敏感字段导出。明确恶意请求在此终止。
LLM 辅助层 · 75%
语义改写 + 意图澄清
模糊恶意请求(绕过黑名单的变体)由 LLM 语义理解判断并改写为安全 SQL,或拒绝并返回说明。
权限注入层
用户级 WHERE 约束
根据用户角色(employee / manager / admin …)自动在 WHERE 子句注入 user_id / dept_id 约束,员工无法查看越权数据。

工具参数智能解析层

// 核心问题
用户输入口语化(「上周张三的项目」),LLM 生成的工具参数不稳定且可能幻觉; 同时需要将自然语言映射到精确的业务 ID(用户 ID、项目 ID)才能调用工具。
历史众数层命中率高
以 (user, project) 为 key,对历史工具调用记录时间加权取众数,直接映射口语化表达("张三那个项目")到业务 ID
cachetools.TTLCache 缓存解析结果,减少重复计算
LLM 白名单兜底层防幻觉
历史记录未命中时,将候选业务 ID 列表传给 LLM,要求从白名单中选择最匹配项,而非让 LLM 自由生成
避免 LLM 生成不存在的 ID,将"创意发散"约束为"选择题"
解析结果缓存TTL 缓存
cachetools.TTLCache 对解析结果按 (user, raw_input) 缓存,TTL 内相同口语化输入直接返回,不触发 LLM
解决 LLM 输出参数不稳定问题:同一表达每次调用 LLM 结果可能不同

Claude Code MCP 接入

mcp__workhour · 自然语言 → 工时填报
Claude Code 通过 MCP 工具填报工时演示
用户说「根据 git,填报我昨天的工时 7.5h」→ Claude Code 调用 mcp__workhour__save_workhour, 先 dry_run 预览,确认后再写入;整个填报流程无需打开系统页面
02.

多模态城市内涝数据挖掘与制图

BERTCLIPzero-shotBi-LSTM-CRFNER多模态

硕士研究课题。设计多模态洪涝信息检索与严重程度识别框架,融合社交媒体文本与图像, 自动提取洪涝位置信息用于洪水范围精确制图。

中国地质大学(武汉)· 2024.03 — 2025.03 · 论文在投 SCI
96%
洪涝分类 F1
较基线 +5%
79%
程度分类 F1
较基线 +8%
87%
位置 NER F1
Bi-LSTM-CRF
1000+
微博实验样本
人工标注 · 三级程度

技术路线

多模态洪涝信息识别与定位完整技术路线

左侧多模态识别(CLIP + BERT 融合分类);右侧位置提取(实体标注 + POI → BiLSTM-CRF)。

数据样例(人工标注)

微博样例 - 严重
严重
齐腰深积水 / 救援场景
微博样例 - 中等
中等
车轮以上积水 / 出行受阻
微博样例 - 轻微
轻微
路面积水 / 通行困难

微博图像三级严重程度标注,黄色虚线框为水深判定参考区域。

制图结果

郑州市辖区洪涝水深分布制图
郑州市辖区 SAR + 社交媒体 + DEM 综合插值结果(水深 0–200 cm)
03.

Claude Mesh — 多 Agent 通讯中枢

MCP ServerPythonFastAPINext.jsSQLiteWebSocketClaude Code

为 Claude Code 多窗口协作场景设计的轻量级消息总线。通过 22 个 MCP 工具, 让多个 Claude Code 实例像真实团队成员一样协同工作:互发消息、领取任务、申请审批、 触发定时任务。单文件 SQLite 存储,支持打包为独立 .exe 开箱即用。

个人开源项目 · 2025
github.com/lh229470989/claude-mesh →

实际运行演示

Claude Mesh Web Dashboard 实时看板
Web Dashboard:左侧 Team Members 在线状态 + 中间消息时间线(任务状态变更、审批事件)+ 右侧任务看板(todo / in_progress / done)
Claude Mesh MCP 工具端到端消息传递演示
Claude Code 调用 claude-mesh MCP 工具向另一个 Agent (bob) 发送消息; 消息异步落库,bob 上线后 check_inbox 即可读取

核心数据

22MCP 工具覆盖消息/任务/审批/调度
9预设角色architect · backend · tester …
~4.6kPython 源码行不含测试与虚拟环境
0外部依赖SQLite 单文件,无需 Redis

系统架构

Claude Code #1
architect
Claude Code #2
backend
Claude Code #3
tester
↕ MCP Protocol (stdio / HTTP)
claude-mesh MCP Server
22 MCP Tools · Python 3.10+ · FastAPI :51734
MessageBroker
消息路由
异步收件箱
TaskManager
状态机
审批流
AgentRegistry
注册 / 心跳
在线状态
ScheduleManager
定时任务
技能包
↓ aiosqlite
SQLite (WAL)
消息 · 任务 · Agent 状态
定时任务 · 审批记录
Web Dashboard
Next.js + Tailwind
WebSocket 实时推送

MCP 工具分组

消息通信
send_messagecheck_inboxwait_for_messagereplyack_message
跨 Claude Code 窗口异步消息传递,支持 6 种消息类型
📋任务管理
create_taskupdate_tasklist_tasks
todo → in_progress → done 状态机,自动生成状态变更通知
审批流程
request_approvaldecide_approvallist_approvals
基于角色的审批网关,拒绝时自动将任务置为 blocked
调度与技能
create_schedulelist_schedulesget_skilllist_skills
YAML 定义可复用技能包(code_review / root_cause / summarize…)

关键设计决策

异步收件箱模型解耦在线状态
消息发送方无需等待接收方在线;接收方 check_inbox 或 wait_for_message 均可消费,天然适配 Claude Code 窗口随时启停的使用场景。
SQLite 单文件存储零运维
放弃 Redis/Postgres,用 aiosqlite 异步操作本地数据库。多 Agent 写入通过 WAL 模式并发安全,打包为单 exe 后用户双击即用,无需安装额外服务。
YAML 角色与技能热定义可扩展
9 个预设角色和技能包以 YAML 描述,用户无需改代码即可添加自定义角色。技能包本质是 prompt 片段,Agent 调用 get_skill 后将内容注入上下文。