npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

lumen-agent

v1.0.3

Published

基于大模型的 AI Agent 系统 — 远程VM操控、MCP扩展、AI定时任务、RAG知识库、双模记忆、工具审批流

Readme

流明 Agent (LumenAgent)

一个基于大模型的多轮对话 Agent 系统 — 搭载远程虚拟机操控MCP 协议扩展AI 自动定时任务可插拔技能RAG 知识库双模记忆系统工具审批流等完整的企业级功能模块。

Tech Stack Framework Frontend LLM


✨ 亮点功能

| 维度 | LumenAgent | |------|-----------| | 远程 VM 操控 | Agent 直接通过 SSH 操控远程虚拟机,执行命令、查看状态,支持 WebSocket 实时回显 | | 工具审批流 | 三档审批模式(无/全部/按危险度)+ 前端弹窗实时审批,超时自动拒绝 | | MCP 协议支持 | 支持加载外部 MCP Server 作为扩展工具池,前端可选择性启用 | | AI 定时任务 | Agent 在对话中即可创建/管理定时任务(cron/interval/date),任务触发时自动执行工具循环 | | 双模记忆 | 每日记忆(自动摘要)+ 长期记忆(自动压缩)+ 双重向量检索(ChromaDB + 语义搜索) | | 滑动窗口摘要 | 动态压缩策略:N 轮触发一次,压缩前 M 轮为摘要,保留后 K 轮原文 | | 热更新配置 | Agent 可通过 env_editor 工具运行时修改自身配置,无需重启服务 | | 双入口 + API Key | 同时运行 CLI 和 Web UI,API Key 认证保护所有端点 | | 管理前端 | 13 个视图组件覆盖工具/技能/记忆/知识库/虚拟机/定时任务/MCP/系统配置/日志/API Key 全管理场景 |


📋 功能总览

| 模块 | 功能 | 说明 | |------|------|------| | 💬 对话 | 流式聊天 | SSE 实时推送,支持思考链、工具调用、正文的端到端流式渲染 | | 🤖 Agent 模式 | 多轮工具循环 | LLM 自动推理 → 调用工具 → 观察结果 → 继续推理,支持最多 20 轮 | | 🛠 工具系统 | 11 个内置工具 | Read / Write / Bash / WebSearch / WebFetch / KnowledgeSearch / KnowledgeInsert / MemorySearch / EnvEditor / TaskScheduler / VirtualMachineOperation | | 🖥 远程虚拟机 | SSH 操控 | Agent 直接连接远程服务器执行命令、查看状态,带 WebSocket 实时回显 | | 👮 工具审批流 | 三档审批 | 无审批 / 全量审批 / 按危险度审批,前端弹窗实时决策 | | 🔌 MCP 协议 | 外部工具扩展 | 加载任意 MCP Server 的工具,前端可选择性启用 | | ⏰ AI 定时任务 | 自动调度 | Agent 对话中创建 cron/interval/date 定时任务,触发时自动执行工具循环 | | 🧠 知识库 | RAG 向量检索 | 文本切分 → Embedding → ChromaDB 检索,支持入库、删除、重建 | | 💾 记忆系统 | 自动摘要 + 向量检索 | 每日对话自动摘要落盘,长期记忆自动整理,双重向量语义检索 | | 📜 会话管理 | 滑动窗口摘要 | SQLite 持久化,游标分页,自动标题生成 | | 🔌 技能系统 | 可插拔扩展 | SKILL.md 驱动,环境依赖校验,兼容 clawhub 生态 | | ⚙️ 配置管理 | 热更新 | Agent 调用 env_editor 工具随时读/写配置,无需重启服务 | | 🔑 API 安全 | API Key 认证 | 完整的 Key 创建/列表/启用/禁用管理,首次启动自动生成默认 Key | | 🌐 双入口 | Web UI + CLI | Vue 3 管理控制台;CLI 命令行模式,支持斜杠命令 |


🗂 项目结构

