Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

limecloud/flow-monitor

Repository files navigation

Flow Monitor

Version License Platform

Flow Monitor 是一款专业的 LLM API 流量监控和分析工具,参考 mitmproxy 的 Flow 模型设计,专为 AI 开发者和研究人员打造。

功能特性

🔍 实时监控

  • 捕获所有 LLM API 请求和响应
  • 支持 OpenAI、Claude、Gemini、Kiro 等主流 AI 服务
  • 实时显示请求状态、耗时、Token 使用量
  • 流式响应重建和展示

📊 流量分析

  • 详细的请求/响应内容查看
  • Token 使用统计和成本估算
  • 延迟分析和性能监控
  • 按模型、Provider、状态等多维度统计

🔬 调试工具

  • 请求/响应差异对比 (Diff View)
  • 高级过滤表达式(类似 mitmproxy 语法)
  • 快速过滤器和书签功能
  • 相关请求关联分析

🚦 流量拦截

  • 拦截并修改请求/响应
  • 支持断点调试模式
  • 自定义拦截规则
  • 超时自动放行

📤 导出功能

  • 多种格式导出:JSON、HAR、JSONL、Markdown、CSV
  • 代码生成:cURL、Python、TypeScript、Go、Rust
  • 批量导出和选择性导出
  • 敏感信息脱敏

📁 会话管理

  • 创建和管理调试会话
  • 会话内流量分组
  • 会话导出和分享
  • 自动会话检测

快速开始

作为 ProxyCast 插件使用

  1. 打开 ProxyCast 应用
  2. 进入「插件中心」或「工具箱」页面
  3. 在推荐插件中找到「Flow Monitor」
  4. 点击「一键安装」

独立使用(开发中)

# 克隆仓库
git clone https://github.com/aiclientproxy/flow-monitor.git
cd flow-monitor
# 安装依赖
npm install
# 开发模式运行
npm run tauri:dev
# 构建
npm run tauri:build

架构设计

Flow Monitor 采用分层架构设计:

┌─────────────────────────────────────────────────────────┐
│ Frontend (React) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ FlowList │ │ FlowDetail │ │ FilterPanel │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ DiffView │ │ Sessions │ │ Statistics │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────┤
│ API Layer (Tauri) │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Tauri Commands │ │
│ └─────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────┤
│ Backend (Rust) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Monitor │ │ Interceptor │ │ Exporter │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ MemoryStore │ │ FileStore │ │ QueryService │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────┘

核心模块

模块 说明
monitor 核心监控服务,管理 Flow 生命周期
models 数据模型定义,包括 LLMFlow、Request、Response 等
memory_store 内存存储,支持 LRU 驱逐策略
file_store 文件存储,支持 JSONL 格式和 SQLite 索引
query_service 查询服务,支持多维度过滤、排序、分页
filter_parser 高级过滤表达式解析器
interceptor 流量拦截器,支持请求/响应修改
exporter 导出服务,支持多种格式
code_exporter 代码生成器
session 会话管理
diff 差异对比

过滤表达式

Flow Monitor 支持类似 mitmproxy 的高级过滤表达式:

# 按模型过滤
model:gpt-4
# 按状态过滤
state:completed
state:error
# 按 Provider 过滤
provider:openai
provider:claude
# 按 Token 数量过滤
tokens:>1000
tokens:<500
# 按延迟过滤
latency:>2000 # 大于 2 秒
# 组合过滤
model:gpt-4 AND state:completed
provider:openai OR provider:claude
NOT state:error
# 内容搜索
content:"hello world"
request:"system prompt"
response:"error"

数据模型

LLMFlow

interface LLMFlow {
 id: string; // 唯一标识
 flow_type: FlowType; // 流类型
 state: FlowState; // 状态
 request: LLMRequest; // 请求
 response?: LLMResponse; // 响应
 error?: FlowError; // 错误信息
 metadata: FlowMetadata; // 元数据
 timestamps: FlowTimestamps; // 时间戳
 annotations: FlowAnnotations; // 注解
}

FlowState

enum FlowState {
 Pending, // 等待中
 Streaming, // 流式传输中
 Completed, // 已完成
 Error, // 错误
 Cancelled, // 已取消
 Intercepted, // 已拦截
}

配置

默认配置

{
 "default_settings": {
 "max_flows_in_memory": 1000,
 "retention_days": 7,
 "auto_cleanup": true,
 "notification_enabled": true,
 "intercept_enabled": false
 }
}

环境变量

变量 说明 默认值
FLOW_MONITOR_DATA_DIR 数据存储目录 ~/.flow-monitor
FLOW_MONITOR_MAX_MEMORY 最大内存 Flow 数量 1000
FLOW_MONITOR_RETENTION_DAYS 数据保留天数 7

API 参考

获取 Flow 列表

const flows = await flowMonitorApi.getFlows({
 filter: "state:completed",
 sort_by: "timestamp",
 sort_order: "desc",
 page: 1,
 page_size: 50,
});

获取 Flow 详情

const flow = await flowMonitorApi.getFlow(flowId);

导出 Flow

const result = await flowMonitorApi.exportFlows({
 flow_ids: ["flow-1", "flow-2"],
 format: "har",
 options: {
 include_request_body: true,
 include_response_body: true,
 redact_sensitive: true,
 },
});

生成代码

const code = await flowMonitorApi.generateCode(flowId, {
 format: "python",
 include_comments: true,
});

开发

技术栈

  • 前端: React 18, TypeScript, Tailwind CSS, Radix UI
  • 后端: Rust, Tauri 2.0
  • 存储: SQLite, JSONL

目录结构

flow-monitor/
├── src/ # 前端源码
│ ├── components/ # React 组件
│ ├── hooks/ # React Hooks
│ ├── lib/ # 工具库和 API
│ └── pages/ # 页面组件
├── src-tauri/ # Rust 后端
│ └── src/
│ ├── flow_monitor/ # 核心模块
│ └── commands/ # Tauri 命令
├── plugin/ # 插件配置
└── .github/workflows/ # CI/CD

构建

# 开发模式
npm run tauri:dev
# 生产构建
npm run tauri:build
# 仅构建 CLI
cd src-tauri && cargo build --release --bin flow-monitor-cli

测试

# Rust 测试
cd src-tauri && cargo test
# 前端测试
npm test

路线图

  • 基础监控功能
  • 流量过滤和搜索
  • 多格式导出
  • 代码生成
  • 会话管理
  • 差异对比
  • 独立应用模式
  • 请求重放(独立模式)
  • 插件系统
  • 云端同步
  • 团队协作

贡献

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

许可证

MIT License - 详见 LICENSE 文件

相关项目

致谢

  • 感谢 mitmproxy 项目的设计灵感
  • 感谢 Tauri 提供的跨平台框架
  • 感谢所有贡献者的支持

About

flow-monitor

Resources

License

Stars

Watchers

Forks

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /