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

工时管理 AI 助手
LangGraph · A-RAG · Function Calling

Claude Code MCP 接入
自然语言填报工时 · dry_run 预览

Claude Mesh
多 Agent 通讯中枢 · 22 MCP 工具

多模态内涝研究
CLIP · BERT · Bi-LSTM-CRF · 水深制图
01.
工时管理平台 AI 智能助手
LangGraphFastAPIMilvusvLLMBM25RedisMCPPrometheusDocker
独立从 0→1 设计并交付的企业级 AI Agent 系统,面向 500+ 员工的工时管理系统集成上线。 覆盖需求分析、库表设计、AI 服务开发到 Docker 生产部署全流程。
斯维尔科技 · 2025.07 — 至今
系统演示

核心指标
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
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 · 自然语言 → 工时填报
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)。
数据样例(人工标注)

严重
齐腰深积水 / 救援场景

中等
车轮以上积水 / 出行受阻

轻微
路面积水 / 通行困难
微博图像三级严重程度标注,黄色虚线框为水深判定参考区域。
制图结果

03.
Claude Mesh — 多 Agent 通讯中枢
MCP ServerPythonFastAPINext.jsSQLiteWebSocketClaude Code
为 Claude Code 多窗口协作场景设计的轻量级消息总线。通过 22 个 MCP 工具, 让多个 Claude Code 实例像真实团队成员一样协同工作:互发消息、领取任务、申请审批、 触发定时任务。单文件 SQLite 存储,支持打包为独立 .exe 开箱即用。
个人开源项目 · 2025
github.com/lh229470989/claude-mesh →实际运行演示


核心数据
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 后将内容注入上下文。