LumenAgent/
├── lumen_agent/                              # 后端 Python 包(~7000 行)
│   ├── agent/                                # Agent 核心引擎
│   │   ├── agent.py                          # AgentStreamExecutor — 多轮工具循环引擎
│   │   ├── context.py                        # 上下文管理、防循环守卫
│   │   ├── memory/
│   │   │   └── memory_utils.py               # 记忆文件操作工具
│   │   ├── prompts/
│   │   │   ├── builder.py                    # System Prompt 构造器
│   │   │   └── docs/                         # Prompt 模板
│   │   ├── skills/
│   │   │   ├── loader.py                     # 技能加载器
│   │   │   └── meta.py                       # 技能元数据模型
│   │   ├── tokens/
│   │   │   ├── char_counter.py               # 字符计数
│   │   │   └── tiktoken_counter.py           # tiktoken 计数
│   │   └── tools/                            # 11 个工具实现
│   │       ├── base.py                       # BaseTool + ToolResult 基类
│   │       ├── registry.py                   # 工具注册表(装饰器驱动)
│   │       ├── read.py / write.py / bash.py  # 文件/命令操作
│   │       ├── web_search.py / web_fetch.py  # 网络工具
│   │       ├── knowledge.py                  # 知识库检索与入库
│   │       ├── memory_search.py              # 记忆向量检索
│   │       ├── env_editor.py                 # .env 配置编辑(热更新)
│   │       ├── task_scheduler.py             # ⌚ 定时任务创建与管理
│   │       ├── vm_operation.py               # 🖥 虚拟机 SSH 操作
│   │       └── mcp_bridge.py                 # 🔌 MCP 工具桥接
│   ├── api/                                  # FastAPI 路由层(28+ 端点)
│   │   ├── routers/
│   │   │   ├── chat.py                       # 对话:POST + SSE 流式 + 中断 + 审批
│   │   │   ├── sessions.py                   # 会话 CRUD + 游标分页
│   │   │   ├── vm.py                         # 🖥 虚拟机注册/更新/删除/列表/执行
│   │   │   ├── vm_ws.py                      # 🖥 WebSocket 实时回显
│   │   │   ├── scheduler_router.py           # ⏰ 定时任务 CRUD + 执行记录
│   │   │   ├── mcp_servers.py                # 🔌 MCP Server 配置管理
│   │   │   ├── api_keys.py                   # 🔑 API Key 管理
│   │   │   ├── knowledge.py                  # 📚 知识库管理
│   │   │   ├── configs.py / logs_router.py   # ⚙️ 配置 / 📋 日志
│   │   │   ├── tools.py / skills.py          # 🛠 工具/技能列表
│   │   │   └── memories.py                   # 🧠 记忆文件浏览
│   │   └── schemas/                          # Pydantic DTO + SSE 事件
│   ├── application/                          # 应用服务层(~2500 行)
│   │   ├── service/
│   │   │   ├── chat_service.py               # 对话编排(单轮/流式/Agent)
│   │   │   ├── vm_connection_service.py      # 🖥 SSH 连接池 + 流式命令执行
│   │   │   ├── scheduler_task_service.py     # ⏰ 定时任务服务
│   │   │   ├── mcp_server_service.py         # 🔌 MCP 服务
│   │   │   ├── summary_service.py            # 📝 滑动窗口摘要 + 长期记忆整理
│   │   │   ├── rag_service.py                # 📚 知识库 RAG 服务
│   │   │   ├── memory_rag_service.py         # 🧠 记忆向量检索服务
│   │   │   ├── config_service.py             # ⚙️ 配置管理服务
│   │   │   ├── api_key_service.py            # 🔑 API Key 服务
│   │   │   ├── memory_file_service.py        # 🧠 记忆文件浏览服务
│   │   │   ├── log_service.py                # 📋 日志服务
│   │   │   └── title_service.py              # 🏷 会话标题自动生成
│   │   └── utils/
│   │       ├── context_assembly.py           # 上下文组装 + Token 预算检查
│   │       ├── text_splitter.py              # 文本切分
│   │       └── llm_error_policy.py           # LLM 链路错误映射
│   ├── infrastructure/                       # 基础设施层
│   │   ├── startup/                          # 启动引导
│   │   │   ├── workspace.py                  # 工作区初始化
│   │   │   ├── uvicorn_runner.py             # uvicorn 启动
│   │   │   └── flask_proxy.py               # Flask 静态 + API 代理
│   │   ├── data_base/                        # SQLite 仓储
│   │   │   ├── sqlite_conversation.py        # 会话仓储
│   │   │   ├── sqlite_knowledge.py           # 知识库仓储
│   │   │   ├── sqlite_scheduler.py           # 定时任务仓储
│   │   │   ├── sqlite_mcp.py                 # MCP 配置仓储
│   │   │   ├── sqlite_api_key.py             # API Key 仓储
│   │   │   └── sqlite_vm_config.py           # VM 配置仓储
│   │   ├── client/
│   │   │   ├── deepseek_client.py            # DeepSeek HTTP 客户端
│   │   │   ├── embedding_client.py           # 阿里云 Embedding 客户端
│   │   │   ├── chroma_client.py              # Chroma 向量存储封装
│   │   │   └── mcp_client.py                 # MCP SSE 客户端管理器
│   │   ├── scheduler/
│   │   │   ├── scheduler_service.py          # APScheduler 封装(单例)
│   │   │   └── tasks.py                      # 预定义系统任务
│   │   ├── virtual_machine/
│   │   │   └── virtual_machine_registry.py   # VM 注册中心
│   │   ├── approval_registry.py              # 👮 工具审批注册表
│   │   ├── vm_event_bus.py                   # 🖥 VM 事件总线
│   │   ├── websocket_manager.py              # 🖥 WebSocket 连接管理器
│   │   ├── sse_registry.py                   # SSE 中断注册表
│   │   └── http_pool.py                      # 共享 HTTP 连接池
│   ├── model_adapters/                       # 模型适配层
│   │   ├── base.py                           # ModelAdapter 抽象接口
│   │   └── deepseek.py                       # DeepSeek 适配器实现
├── webChannel/                               # 前端 Vue 3 + TypeScript(~8800 行)
│   └── src/
│       ├── App.vue                           # 主布局(侧栏导航 + 顶栏 + 内容区 + 输入区)
│       ├── components/                       # 13 个视图组件
│       │   ├── ChatView.vue                  # 对话面板
│       │   ├── ChatMessage.vue               # 消息渲染(Markdown/思考链/工具/审批)
│       │   ├── SessionList.vue               # 会话列表
│       │   ├── VMView.vue (1366 行)          # 🖥 虚拟机管理 + 终端
│       │   ├── SchedulerView.vue             # ⏰ 定时任务管理
│       │   ├── MCPServerView.vue             # 🔌 MCP 配置
│       │   ├── KnowledgeView.vue             # 📚 知识库管理
│       │   ├── ConfigView.vue                # ⚙️ 系统配置编辑
│       │   ├── LogView.vue                   # 📋 日志实时监控
│       │   ├── MemoryView.vue / ToolView.vue / SkillView.vue / ApiKeyManager.vue
│       │   └── MiniChatPanel.vue             # 浮动聊天面板
│       ├── composables/
│       │   ├── useChatStream.ts              # SSE 流式消息管理
│       │   └── useVMWebSocket.ts             # 🖥 VM WebSocket 连接管理
│       ├── types.ts                          # TypeScript 类型定义
│       └── utils/markdown.ts                 # Markdown + 代码高亮渲染
├── work_space/                               # 工作空间
│   ├── memory/                               # 每日记忆文件 YYYY-MM-DD.md
│   ├── MEMORY.md                             # 长期记忆
│   ├── ME.md / USER.md / RULE.md             # 项目/用户/规则上下文
│   └── skills/                               # 可插拔技能包
├── pyproject.toml                            # Python 包配置
├── package.json / start.js / install.js       # Node.js 启动/安装脚本
└── lumen_agent/.env / config.json             # 环境变量 + 默认配置

