Vynth
你 terminal 里的代码合成器 —— 本地优先的单二进制 TUI AI 编程工具,多智能体协作 + 安全沙箱 + 插件可扩展。
Vynth 是一个 AI-Native Coding Terminal,支持 Plan(先规划再动手)与 Vibe(边聊边写)双模式,把自然语言目标「合成」为代码改动。纯 TypeScript 全量构建,通过 bun build --compile 打包为单个 dist/vynth 二进制,开箱即用。
核心功能
| 功能 | 说明 | 状态 |
|---|---|---|
| 单二进制启动 | Bun compile 打包,无 node_modules,无外部 wasm | ✅ MVP |
| 双模式 TUI | 交互式 ANSI 终端 / 无头 agent 流式输出 | ✅ MVP |
| Agent 循环 | 流式 token + tool_calls + 回填,默认 maxSteps=8 | ✅ MVP |
| 内置工具 | read_file / write_file / run_shell,经 sandbox 越界守卫 | ✅ MVP |
| LLM 默认对齐 | DeepSeek 端点 + deepseek-v4-pro,OpenAI 兼容 SSE |
✅ MVP |
| 插件无头接入 | -p/--plugin 动态加载,工具注册表热扩展 |
✅ MVP |
| 沙箱守卫 | safeResolve 路径越界拦截 + VYNTH_NET 联网开关 | ✅ MVP |
| MCP 客户端 | stdio JSON-RPC,已就绪待接入 CLI | ⏳ 完整版 |
| TUI 内插件 | 交互界面内插件加载与渲染 | ⏳ 完整版 |
| OS 级硬隔离 | bubblewrap/seatbelt 进程级沙箱 | ⏳ 完整版 |
快速上手
# 1. 克隆仓库
git clone [email protected]:Agions/vynth.git && cd vynth
# 2. 安装依赖
bun install
# 3. 编译单二进制
bun run compile
# 4. 设置 API Key 并运行
export VYNTH_API_KEY="sk-..."
./dist/vynth -g '给当前目录写一份 README.md'
# 5. 启动交互 TUI(需真实终端)
./dist/vynth
实测基线:单二进制 60.51 MB;冷启动 P95 = 30.5 ms(远低于 150 ms 基线)。
安装
前置要求
- Bun >= 1.1(运行时 + 打包)
- Node.js >= 18(仅用于
biome/turbo等辅助工具,非运行时依赖) - Git(克隆仓库)
从源码编译
git clone [email protected]:Agions/vynth.git
cd vynth
bun install
bun run compile
直接使用二进制
# 下载预编译二进制(即将发布)
# 或通过 bun link 全局安装
bun link
配置
Vynth 仅通过环境变量 配置,不读取任何配置文件。
| 变量 | 作用 | 默认值 | 必填 |
|---|---|---|---|
VYNTH_API_KEY |
LLM API Key | 空 | 是 |
VYNTH_MODEL |
模型名 | deepseek-v4-pro |
否 |
VYNTH_LLM_BASE_URL |
OpenAI 兼容端点 | https://api.deepseek.com/v1 |
否 |
VYNTH_MODE |
运行模式 | vibe |
否 |
VYNTH_THEME |
TUI 主题 | mocha |
否 |
VYNTH_NET |
联网开关 | 开启 |
否 |
VYNTH_DATA_DIR |
数据目录 | ~/.vynth |
否 |
# 示例:接入 DeepSeek + 禁用联网
export VYNTH_API_KEY="sk-..."
export VYNTH_MODEL="deepseek-v4-pro"
export VYNTH_NET="0"
./dist/vynth -g '重构 utils 目录下的工具函数'
使用示例
无头模式(CI / 管道 / 脚本)
# 直接输出到 stdout,适合管道
./dist/vynth -g '给 src/core 写单元测试' > output.md
交互 TUI
# 启动全屏 TUI(需 TTY)
./dist/vynth
# 指定模式
./dist/vynth -m plan '设计用户认证模块'
加载插件
# 加载本地插件
./dist/vynth -g '使用自定义工具' -p packages/plugins/examples/hello-plugin.ts
目录结构
vyntoh/
├── apps/
│ └── cli/ # CLI 入口(bin: vynth)
├── packages/
│ ├── core/ # 共享类型 / 配置 / 错误 / 事件总线 / 日志
│ ├── engine/ # LLM 客户端 + 工具系统 + agent 循环
│ ├── tui/ # 轻量 ANSI 渲染器 + 主题 + 逃生舱
│ ├── sandbox/ # fs 越界守卫 + 命令执行 + 网络开关
│ ├── mcp/ # MCP 客户端(stdio JSON-RPC)
│ ├── plugins/ # 插件加载 / 生命周期
│ └── harness/ # 集成测试 / e2e 驱动
├── docs/ # 项目文档
├── delivery/ # 架构交付物归档
├── dist/ # 编译输出
├── scripts/ # 开发 / 基准测试脚本
├── package.json
├── pnpm-workspace.yaml
├── turbo.json
└── biome.json
贡献指南
欢迎贡献!请阅读 贡献指南 了解:
- 开发环境搭建
- 分支模型与 Conventional Commits
- 测试策略(
bun test) - CI 流水线与质量闸门
- 安全红线(密钥扫描、体积门禁)
开源许可证
MIT © 2026 Agions
文档导航
| 文档 | 面向人群 | 说明 |
|---|---|---|
| 快速开始 | 新用户 | 安装、编译、真实链路、插件 |
| 配置详解 | 新用户 / 高级用户 | 环境变量完整说明与最佳实践 |
| 插件开发 | 插件开发者 | 插件 manifest、生命周期、工具注册 |
| 架构总览 | 架构师 / 贡献者 | 模块关系、数据流、关键不变量 |
| Package 职责 | 贡献者 | 各 @vynth/* 包职责与关键文件 |
| API 参考 | 用户 / 开发者 | CLI 参数、环境变量、退出码 |
| 开发规范 | 贡献者 | 分支模型、代码规范、安全红线 |
| 贡献指南 | 贡献者 | 提交流程、PR 规范、评审标准 |
| 测试指南 | 贡献者 | 测试策略、基准测试、覆盖率 |
| FAQ | 所有用户 | 常见问题与故障排查 |
| 变更日志 | 所有用户 | 版本历史与迁移指南 |
No comments yet
Be the first to share your take.