跳到正文
GitHub·· 8 天前AI 评分58

anyuer678 开源个人 AI Runtime Lumen,可操控整台电脑

anyuer678/lumen

AI 导读

anyuer678 在 GitHub 开源 Lumen,一个 24/7 常驻、可操控整台电脑的个人 AI Runtime,默认仅监听本机 127.0.0.1,作者标注为非生产就绪、未经完整独立审计。

正文

Your personal intelligence layer — 你的个人智能中枢

一个 24/7 常驻运行、能操控整台电脑的开源 AI Runtime

Tests License Go Frontend


状态:portfolio · 非生产就绪 · 默认仅本机 127.0.0.1
安全:见 docs/THREAT_MODEL.md 与 docs/SECURITY.md;本项目处于早期测试阶段,未经完整独立审计,勿公网部署
硬化:空 scopes 不再等于全权;shell/fs:delete 默认需确认;?token= 仅限事件流

Why

市面上多数 Agent 停在 "LLM + Tools"。Lumen 额外补齐了很多人忽视、却决定"Agent 能否长期可用"的部分:

  • 可靠性:上下文预算、宽容工具调用修复、Checkpoint 断点恢复

  • 可观测性:审计日志、任务轨迹、成本追踪

  • 安全:Token 认证、命令安全分类、沙箱路径检查

  • 记忆:长期记忆存储、用户画像、记忆评分

Architecture


Memory → Reasoning → Tools → Action

  │         │          │        │

  ▼         ▼          ▼        ▼

SQLite    LLM API    Sandbox   Computer

Quick Start(首次运行 3 步走通)

1. 编译启动

# 克隆

git clone https://github.com/anyuer678/lumen.git

cd lumen



# 编译后端

go build -o lumen.exe ./cmd/agent



# 编译前端(可选,Dashboard 需要)

cd web && npm install && npm run build && cd ..



# 启动

./lumen.exe

服务默认监听 127.0.0.1:14000,自动创建 SQLite 数据库。

2. 创建管理员 Token(首次引导)

首次启动时数据库为空,可通过 bootstrap 无认证创建第一个管理员 token:

# 创建 L3 管理员 token(首次运行时不需要认证)

curl -X POST http://127.0.0.1:14000/v1/auth/token \

  -H "Content-Type: application/json" \

  -d '{"name":"admin","perm_level":3}'

响应会返回 token 明文(agt_xxx...),请立即保存,仅显示一次。

⚠️ Bootstrap 限制:仅在数据库为空时有效;强制 L3 级别;第二个 token 必须带认证创建。

3. 开始使用

TOKEN="agt_你的token"



# 执行 shell 命令

curl -X POST http://127.0.0.1:14000/v1/tools/shell.run/run \

  -H "Authorization: Bearer $TOKEN" \

  -H "Content-Type: application/json" \

  -d '{"args":{"command":"echo hello from lumen"}}'



# 读取文件

curl -X POST http://127.0.0.1:14000/v1/tools/fs/run \

  -H "Authorization: Bearer $TOKEN" \

  -H "Content-Type: application/json" \

  -d '{"args":{"action":"list","path":"."}}'



# 查看可用工具

curl http://127.0.0.1:14000/v1/tools/ -H "Authorization: Bearer $TOKEN"

打开浏览器访问 http://127.0.0.1:14000 可使用 Dashboard 界面。

Token 级别与 Scopes

| 级别 | 用途 | 能做什么 |

|---|---|---|

| L0 | 只读 | 浏览器操控、安全分类查询 |

| L1 | 普通操作 | Shell 命令、文件读写、系统信息 |

| L2 | 危险操作 | 计算机控制、MCP 工具(需人工确认) |

| L3 | 管理员 | Token 管理、MCP 注册、全部操作 |

新创建的 token 默认带有以下 scopes:tasks:create,tasks:control,confirm:approve,tools:run,mcp:register,token:manage,events:emit,events:read,kb:write,settings:write

访问受 scope 保护的端点时,token 必须包含对应 scope,否则返回 403。事件总线读端点(GET /v1/eventbus)接受 events:read(最小权限,推荐给只读监控方)或 events:emit(向后兼容);发射/清理事件(POST /v1/eventbus/emit、DELETE /v1/eventbus)仍要求 events:emit。

Tech Stack

  • Backend: Go 1.26 + chi + SQLite (WAL)

  • Frontend: React 19 + TypeScript + Vite

  • Testing: go test (144 tests)

Project Structure


cmd/agent/          CLI 入口

internal/

  agent/            Agent 核心循环(loop、planner、feedback、checkpoint)

  api/              HTTP API + 静态资源托管

    handlers/       REST handlers

    static/         前端构建产物

  auth/             Token 认证与权限策略

  config/           配置加载与校验

  contextmgr/       上下文预算管理(token 估算、压缩提示)

  db/               SQLite 持久化(WAL 模式)

  llm/              LLM 调用封装(多模型路由、成本追踪)

  memory/           长期记忆存储、用户画像、记忆评分

  observability/    审计日志与可观测性

  scheduler/        定时任务调度

  service/          Windows 服务生命周期管理

  task/             DAG 工作流引擎

  toolrepair/       LLM 工具调用输出修复

  trajectory/       任务轨迹记录

  vision/           截图分析(多模态)

web/                React 前端

conf/               配置文件(config.yaml.example)

生态

lumen 是一组 AI 工具的运行核心,以下同作者项目可围绕它组成生态:

项目 角色
voiceconsole MCP 插件 · 语音入口——标准 MCP server(stdio),可通过本仓 internal/agent/mcp.go 的 McpServer{command, args, transport} 配置注册
dsh-logtimeline MCP 插件 · 日志查询——标准 MCP server,同样可注册
keyvault 密钥设施——本地加密管理 LLM Key / Token

注册后的 MCP 工具以 mcp.<name> 出现在工具表,走 L2 人工确认(见上方 Scopes 表的 mcp:register)。

联调实测(2026-10-10):voiceconsole 已在本机完成全栈连通验证——

  1. python -m voiceconsole(stdio)应答 MCP 握手(protocol 2024-11-05),tools/list 返回 5 个工具:run_cli / find_file / open_folder / speak / confirm
  2. conf/config.yaml 配置级注册:启动日志 [mcp] registered voice-console
  3. API 动态注册 POST /v1/mcp/servers(mcp:register scope)→ 201
  4. POST /v1/mcp/servers/voice-console/test → {"status":"ok","message":"connection successful"}
mcp:
    enabled: true
    servers:
        - name: voice-console
          command: python          # 白名单校验 basename ∈ {python,node,npx,uvx,...}
          args: ["-m", "voiceconsole"]
          transport: stdio

dsh-logtimeline 同为 stdio MCP server(薄 wrapper python/mcp_server.py,工具 log_query / parse_time),已同场实测:API 注册 → POST /v1/mcp/servers/dsh-logtimeline/test → {"status":"ok"}。

体系地图:https://anyuer678.github.io/yuer.dev/map

License

MIT

来源:GitHub · github.com