🚀 快速启动

0️⃣ 一行命令启动(推荐)

确保已安装 Node.js ≥ 18Python ≥ 3.13 后:

# 一键安装 + 启动(自动装 Python/Node 依赖、构建前端、启动服务)
npx lumen-start

首次运行会自动完成:Python 依赖安装 → 前端依赖安装 → 前端构建 → 服务启动。

然后只需配置 lumen_agent/.env 中的 LLM_API_KEY,重启即可。

国内用户:npm 和 pip 下载慢时可配置镜像加速:

npm config set registry https://registry.npmmirror.com
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

1️⃣ 环境要求

  • Python ≥ 3.13
  • Node.js ≥ 18
  • 一个 DeepSeek API Key(或其他兼容的 OpenAI API)
  • 一个 阿里云 DashScope API Key(仅知识库 RAG + 记忆向量检索需要,纯对话可不配)

2️⃣ 配置环境变量

编辑 lumen_agent/.env

# ── LLM 配置 ──
LLM_API_KEY=sk-your-deepseek-api-key
LLM_BASE_URL=https://api.deepseek.com
LLM_MODEL=deepseek-v4-flash

# ── 阿里云 Embedding(可选,RAG/记忆需要)──
EMBEDDING_API_KEY=sk-your-dashscope-api-key
EMBEDDING_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings
EMBEDDING_MODEL=text-embedding-v4

