Skip to content

Repository files navigation

🥜 NutCode

轻量级 AI 编码助手 · Bun + SolidJS + OpenTUI

NutCode 是一个桌面级 TUI 的终端 AI 编码代理:可点击的弹窗、鼠标拖动滚动条、焦点路由、键位映射系统 —— 全部由 OpenTUI 的 Zig 原生核心驱动。

特性

  • 列表项、弹窗、超链接的命中测试(clickable)
  • 滚动条、文本选区的鼠标拖拽
  • SolidJS 声明式 JSX 渲染
  • 一行命令编译成单文件可执行:bun build --compile

快速开始

cd E:\project\nutcode
bun install

# 设置凭据
export NUT_BASE_URL="https://token-plan-cn.xiaomimimo.com/v1"
export NUT_API_KEY="..."
export NUT_MODEL="mimo-v2.5"

# 直接运行 TUI(bunfig preload 已配置 JSX 实时转换,无需 build)
bun run dev

# 文件改动自动重启
bun run dev:hot

# 或编译成单文件 exe
bun run compile       # → nutcode.exe

首次运行会写入 ~/.nutcode/config.json(兼容旧 ~/.nutcli/config.json)。TUI 路径需要真实 TTY;管道输入会自动回退到 REPL。

架构

模块 职责
src/llm/ OpenAI 兼容 HTTP + SSE 客户端(零外部依赖)
src/provider/ 适配器模式:openai(通用)+ mimo(thinking)
src/agent/ 事件流 Agent,多轮 ReAct,工具调用按 index 合并
src/tools/ 14 个工具(文件 × 6、shell、web × 2、git × 4、ask_user)+ 注册表 + 权限
src/config/ ~/.nutcode/config.json + 环境变量合并
src/i18n/ zh-CN / en-US,自动检测系统语言
src/plugins/ 插件注册表(mcp / skill)扫描
src/index.tsx TTY → OpenTUI JSX 渲染器;非 TTY → stdin REPL

命令

cd E:\project\nutcode

# 真实 LLM 模式(需要 NUT_API_KEY / NUT_BASE_URL / NUT_MODEL)
bun run dev

# 离线 TUI 演示 —— 无需 API key
bun run demo                # 交互式 TUI(在 TTY 里跑)
bun run demo:auto           # 自动播放预设对话
bun run demo:text           # 纯文本快照(headless 看效果)

TUI 内置命令

命令 作用
/exit / /quit 退出(Ctrl+C 同效,会清屏打印 session epilog)
/clear 清空对话(Ctrl+L 同效)
/help 弹出帮助对话框
/lang zh-CNen-US 切换界面语言(同时切换 AI 回复语言)
esc busy 时取消当前操作;非 busy 时打开/关闭帮助
单击页面任意位置 把焦点收回到输入框

验证

bun run smoke-client.ts        # SSE 解析
bun run smoke-agent.ts         # Agent 事件流:chunk | tool_call | tool_result | done
bun run smoke-file.ts          # 6 个文件工具 + 路径保护
bun run smoke-shell-web.ts     # shell + web_fetch + web_search + ask_user(真实网络)
bun run smoke-git.ts           # 4 个 git 工具在临时仓库中验证
bun run smoke-glob.ts          # glob 跨目录
bun run smoke-agent-react.ts   # ReAct:tool_call → tool_result → 第二轮
bun run smoke-all-tools.ts     # 14 工具全注册 + 端到端
bun run build                  # JSX → JS bundle
bun run scripts/run-jsx.ts smoke-tui-jsx.tsx  # TUI JSX snapshot
bun run demo:text              # Headless TUI 文本快照

进度

  • Phase 1 ✅ 输入 → 流式 → 渲染
  • Phase 2 ✅ 14 工具、完整 ReAct 循环、注册表 + 权限 + 超时
  • Phase 3 ✅ JSX(@opentui/solid/bun-plugin)、弹窗、scrollbox、帮助、slash 命令路由

路线图

  • Phase 4 — 命令面板、鼠标交互(hit-testing)、session 持久化、主题切换

About

🥜 轻量级 AI 编码助手 · Bun + SolidJS + OpenTUI

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages