lvxcode

lvxcode

终端里的本地 AI 编程代理 —— 多模型供应商、工具调用、内置网关、零依赖全屏 TUI。 目标是把 opencode 的界面与能力尽量还原。

v0.1.0·开发中·Linux / Windows / macOS(终端)·可编译为 .lvx

当前为源码构建(CMake),暂无预编译安装包。

功能

一个 C++20 从零写起的 agent:供应商层 + 工具 / function calling + 本地网关 + 全屏 TUI。

多模型供应商

内置三种协议实现,同一个 Provider 接口,上层完全不感知差异。

  • OpenAI 协议:DeepSeek、Moonshot、通义、Groq、Ollama、vLLM 等
  • Anthropic(/v1/messages)与 Gemini(streamGenerateContent)原生实现
  • 命令行 > 环境变量 > 配置文件三级覆盖,配置存于 ~/.lvxcode/config.json

工具调用

模型通过 function calling 驱动本地工具,结果回填 prompt 多轮循环。

  • 内置 read / write / edit / glob / grep / bash / todo / current_time
  • 工具沙箱限制在工作区根目录内,越界路径一律拒绝
  • write / edit 记录 before/after,随时输出 unified diff

零依赖全屏 TUI

纯手写 ANSI + termios,不依赖 ncurses,渲染是增量的。

  • 界面只写一遍,终端 TUI 与 LVX 画布前端共用同一份布局
  • 命令注册表驱动斜杠列表、ctrl+p 命令面板与 ctrl+x leader 快捷键
  • truecolor 主题:lvx-dark / catppuccin / monokai / zenburn / light

内置网关

网关是内部 API(非 OpenAI 兼容),Agent 循环跑在服务端。

  • 默认 127.0.0.1:4100,TUI 只是它的一个客户端
  • SSE 事件流:delta / usage / tool_call / tool_result / permission / done / error
  • 会话持久化、变更追踪、任务清单都在网关侧统一管理

权限门

写类工具必须经客户端批准,网关阻塞等待,超时即拒绝。

  • 只读工具(read / glob / grep)自动放行
  • write / edit / bash 弹窗确认:Allow once / Allow always / Reject
  • Allow always 写回配置,重启后仍然生效

跑在 LVX 上

最终形态是 .lvx 容器,跑在 LVX 运行时上,而不只是桌面程序。

  • 可移植内核与平台解耦:无异常 / 无线程 / 无 socket
  • 由 lvx build 以 clang --target=wasm32-wasi 编译为 platform=lvxb
  • 画布界面、宿主存储、本地推理、键盘输入都已在 LVX 上跑通

使用须知

lvxcode 是一个会读写文件、执行命令的本地 agent,请先了解以下几点。

请注意
  • 需要自备 API Key:软件不内置任何 Key,也不代收费用,API 费用由所选模型供应商收取。
  • 写类工具会改动你的文件:write / edit / bash 仅在你批准后执行;重要目录请勿无脑 Allow always。
  • 工具沙箱在工作区内:任何逃出工作区根目录的路径(../、绝对路径、符号链接)都会被拒绝。
  • 模型输出可能有误:AI 生成内容请自行甄别,工具执行结果以实际为准。
  • 开发中版本:接口与行为仍可能变化。

获取

目前从源码构建。需要 C++20 编译器与 CMake(网络层用系统 libcurl,JSON 用 nlohmann/json,其余零依赖)。

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
./build/lvxcode            # 起网关 + 进 TUI
./build/lvxcode gateway    # 只跑网关
ctest --test-dir build --output-on-failure   # 14 个离线测试套件
目标产物构建方式
Linux 桌面 build/lvxcode CMake + 任一 C++20 编译器
Windows 桌面 build/lvxcode.exe 同上(MSVC / clang-cl)
LVX 运行时 *.lvx(platform=lvxb) lvx build(clang --target=wasm32-wasi)

重建后入口软链 ~/.local/bin/lvxcode 即最新;数据目录是 ~/.lvxcode(可用 LVXCODE_HOME 覆盖)。
常用命令:lvxcode --show-config 查看当前配置,lvxcode --list-models 列出供应商模型。

更新日志

开发中,以下为主要里程碑。

2026-09-27
LVX 目标打通真实核心源码在 LVX 运行时上编译并运行:画布界面、宿主存储、本地推理、键盘输入全部接入,lvxapp 已是能真正跑 Agent 的完整形态。
2026-09-20
权限门与 TUI 打磨点击式权限对话框(Allow always 持久化,超时=拒绝);斜杠列表、命令面板与快捷键统一到命令注册表;增量渲染与主题自动降级。
2026-09-12
网关与三种协议内置 HTTP 网关、Agent 循环服务端化;OpenAI / Anthropic / Gemini 三协议实现同一个 Provider 接口,SSE 流式与工具调用打通。
2026-09-05
项目起步以 C++20 重写 opencode 的界面与功能,核心 / 平台分层(可移植内核 + 桌面外壳 + LVX 外壳)。