# ── 服务端口 ──
HOST=127.0.0.1
PORT=21675

全部可配置项详见 config.json(同名 .env 变量覆盖)。

3️⃣ 全局安装后启动(或手动分步)

# 方式一:全局安装
npm install -g lumen-agent
lumen-start

# 方式二:克隆仓库手动分步
git clone https://github.com/renking-W/LumenAgent.git
cd LumenAgent
npm install     # 自动安装 Python + Node 依赖
npm start       # 构建前端 + 启动服务

4️⃣ 传统方式:纯 Python 启动后端

pip install -r lumen_agent/requirements.txt
python -m lumen_agent.app

后端默认运行在 http://127.0.0.1:21675

首次启动会自动创建默认 API Key 并打印到日志,请妥善保管。

  • Swagger 文档:http://127.0.0.1:21675/docs
  • 健康检查:http://127.0.0.1:21675/health

4️⃣ 启动前端(开发模式)

cd webChannel
npm install
npm run dev

前端默认运行在 http://127.0.0.1:5173,已配置代理转发 API 请求到后端 21675 端口。

5️⃣ 构建生产版本

cd webChannel
npm run build

构建产物输出到 webChannel/dist/,后端启动时自动通过 Flask 提供静态文件服务,访问 http://127.0.0.1:21675 即可。

6️⃣ CLI 模式(可选)

# 自动同时启动 HTTP 服务
lumen-cli

# 或
python -m lumen_agent.application.common.chat_in_cli

CLI 支持斜杠命令:/exit /new /knowledge


🖥 管理控制台界面

导航面板

左侧栏包含 10 个管理视图,按功能分组:

核心

| 视图 | 说明 | |------|------| | 💬 对话 | 实时流式对话面板 | | 🛠️ 工具 | 浏览 Agent 的全部可用工具及其参数 | | 🎯 技能 | 展示可插拔技能的状态(可用/缺失环境) | | 🧠 记忆 | 浏览每日记忆 + 长期记忆文件 |

功能

| 视图 | 说明 | |------|------| | 🔌 MCP | 管理 MCP Server 配置(CRUD + 测试连接) | | 🖥 虚拟机 | 注册/管理远程虚拟机,实时终端回显 | | 📚 知识库 | 知识文档入库、检索、Chunk 详情查看 | | ⏰ 定时任务 | 查看 AI 创建的定时任务及执行记录 |

其它

| 视图 | 说明 | |------|------| | ⚙️ 系统配置 | 编辑系统运行参数 | | 📋 日志 | 实时查看/下载日志文件 |


1️⃣ 对话视图

会话列表

  • 所有历史会话按更新时间排序
  • 相对时间显示("3 分钟前")
  • 支持新建/切换/删除(带确认弹窗)
  • 可折叠收起

消息区域 — 每条助手消息按区块渲染:

| 区块 | 渲染方式 | 说明 | |------|---------|------| | 💭 思考链 | 可折叠 <details> | DeepSeek reasoning_content,默认收起 | | 📝 正文 | GFM Markdown | 代码高亮 + 表格 + 链接 + 复制按钮 | | 🛠 工具调用 | 可折叠 details | 工具名 + 参数 + 耗时 + 结果 | | 👮 审批等待 | 弹窗按钮 | 批准/拒绝当前工具调用(按审批模式) | | ⚠️ 错误 | 可折叠 details | 错误详情 + 「重试」按钮 |

模式切换

  • Simple 模式 — 单轮对话,LLM 直接回复
  • Agent 模式(默认)— 多轮工具循环,LLM 可调用 11 个工具

输入区

  • 多行文本框(自动调整高度 4–10 行)
  • Enter 发送,Ctrl+Enter 换行
  • 发送中可随时中断流式回复
  • 支持选择 MCP Server 挂载到当前对话

2️⃣ 🖥 虚拟机管理视图

这是项目的核心特色功能之一,提供完整的远程服务器管理体验。

  • 注册 VM:填写 IP、端口、用户名、密码
  • 状态面板:查看所有已注册 VM 的连接状态
  • 内置终端:通过 WebSocket 实时回显,支持命令执行、流式输出、退出码显示
  • 一键操作:连接/断开/删除,操作结果实时反馈
  • Agent 联动:Agent 可在对话中自动连接 VM 执行任务,用户通过 Web 界面实时观察执行过程

3️⃣ ⏰ AI 定时任务视图

  • 展示所有 AI 创建的定时任务
  • 显示触发器类型(cron/interval/date)、表达式、下次执行时间
  • 查看每次触发的执行记录 + 输出内容
  • 支持暂停/恢复/删除

4️⃣ 🔌 MCP Server 管理

  • 添加/编辑/删除 MCP Server 配置
  • 测试连接并查看暴露的工具列表
  • 对话时通过下拉选择框选择性挂载 MCP 工具

🧠 核心架构解读

Agent 工具循环

用户输入
    │
    ▼
┌─────────────────────────────────┐
│  1. 上下文组装                   │
│     (摘要 + 历史 + 本轮消息       │
│      + Token 预算检查)           │
└──────────┬──────────────────────┘
           ▼
┌─────────────────────────────────┐
│  2. LLM 推理(流式 SSE)         │
│     输出: text + thinking        │
│     或发起: tool_use             │
└──────┬──────────────────────────┘
       │
       ├── 无工具调用 → yield "done" → 落库 + 摘要触发
       │
       └── 有工具调用
               │
               ▼
       ┌───────────────────┐
       │ 3. 审批检查        │
       │ (选: 无/全部/危险) │
       └──────┬────────────┘
              │ 通过
              ▼
       ┌───────────────────┐
       │ 4. 执行工具         │
       │ (逐个流式执行)      │
       └──────┬────────────┘
              │
              ▼
       ┌───────────────────┐
       │ 5. 结果返回 LLM    │
       │ → 回到步骤 2       │
       │ (最多 20 轮)       │
       └───────────────────┘

滑动窗口摘要

轮次:  1  2  3  4  5  6  │  7  8  9 ...
                        │
                        ▼
                    ┌───────────┐
                    │ 触发摘要   │
                    │ (阈值=6)   │
                    └───────────┘
                          │
                    压缩前 4 轮为摘要
                    保留后 2 轮为原文
                    count → 2
  • summary_threshold_turns=6:每 6 轮触发一次摘要
  • summary_compress_turns=4:前 4 轮压缩为摘要
  • summary_keep_turns=2:后 2 轮保留原文
  • 摘要结果同时写入每日记忆文件(YYYY-MM-DD.md)+ ChromaDB 向量库

SSE 事件流

Agent 模式下完整的 SSE 事件序列:

event: reasoning_update    ← 思考链增量
event: message_update      ← 正文增量
event: tool_calls          ← 本轮工具调用列表
event: awaiting_approval   ← 等待用户审批(含工具 ID/名称/参数)
event: tool_execution_start← 单个工具开始执行
event: tool_execution_end  ← 单个工具执行完毕(含耗时)
event: reasoning_update    ← 工具结果返回后继续推理
event: message_update      ← 最终回复
event: assistant_done      ← 本轮完成
event: error               ← 错误(可选)
[DONE]                     ← 流结束标记

🛠 工具系统详解

11 个内置工具

