UniCode 是一款终端 AI 编程助手,支持交互式 TUI 和管道模式。
最大特点:无需注册任何账号,可接入任何兼容的模型——无论是跑在本机的 Ollama,还是国内的 AnyRouter、DMXAPI,抑或海外的任何服务。
unicode # 启动交互式 TUI
unicode -p "帮我重构这段代码" # 管道模式,输出后退出UniCode 内置子智能体调度系统,可将复杂任务拆分为多个并行子任务同时执行,大幅提升完成效率。
主智能体
├─ 子智能体 A:分析前端代码
├─ 子智能体 B:分析后端接口
└─ 子智能体 C:检查测试覆盖率
适合:大型代码库重构、跨模块联动分析、并发执行多个独立任务。
长对话不会因 Token 耗尽而中断。UniCode 支持多级上下文压缩策略:
- 自动压缩:接近上下文窗口上限时,自动将历史对话摘要化,保留关键信息
- 微粒度压缩:对局部历史进行细粒度精简,不丢失代码上下文
- 手动触发:
/compact命令随时压缩,释放 Token 空间继续工作
UniCode 拥有完整的工具体系,且支持多工具并行调用,减少等待时间:
| 工具 | 说明 |
|---|---|
| Bash | 执行终端命令,支持交互确认 |
| FileEdit / FileWrite | 直接读写编辑文件,展示 diff 预览 |
| WebSearch / WebFetch | 搜索网页、抓取页面内容 |
| NotebookEdit | 编辑 Jupyter Notebook 单元格 |
| Git | diff、commit、push、创建 PR |
在项目根目录放置 CLAUDE.md,UniCode 每次启动时自动读取,无需重复交代背景:
# 项目规范
- 使用 TypeScript strict 模式
- 所有 API 调用必须加错误处理
- 提交信息遵循 Conventional Commits支持多层目录的记忆文件,自动合并全局 + 项目 + 子目录规范。
每次执行危险操作前,UniCode 会请求确认,你可以:
- 单次允许:仅本次执行
- 本会话允许:本次启动期间不再询问
- 永久允许:写入配置,下次不再提示
--dangerously-skip-permissions:自动化脚本场景跳过所有确认
启动时检测本地服务
├─ 在线 → 使用本地模型(数据不出内网)
└─ 离线 → 自动切换云端 API
适合日常连公网时用云端模型,断网/内网环境自动降级到本地模型。
- Bun 1.3.11+
- Node.js 18+(运行时)
git clone https://github.com/HUANGYming/unicode.git
cd unicode
npm installchmod +x build.sh
./build.sh生成 dist/cli.cjs。
编辑项目根目录的 unicode 脚本:
# ── 远程 API(云端)──────────────────────
REMOTE_BASE_URL="https://anyrouter.top"
REMOTE_MODEL="claude-haiku-4-5-20251001"
REMOTE_API_KEY="your-api-key-here"
# ── 本地模型(离线)──────────────────────
LOCAL_BASE_URL="http://localhost:4000"
LOCAL_MODEL="deepseek-v3"
LOCAL_API_KEY="dummy"echo 'alias unicode="/path/to/unicode/unicode"' >> ~/.zshrc
source ~/.zshrcunicode # 交互式 TUI
unicode -p "你好" # 快速提问适合代码需要保密的场景,所有数据留在内网。
ollama pull qwen2.5-coder:32b
pip install litellm[proxy]
litellm --model ollama/qwen2.5-coder:32b --port 4000或使用项目自带多模型配置:
litellm --config litellm-config.yaml --port 4000python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-Coder-32B-Instruct \
--port 8000
litellm --model openai/Qwen2.5-Coder-32B-Instruct \
--api_base http://localhost:8000/v1 --port 4000| 提供商 | Base URL | 特点 |
|---|---|---|
| AnyRouter | https://anyrouter.top |
国内直连,Claude 全系列 |
| DMXAPI | https://www.dmxapi.com |
国内直连,按量计费 |
| Anthropic 官方 | https://api.anthropic.com |
需要官方账号 |
| 提供商 | 推荐模型 | 特点 |
|---|---|---|
| SiliconFlow | Qwen2.5-Coder-32B | 国内,有免费额度 |
| DeepSeek | deepseek-coder-v2 | 编码极强,价格极低 |
| 阿里云百炼 | qwen-coder-turbo | 企业级稳定 |
unicode # 自动模式:本地优先,不可用则走远程
unicode --local # 强制使用本地模型
unicode --remote # 强制使用远程 API
unicode -p "问题" # 非交互模式(适合脚本/管道)
unicode --model <name> # 指定模型名称
unicode --dangerously-skip-permissions # 跳过权限确认构建工具: esbuild(通过 Bun 调用)
输出格式: CommonJS (dist/cli.cjs)
运行时: Bun 1.3.11+
Node.js: 18+
build.sh 做了两件事:
- esbuild 打包整个 TypeScript 源码
- 运行时补丁:修复错误被静默吞掉的问题
.
├── src/
│ ├── components/ # React + Ink 终端 UI 组件
│ ├── services/ # 核心逻辑(API、会话、上下文压缩、工具执行)
│ ├── tools/ # Bash、文件、搜索、Git、子智能体等工具
│ ├── stubs/ # 原生 NAPI 模块的 TS 桩实现
│ └── utils/ # 认证、权限、配置等工具函数
├── build-esbuild.ts
├── build.sh
├── unicode # 启动脚本
├── litellm-config.yaml
└── dist/cli.cjs
本项目包含第三方软件代码,相关版权归原始版权持有人所有。本项目不代表任何原始版权持有人的官方立场,不用于商业用途,仅供个人学习与研究。
- ponponon/claude_code_src — 源码还原工作