| 工具名 | 用途 | 需审批 | 说明 | |--------|------|--------|------| | read | 读取文件 | 否 | offset/limit 分块,单次 2000 行 / 50KB | | write | 写入/追加/替换 | 否 | 三种写入模式 | | bash | 执行 Shell 命令 | 否 | 自动适配 Win/Unix,30s 超时 | | web_search | 网页搜索 | 否 | DuckDuckGo,无需额外 API Key | | web_fetch | 网页抓取 | 否 | HTML → Markdown,支持文件下载 | | knowledge_search | RAG 知识检索 | 否 | 从 ChromaDB 检索相关 chunk | | knowledge_insert | 知识入库 | 否 | 文本/文件入库到知识库 | | memory_search | 记忆检索 | 否 | 语义检索历史对话记忆 | | env_editor | 配置编辑 | 否 | 运行时读写 .env,热更新 | | task_scheduler | 定时任务管理 | ✅ 是 | 创建/列表/删除/暂停/恢复定时任务 | | virtual_machine_operation | 虚拟机操作 | ✅ 是 | SSH 执行命令/连接/断开/查看状态 |

工具审批系统

三种审批模式可在对话时动态切换:

| 模式 | 行为 | 适用场景 | |------|------|---------| | none | 不审批,直接执行 | 调试/可信环境 | | dangerous(默认) | 仅审批标记 requires_approval=True 的工具 | 日常使用 | | all | 全部工具调用都需审批 | 高安全要求 |

审批流程:

  1. LLM 发起工具调用 → 进入审批挂起状态
  2. 前端弹出审批对话框,展示工具名称 + 参数
  3. 用户逐一点击批准/拒绝(或超时自动全部拒绝)
  4. 拒绝的工具注入 "用户已拒绝该工具调用" 错误结果
  5. Agent 根据结果继续推理

MCP 工具扩展

支持加载任意 MCP Server 作为工具源:

  • 前端管理面板配置 MCP Server URL + API Key
  • 启动时自动连接所有 enabled 的 Server
  • 对话时通过下拉选择框选择性挂载
  • 挂载后 MCP Server 暴露的工具自动注入 Agent 工具池

🖥 虚拟机模块架构

┌────────────────────────────────────────────────────────┐
│  Agent (VirtualMachineOperation 工具)                   │
│  - exec_command / connect / disconnect / get_status    │
│  - list_vms                                            │
└──────────┬─────────────────────────────────────────────┘
           │
           ▼
┌────────────────────────────────────────────────────────┐
│  VMConnectionService (SSH 连接池)                       │
│  - asyncssh 驱动,支持连接复用                           │
│  - 流式命令执行 (async for kind, data in ...)          │
└────┬──────────────┬──────────────────┬─────────────────┘
     │              │                  │
     ▼              ▼                  ▼
┌──────────┐ ┌──────────────┐ ┌──────────────────┐
│ SQLite   │ │ WebSocket    │ │ VMEventBus       │
│ VM 配置   │ │ 连接管理器    │ │ (事件发布/订阅)    │
│ 仓储     │ │ (前端实时)    │ │                   │
└──────────┘ └──────────────┘ └──────────────────┘

前端 VMView.vue:
- 注册/管理 VM 配置
- 通过 WebSocket 实时订阅命令执行输出
- 内置终端面板
- 与 Agent 对话中的 VM 操作联动

⏰ AI 定时任务系统

Agent 通过 task_scheduler 工具可在对话中直接创建定时任务:

用户: "每天早上9点帮我查一下AI的最新资讯"

Agent → 调用 task_scheduler (action=create, trigger_type=cron,
                            trigger_expr="0 9 * * *", ...)

系统:
  ┌─ 向用户确认任务步骤 + 产物格式
  ├─ 注册到 APScheduler
  ├─ 持久化到 scheduled_tasks 表
  └─ 返回任务 ID

到达触发时间:
  ┌─ 使用独立 session (__scheduled__{id})
  ├─ 执行一轮完整的 Agent 工具循环
  ├─ 结果落库到 scheduled_executions 表
  └─ 可被前端 SchedulerView 查看

支持三种触发器:cron(0 9 * * *)/ interval(1800秒)/ date(ISO 时间


📝 记忆系统

双层结构

记忆系统
├── 📅 每日记忆 (work_space/memory/YYYY-MM-DD.md)
│   ├── 每次摘要触发时自动追加
│   ├── 按 "---" + "## timestamp session=xxx" 分段
│   └── 自动向量化 → ChromaDB (memory_store)
│
└── 📌 长期记忆 (work_space/memory/MEMORY.md)
    ├── 超过 150KB 时自动 LLM 压缩整理
    ├── 保持内容精炼
    └── 启动时全量索引 → ChromaDB

检索方式

  • Agent 语义检索memory_search 工具 → ChromaDB 向量搜索
  • 前端浏览:记忆面板查看全部文件内容 + 类型区分

📚 知识库 (RAG)

| 步骤 | 技术栈 | 说明 | |------|--------|------| | 文本切分 | 自定义 TextSplitter | 按 chunk_size=500, overlap=150 切分 | | 向量化 | 阿里云 DashScope Embedding | text-embedding-v4 | | 存储 | ChromaDB | collection: knowledge_base | | 检索 | 余弦相似度 | top_k=5, threshold=0.2 |

向量模型可以自定义,只需要修改config.json中的EMBEDDING_BASE_URL、EMBEDDING_MODEL 即可


🔧 技能扩展

技能是预定义的可复用指令包,兼容 clawhub 生态。

work_space/skills/
└── skill-creator-0.1.0/
    ├── SKILL.md          # YAML frontmatter + Markdown 指令
    ├── _meta.json        # 元数据
    └── scripts/          # 配套脚本

SKILL.md frontmatter:

---
name: skill-name
description: 简要描述
requires:
  env: [API_KEY_NAME]    # 可选:依赖的环境变量
primaryEnv: API_KEY_NAME # 可选:主环境变量名
emoji: 🔧                # 可选:显示图标
---

通过 load_skills() 自动扫描加载,校验环境变量后标记为「可用/不可用」。


📡 API 一览

| 方法 | 路径 | 说明 | |------|------|------| | GET | /health | 健康检查 | | POST | /v1/chat | 整段对话(非流式) | | POST | /v1/chat/stream | SSE 流式对话 | | POST | /v1/chat/stream/interrupt | 中断流式对话 | | POST | /v1/chat/stream/approve | 提交工具审批决策 | | GET | /v1/sessions | 会话列表(分页) | | GET | /v1/sessions/{id}/messages | 会话消息(游标分页) | | POST | /v1/sessions/{id}/messages | 追加消息 | | PUT | /v1/sessions/{id}/title | 修改标题 | | DELETE | /v1/sessions/{id} | 删除会话 | | GET | /v1/tools | 工具列表 | | GET | /v1/skills | 技能列表 | | GET | /v1/memories | 记忆文件列表 | | POST | /v1/knowledge/ingest | 知识入库 | | POST | /v1/knowledge/search | 知识检索 | | GET | /v1/knowledge/collections | 知识库集合列表 | | GET | /v1/knowledge/documents | 知识文档列表 | | GET | /v1/mcp-servers | MCP Server 列表 | | POST | /v1/mcp-servers | 创建 MCP Server | | PUT | /v1/mcp-servers/{id} | 更新 MCP Server | | DELETE | /v1/mcp-servers/{id} | 删除 MCP Server | | POST | /v1/mcp-servers/{id}/test | 测试 MCP Server 连接 | | GET | /v1/scheduled-tasks | 定时任务列表 | | POST | /v1/scheduled-tasks | 创建定时任务 | | DELETE | /v1/scheduled-tasks/{task_id} | 删除定时任务 | | GET | /v1/scheduled-tasks/{task_id}/executions | 任务执行记录 | | GET | /v1/api-keys | API Key 列表 | | POST | /v1/api-keys | 创建 API Key | | DELETE | /v1/api-keys/{key_id} | 删除 API Key | | PATCH | /v1/api-keys/{key_id} | 启用/禁用 API Key | | GET | /v1/config | 获取配置列表 | | PUT | /v1/config | 更新配置项 | | GET | /v1/logs | 日志文件列表 | | GET | /v1/logs/{filename} | 日志文件内容 | | GET | /v1/vm | VM 列表 | | POST | /v1/vm/register | 注册 VM | | PUT | /v1/vm/{vm_id} | 更新 VM 配置 | | POST | /v1/vm/execute | 流式执行命令 | | DELETE | /v1/vm/{vm_id} | 删除 VM | | WS | /v1/vm/ws | VM 实时事件 WebSocket |


⚙️ 完整配置项

| 配置项 | 默认值 | 说明 | |--------|--------|------| | LLM_API_KEY | (必填) | DeepSeek API 密钥 | | LLM_BASE_URL | https://api.deepseek.com | API 地址 | | LLM_MODEL | deepseek-v4-flash | 模型标识 | | LLM_TEMPERATURE | null | 温度参数 | | LLM_MAX_TOKENS | null | 最大输出 Token | | LLM_ENABLE_THINKING | true | 是否启用思考链 | | EMBEDDING_API_KEY | (可选) | 阿里云 Embedding API | | EMBEDDING_MODEL | text-embedding-v4 | Embedding 模型 | | HOST / PORT | 127.0.0.1:21675 | 服务监听地址 | | CORS_ORIGINS | http://127.0.0.1:5173 | 允许的跨域源 | | AGENT_MAX_TURNS | 20 | 工具循环最大轮次 | | TOOL_APPROVAL_MODE | dangerous | 审批模式 | | TOOL_APPROVAL_TIMEOUT | 300 | 审批超时(秒) | | CONVERSATION_MAX_CONTEXT_MESSAGES | 5 | 取最近 N 条消息 | | SUMMARY_THRESHOLD_TURNS | 6 | 摘要触发轮次 | | SUMMARY_COMPRESS_TURNS | 4 | 压缩轮次数 | | SUMMARY_KEEP_TURNS | 2 | 保留原文轮次数 | | RAG_CHUNK_SIZE / RAG_CHUNK_OVERLAP | 500 / 150 | 文本切分 | | RAG_TOP_K / RAG_SIMILARITY_THRESHOLD | 5 / 0.2 | 检索参数 | | SCHEDULER_TIMEZONE | Asia/Shanghai | 时区 | | VM_SSH_TIMEOUT | 60 | SSH 连接超时 | | VM_SSH_KEEPALIVE | 40 | SSH 心跳间隔 | | VM_EXECUTE_TIMEOUT | 30 | 命令执行超时 | | VM_DANGEROUS_COMMANDS | rm -rf,shutdown... | 危险命令列表 |

Agent 可通过 env_editor 工具运行时查看和修改配置,无需重启。


🧪 技术栈

| 层 | 技术 | 版本 | |---|------|------| | 语言 | Python | ≥ 3.13 | | Web 框架 | FastAPI | ≥ 0.136 | | 模型适配 | DeepSeek API / OpenAI 兼容 | - | | 向量存储 | ChromaDB | ≥ 1.5.9 | | Embedding | 阿里云 DashScope / 阿里灵积 | - | | 调度器 | APScheduler | ≥ 3.10 | | SSH | asyncssh | (VM 模块) | | MCP | Python MCP SDK | ≥ 1.0 | | 数据库 | SQLite (aiosqlite) | - | | 前端框架 | Vue 3 + TypeScript | ≥ 3.5 | | UI 库 | Element Plus | ≥ 2.10 | | 前端构建 | Vite | ≥ 7.1 |


📦 依赖安装

# Python 依赖
pip install -r lumen_agent/requirements.txt

# 前端依赖
cd webChannel && npm install

💡 设计原则

  1. 模型无关:通过 ModelAdapter 抽象层,理论上可切换任意 LLM(当前适配 DeepSeek)
  2. 全局单例模式:HTTP 连接池 / MCP 管理器 / 审批注册表 / SSE 注册表 / VM 连接服务 均为全局单例
  3. 热配置:Agent 可在运行时修改自身配置,无需重启
  4. 双入口:CLI 模式自动启动后台 HTTP 服务
  5. 最小依赖:核心 Python 依赖仅 10 个,前端仅 8 个

The End

项目持续开发中,欢迎贡献!

联系方式:[email protected]

如果觉得本项目有帮助,欢迎给一个 ⭐ Star!