ALICE 是一个现代化的命令行 AI 助手,支持 Function Calling 工具调用。支持多种 LLM 后端(本地和云端),ALICE 可以帮助您:
- 💬 自然语言对话交互
- 🎨 优雅的终端界面设计
- 🚀 快速响应,流畅体验
- 🔒 支持本地部署,保护隐私
- ⚡ 轻量高效,开箱即用
- 🔄 智能降级,保障可用性
本仓库是一套完整的 Agent 产品体系,目前 VERONICA 与 ALICE 已上线运行;DIANA、ANDERS 仍在规划中。
| 名称 | 全称(英文) | 中文意涵 | 角色 | 状态 |
|---|---|---|---|---|
| VERONICA | Verified Embedded Resilient Orchestration Neural Intelligent Control Agent | 经验证的嵌入式弹性神经智能控制代理 | daemon 服务,常驻运行、会话与推理编排(veronica 命令管理) |
✅ 已上线 |
| ALICE | Accelerated Logic Inference Core Executor | 加速逻辑推理核心执行器 | 主 CLI(TUI + 一次性对话),与 VERONICA 配合(alice 命令) |
✅ 已上线 |
| DIANA | Dynamic Intelligent Accessible Networked Agent | 动态智能可及网络化代理 | 移动端 Agent,直接与用户快速沟通 | 📋 规划中 |
| ANDERS | Architectural Nexus Disciplined Engineering Reasoning System | 架构枢纽以及纪律化工程推理系统 | 架构师 Agent,专门用于处理复杂代码 | 📋 规划中 |
生产级 Ink/React TUI
- 🖥️ 完整移植 qwen-code TUI:复用 qwen-code 的生产级 Ink 6 + React 19 终端界面(429 文件),彻底替换原不稳定的 readline+chalk 方案
- 🔌 Shim 适配层:通过
src/shim/适配层将 qwen-code TUI 对接 Alice 的 daemon 后端,后端零修改 - ⚡ useAliceStream:全新流式适配器,将 Alice daemon 的
ChatStreamEvent无缝映射到 qwen-code TUI 的消息历史系统 - 🎨 功能丰富:代码高亮、Markdown 渲染、工具调用可视化、会话管理、Vim 模式、多主题等全部开箱即用
产品终局原则:从能力集合走向可信赖的 Code Agent 产品。 v3.1.2 将此前分散的 Analytics、Team、Voice 与 Plugin 能力接入真实用户入口,并为取消、超时、发布产物和测试安全建立可复现合同。
- 🛰️ Analytics:
/analytics(别名/otel)以 async stream 读取本地 OTEL JSONL,支持取消与读取上限,不再整文件载入内存 - 🤝 Team:
/team完成“consultant + researcher 并发 → bus/artifact → executor 计划 → reviewer”编排;worker 与普通 LLM 流均可随 HTTP/Unix Socket 断连取消 - 🧩 Plugin:
/plugins discover/install/list/invoke/uninstall完成本地 HMAC 签名插件闭环,权限deny/askfail closed,并发安装与会话 quota 重置均有真实入口回归 - 🎙️ Voice:
/voice status/start/stop提供诚实的受控降级;平台录音生命周期尚未产品化时不会伪报启动成功 - 🧪 统一验证:
bun run verify最终通过 30/30 个核心脚本、1085 PASS / 0 FAIL;release smoke 9/9、release contracts 5/5(168/0),并防止陈旧dist与测试写入真实 HOME
完整变更、边界和迁移说明见 release-notes/v3.1.2.md。
release-notes/v3.1.1.md的历史声明是 v3.1.0 基线 608 + P2 新增 565,共 1173 条断言 PASS;这是发布说明中的历史统计,不作为当前复现结果。当前统一 gate 基线为 30 个核心测试脚本、1085 PASS / 0 FAIL。
当前验证入口:
bun run typecheck→bun run test:core;最终结果为 30/30 脚本、1085 PASS / 0 FAIL。发布级合同入口为bun run verify:release final dist 仅构建 1 次并完成 smoke 9/9,#004 隔离矩阵 2 次,#005/#019/#020/#021 默认 dist 构建 0 次,release contracts 5/5、168/0;最终耗时约 27.0s。release contracts 只复用带本轮 nonce marker 的构建产物;core 执行前先阻断测试脚本对真实 HOME 派生路径的破坏性 I/O。
📋 P2 × 4 入口闭环(12 个 PR;产品边界见下)
| Issue | 标题 | PR 数 | PR 范围 |
|---|---|---|---|
| #18 (IK8MWZ) | OTEL 数据聚合为本地 dashboard | 1 | !17 aggregator + renderer |
| #14 (IK8MWV) | Multi-Agent Team | 5 | !18-!22 teamMessageBus / tool / executor+reviewer / concurrentAgentRunner / workspace |
| #16 (IK8MWX) | Voice 语音输入 | 4 | !23-!26 interface / whisper.cpp / VoiceProcessor / EnergyWakeWord |
| #17 (IK8MWY) | Plugin Marketplace | 3 | !27-!29 manifest+registry / Sandbox / Marketplace+签名+端到端 |
🔧 4 大新能力
- 🛰️ 本地 Analytics:
/analytics(别名/otel)读取本地 OTEL trace 并渲染统计,async stream 支持 abort 与 limits,已形成可验证本地闭环 - 🤝 Team staged orchestrator-relay:
/team已接通“调研并发 → bus/artifact → executor 计划 → reviewer”流程;这是编排器代 relay 的工作流,不宣称 worker 通过 teamMessage tool 互聊,也不直接替 worker 改文件 - 🎙️ Voice 受控降级:
/voice status/start/stop会探测并明确拒绝不可用启动;平台录音生命周期当前未接入,依赖就绪也不会假启动。flag 默认读取~/.alice/feature_flags.jsonc,可由ALICE_FEATURE_VOICE_MODE覆盖 - 🧩 本地签名插件:
/plugins discover/install/list/invoke/uninstall完成本地 HMAC 签名声明式插件闭环;不是远程 marketplace,也不是身份认证系统 ⚠️ 可信赖边界:Team worker 默认 120s timeout 且可取消;核心测试脚本默认 120s timeout;Voice 平台录音、Plugin 远程市场/身份认证仍不在当前产品承诺内。verify 的 release final dist 只构建一次,避免把重复构建误报为发布闭环
本 release 是 结构扩张 release,把 v3.0.1 路线图中的 P1 × 9 全部实现为可用代码。9 个 PR 合并入 main,608 断言全绿(168 基线 + 440 新增),
bun build.ts成功。
📋 P1 × 9 全部落地
| Issue | 标题 | PR | commit |
|---|---|---|---|
| #9 | Zod v4 运行时 Schema 校验 | PR !12 | 21092fa |
| #7 | Coordinator 多 Agent 编排(7 角色先行 2 个) | PR !14 | 46b6b60 |
| #8 | TeamMemorySync 跨端记忆同步(协议 + 本地 mock) | PR !15 | a1f2e72 |
| #11 | OpenTelemetry 三件套 + 可选 OTLP 出口 | PR !13 | 192fea1 |
| #12 | Token Budget 接通 TUI 状态栏 | PR #8 | (v3.0.1 后) |
| #13 | LSP 集成 · TypeScript Language Server 接入 | PR !16 | 4927c63 |
| #10 | ripgrep 子进程替换 glob 性能 | PR !11 | (v3.0.1 后) |
| #20 | karpathy-wiki-ingest bundled skill | PR !9 | (v3.0.1 后) |
| #21 | karpathy-wiki-lint bundled skill | PR !10 | 997903b |
🔧 重大架构变更
- ⚡ Zod v4 升级:
^3.23.8→^4(实际zod@4.4.3)。7 处既有import { z } from 'zod'保持 v3 兼容入口,新代码走zod/v4。5 个高频 builtin 工具切到 zod schema,toolResultFormatter新增formatError()输出字段路径错误,自修重试上限 2。低风险工具(getCurrentDateTime等)继续走 ajv JSONSchema。 - 📊 OpenTelemetry 三件套:
src/observability/{otelSDK, otlpConfig, spans}.ts。零 OTEL 全家桶依赖 —— 只硬引@opentelemetry/api ^1.9.1(平台无关),SDK 与 OTLP exporter 全自研。配置门控:enabled=false 零开销;启用后 < 1% overhead。trace 落~/.alice/otel/trace.jsonl(隐私过滤,不含 prompt 文本),OTLP HTTP 出口直接对接 Honeycomb / Datadog。 - 🤖 Coordinator 多 Agent 编排:
src/runtime/agent/coordinator/{agentProfile, profileRegistry, spawn, consultantRunner, researcherRunner}.ts+concurrentAgentRunner.ts+slashHandler.ts。7 profile 框架(consultant/researcher/executor/writer/reviewer/security/tester),4 个可 spawn ——/consult输出 5-8 条议题,/research命中~/.alice/memories/*.md;permissionGate 按 profile 收敛。 - 🧠 TeamMemorySync 协议 v1:
src/services/sync/{syncProtocol, localMock, teamMemorySync}.ts。teamId + memory payload + versionenvelope,本地 mock 落~/.alice/team-sync/staging/<teamId>.jsonl,24h 滚动 TTL。远程 endpoint(POST /v1/teams/{teamId}/memories:push+GET :pull)为 v4.0.0 预留。失败 warn-and-continue,不阻塞本地对话。 - 🌐 LSP 集成:
src/services/lsp/{stdioRunner, serverProcess, client, locationFormat, index}.ts+ 3 个 builtin 工具(lspGotoDefinition / lspFindReferences / lspDocumentSymbol)。JSON-RPC 协议跨 Bun/Node runtime,Content-Length 帧协议,SIGTERM 优雅回收。ts ls 缺失时给安装提示而非崩溃。stub server 在test-case/fixtures/lsp-stub-server.mjs(测试用)。 - 🦊 Token Budget 接通 TUI:
BudgetUsage类型 +getUsage()+budget_update事件流。第 8-10 轮起 Footer 显示[ctx 78%],nearCompletion触发"auto-compact 即将触发"提示。 - 🚀 ripgrep 替换 glob:
src/utils/ripgrepRunner.ts,searchFiles 优先走rg --files --glob,20k 文件级目录 ~800ms → ~50ms。无 rg 自动降级 glob。 - 🛠 3 个 builtin skill 全员到齐:
/karpathy-wiki-new(v3.0.1)、/karpathy-wiki-ingest、/karpathy-wiki-lint。lint 5 项检查(BROKEN/ORPHAN/NOSUMMARY/NOSTAMP/LOWLINKS)输出 SUMMARY 行机器可读。
🗺 路线图(按当前真实状态)
- ✅ v3.0.1 = P0 × 6(2026 Q3)
- ✅ v3.1.0 = P1 × 9(2026 Q4)
- ✅ v3.1.1 = P2 × 4 能力集合落地(2026-08-15)
- ✅ v3.1.2(当前 release) = 稳定入口、真实测试、取消链路与发布合同收官(2026-08-16)
- 🔮 后续周期 = worker tool 互聊、平台录音生命周期、远程插件市场/身份认证与更高等级发布验收
详见 release-notes/v3.1.2.md + release-notes/v3.1.1.md + release-notes/v3.1.0.md
上一 release。结构稳定性建立,P0 × 6 全部落地,4 条验收底线实测达成,
v3.0.1TAG 2026-08-14 补打。
📋 21 项 P0/P1/P2 行动清单
- 🎯 P0 × 6(全部已合并):#1 启动预取(冷启动 < 120ms,PR !2)/ #2 服务层补足(memory + compact,PR !3)/ #3 权限 5 mode(585 例决策,PR !4)/ #4 Feature Flag DCE(PR !5)/ #5 ★ Workspace Backend 收敛(已完成,PR !6 守卫) / #19 builtin-skill-new(PR !7)
- ✅ P1 × 9:见上方 v3.1.0 章节
- 🔮 P2 × 4 + #15 挂起:正式 P2 为 #14 Multi-Agent Team / #16 Voice / #17 Plugin Marketplace / #18 analytics;#15 remoteManagedSettings 独立挂起,不计入四项
- ❌ #6 IDE Bridge 按产品原则划掉
🛠 内置 Skills(本 release 全员到齐)
karpathy-wiki-new— 一键建 Karpathy Wiki 知识库脚手架(3 目录 + 6 模板)karpathy-wiki-ingest— 把 raw/ 编译为结构化 wiki 页面(#20 ✅)karpathy-wiki-lint— 知识库健康检查(5 项检查,#21 ✅)- 设计:bundled skill 由
BundledSkillLoader暴露 slash command,确定性执行器按需调用;权限与审计由调用方负责,见wiki/内置-Skills.md
🧹 Obsolete 清理(commit a104d85)
- 删除
QWEN.md+.github/copilot-instructions.md(同构第一规则,统一入口到AGENTS.md) CLAUDE.md删除航海日志相关 3 段,新增「资源使用 · 无限 Token 模式」段
详见 release_note.md + wiki/结构优化路线图.md
飞书通道与 VERONICA 网关
- 📡 飞书 WebSocket 长连接:无需公网 URL,本机直连飞书接收消息;支持文本与富文本(post)消息解析
- 🤖 默认通道:
defaultChannel: feishu时,daemon 启动即建立飞书长连接,veronica start后提示连接状态 - ⌨️ 敲键盘反馈:收到消息后在用户消息上加「敲键盘」reaction,处理完成后移除
- 🔁 消息去重:按
message_id去重,避免飞书重复推送导致回复两次 - 📄 网关设计详见 Veronica 通道网关设计
VERONICA 后台服务(veronica 命令)
- 常驻 daemon,负责会话、推理编排与通道网关(如飞书)
- 配置
~/.alice/daemon_settings.jsonc,支持defaultChannel、飞书 app_id/app_secret(或环境变量ALICE_FEISHU_APPID/ALICE_FEISHU_APP_SECRET)
veronica start # 启动(飞书通道连接成功后提示)
veronica stop # 停止
veronica status # 查看状态(含 defaultChannel、连接状态)
veronica restart # 重启并重新加载配置- 17 个内置工具(以
src/tools/builtin/index.ts的注册表为准): 文件操作、系统信息、命令执行、技能加载、任务清单、用户确认、多步推理与 LSP 导航readFile/writeFile/editFile- 读取、写入、按行编辑文件listFiles/searchFiles- 列出与搜索文件getCurrentDirectory/getGitInfo/getCurrentDateTime- 工作目录、Git 与时间信息executeCommand- 执行系统命令(带安全确认)ask_user- 请求用户确认或选择loadSkill- 按需加载技能指令TodoWrite/TodoRead- 写入与读取会话任务清单SequentialThinking- 多步推理lspGotoDefinition/lspFindReferences/lspDocumentSymbol- TypeScript LSP 导航
- 智能工具调用: AI 自动决定何时使用哪个工具
- 实时进度展示: 工具执行状态可视化
- 安全机制: 危险命令需要用户确认
- 跨平台支持: Windows/macOS/Linux 全平台兼容
- 多后端支持: 支持 LM Studio、Ollama、OpenAI 等多种 LLM 服务
- 智能降级: 主模型故障时自动切换到最快的备用模型
- 模型测速: 内置
--test-model工具,一键测试所有模型速度 - 提示词缓存: 支持 API 端的提示词缓存,降低成本提升速度
- 智能对话: 基于 LLM 的自然语言理解和生成
- 命令系统: 内置快捷命令,提升操作效率
- 历史记录: 支持上下箭头浏览历史输入
- 会话管理: 自动保存对话上下文,支持会话恢复
- 流式输出: 实时显示 AI 响应,支持中断
- 主题系统: 内置 2 个主题(tech-blue、ocean-dark),支持自定义主题
- 热重载: 修改主题配置文件后自动更新(无需重启)
- 可配置键绑定: 自定义快捷键映射(支持组合键)
- 会话恢复: 自动创建和保存会话,优雅的退出汇报显示
- 会话导出: 支持导出为 HTML(含样式)和 Markdown 格式
- 智能提问: AI 可以主动向用户提问以澄清任务
ALICE 采用 Anthropic 推荐的渐进式加载架构,按需加载技能,避免上下文窗口膨胀:
- Discovery(启动时): 扫描
~/.agents/skills/目录,仅提取每个技能的名称和描述(~100 tokens/skill),注入系统提示词 - Instruction(按需): 当用户请求匹配某技能时,AI 通过
loadSkill工具加载完整指令 - Resource(执行时): 技能附带的脚本和文件仅在实际执行时访问
默认内置 6 个技能(首次启动自动安装):
find-skills- 搜索和发现新技能obsidian-markdown/json-canvas/obsidian-bases/obsidian-cli- Obsidian 笔记集成skill-creator- 创建自定义技能
安装更多技能:
npx skills add <source> --skill <name> -g
npx skills find # 交互式搜索ALICE 支持通过 MCP 连接外部工具服务器,大幅扩展能力:
- 独立配置文件
~/.alice/mcp_settings.jsonc
- 🎭 炫酷的启动 Banner 动画
- 🌈 主题化彩色设计(可自定义)
- 📊 清晰的信息层级展示
- ⚡ 流畅的打字机效果
直接从 Releases 页面 下载适合您系统的版本:
| 操作系统 | 下载文件 | 说明 |
|---|---|---|
| Windows x64 | alice-win-x64.zip |
适用于 64 位 Windows |
| macOS Intel | alice-macos-x64.tar.gz |
适用于 Intel 芯片 Mac |
| macOS Apple Silicon | alice-macos-arm64.tar.gz |
适用于 M1/M2/M3 Mac |
| Linux x64 | alice-linux-x64.tar.gz |
适用于 64 位 Linux |
Windows 用户:
# 解压后直接运行
.\alice.exemacOS / Linux 用户:
# 解压
tar -xzf alice-*.tar.gz
# 添加执行权限
chmod +x alice-*
# 运行(可选:移动到系统路径)
sudo mv alice-* /usr/local/bin/alice
# 直接运行
alice- Bun: ≥ 1.0.0(构建工具链;
bun install/bun run build) - Node.js: ≥ 18.0.0(运行 dist 产物)
- LM Studio: 用于本地运行大语言模型
- 下载地址: https://lmstudio.ai/
- 启动本地服务器(默认端口 1234)
# 克隆仓库
git clone https://github.com/AndersHsueh/Alice.git
cd Alice
# 安装依赖
bun install# 启动开发服务(支持键盘输入)
bun run dev
# 跳过启动动画
bun run dev -- --no-banner
⚠️ 注意: 不要使用bun run dev:watch进行交互测试,该模式会拦截 stdin,导致无法接收键盘输入。
# 编译 TypeScript
bun run build
# 运行生产版本
bun start启动 ALICE 后,您可以使用以下命令:
| 命令 | 说明 |
|---|---|
/help |
显示帮助信息 |
/clear |
清空对话历史 |
/config |
查看当前配置 |
/theme [name] |
查看/切换主题 |
/export [html|md] [filename] |
导出对话为 HTML 或 Markdown |
/quit |
退出 ALICE(显示退出汇报) |
Ctrl+C |
强制退出 |
| 参数 | 说明 |
|---|---|
--no-banner |
跳过启动动画 |
--test-model |
测试所有配置的模型并显示速度排名 |
# 跳过启动动画
alice --no-banner
# 测试所有模型速度
alice --test-modelALICE 支持 Function Calling,AI 可以自动调用工具完成任务:
# 示例 1: 查询时间
> You: 现在几点了?
[⏰ 获取当前时间] 正在执行...
[✅ 获取当前时间] 执行成功
Alice: 现在是 2026 年 2 月 10 日 21:40,星期二。
# 示例 2: 搜索文件
> You: 这个项目有多少个 TypeScript 文件?
[🔍 搜索文件] 正在搜索 **/*.ts...
[🔍 搜索文件] 找到 25 个文件
Alice: 项目中共有 25 个 TypeScript 文件,主要分布在 src/core、src/ui 等目录。
# 示例 3: 读取文件
> You: 帮我看看 package.json 的内容
[📄 读取文件] 正在读取 package.json...
[✅ 读取文件] 文件读取成功 (1024 bytes)
Alice: 你的项目名称是 alice-cli,版本 0.5.0,主要依赖包括...
# 示例 4: 危险命令(需确认)
> You: 删除 node_modules 文件夹
[⚠️ 危险命令警告]
命令: rm -rf node_modules
确认执行? (y/N): y
[🔧 执行命令] 执行中...
[✅ 执行命令] 命令执行完成
Alice: node_modules 已删除,你可以运行 bun install 重新安装依赖。编辑 ~/.alice/settings.jsonc 中的 dangerous_cmd 字段:
配置文件位于 ~/.alice/settings.jsonc(支持注释的 JSON 格式):
{
// 默认使用的模型
"default_model": "lmstudio-local",
// 系统推荐的最快模型(由 --test-model 自动更新)
"suggest_model": "lmstudio-local",
// 多模型配置列表
"models": [
{
"name": "lmstudio-local",
"provider": "lmstudio",
"baseURL": "http://127.0.0.1:1234/v1",
"model": "qwen3-vl-4b-instruct",
"apiKey": "",
"temperature": 0.7,
"maxTokens": 2000,
"last_update_datetime": null,
"speed": null
},
{
"name": "ollama-local",
"provider": "ollama",
"baseURL": "http://localhost:11434/v1",
"model": "qwen2.5:7b",
"apiKey": "",
"temperature": 0.7,
"maxTokens": 2000,
"last_update_datetime": null,
"speed": null
},
{
"name": "openai-gpt4",
"provider": "openai",
"baseURL": "https://api.openai.com/v1",
"model": "gpt-4",
"apiKey": "${OPENAI_API_KEY}", // 从环境变量读取
"temperature": 0.7,
"maxTokens": 2000,
"last_update_datetime": null,
"speed": null
}
],
// UI 配置
"ui": {
"banner": {
"enabled": true,
"style": "particle"
},
"theme": "tech-blue"
},
// 主题系统(支持自定义主题在 ~/.alice/themes/)
"theme": "tech-blue",
// 键绑定配置
"keybindings": {
"quit": ["ctrl+d", "ctrl+c"],
"submit": ["enter"],
"clear": ["ctrl+u"],
"history_up": ["up"],
"history_down": ["down"]
},
// 提示词缓存(true: 云端缓存 | false: 本地)
"promptCaching": true,
// 工作区配置
"workspace": ".",
// 危险命令确认(true: 执行前需确认 | false: 直接执行)
"dangerous_cmd": true,
// 工具调用最大迭代次数(最小 5,最大 20,超出范围默认 10)
"maxIterations": 10
}ALICE 使用插件式 Provider 系统,支持以下提供商:
| 提供商 | provider 值 | 说明 | Function Calling |
|---|---|---|---|
| LM Studio | lmstudio |
本地运行,默认端口 1234 | ✅ |
| Ollama | ollama |
本地运行,默认端口 11434 | ✅ |
| OpenAI | openai |
GPT-4/3.5,支持提示词缓存 | ✅ |
| Anthropic | anthropic 或 claude |
Claude 3.5/3,长上下文 | ✅ |
google 或 gemini |
Gemini 1.5/2.0,多模态 | ✅ | |
| Mistral | mistral |
Mistral Large/Medium | ✅ |
| Azure OpenAI | azure |
Azure 托管的 OpenAI | ✅ |
| 自定义 | custom |
任何兼容 OpenAI API 的服务 | ✅ |
新特性:
- 🔌 插件式注册,可动态添加新 Provider
- 📊 内置模型元数据(定价、能力、上下文窗口)
- ⚙️ 细粒度配置(每个 Provider 独立配置)
为了安全,建议将 API Key 存储在环境变量中:
# macOS / Linux
export OPENAI_API_KEY="sk-xxxxx"
export ANTHROPIC_API_KEY="sk-ant-xxxxx"
export GOOGLE_API_KEY="xxxxx"
export MISTRAL_API_KEY="xxxxx"
export AZURE_OPENAI_KEY="xxxxx"
# Windows
set OPENAI_API_KEY=sk-xxxxx
set ANTHROPIC_API_KEY=sk-ant-xxxxx在配置文件中使用 ${VAR_NAME} 格式引用环境变量:
{
"apiKey": "${OPENAI_API_KEY}"
}部分 Provider 支持额外配置:
{
"name": "claude-sonnet",
"provider": "anthropic",
"model": "claude-3-5-sonnet-20241022",
// Anthropic 特有配置
"providerConfig": {
"anthropic": {
"anthropicVersion": "2023-06-01",
"topK": 40
}
}
}{
"name": "gemini-pro",
"provider": "google",
"model": "gemini-1.5-pro",
// Google 特有配置
"providerConfig": {
"google": {
"safetySettings": [
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
}
]
}
}
}ALICE 内置智能降级功能:
- 当
default_model连接失败时,自动切换到suggest_model suggest_model由--test-model命令自动选择最快的模型- 降级时会显示友好提示,建议用户重新测速
⚠️ 主模型 (openai-gpt4) 连接失败,已自动切换到备用模型 (ollama-local)
💡 提示:运行 'alice --test-model' 重新测速并更新推荐模型
系统提示词位于 ~/.alice/system-prompt.txt,您可以自定义 AI 的行为和角色。
- 运行时: Node.js (ESM)
- 语言: TypeScript
- UI 框架: Ink (React for CLI)
- HTTP 客户端: Axios
- 终端美化: chalk, figlet, gradient-string
目录与模块职责详见根目录 DEVELOPMENT_STRUCTURE.md,以下为简要结构:
alice-cli/
├── src/
│ ├── index.tsx # 入口文件(TUI 模式 + -p 一次性模式)
│ ├── ui/ # qwen-code TUI(Ink 6 + React 19,完整复用)
│ │ ├── AppContainer.tsx # 主 TUI 容器
│ │ ├── components/ # 终端 UI 组件(消息、工具调用、对话框等)
│ │ ├── hooks/ # TUI 专用 Hooks
│ │ ├── contexts/ # React Context(按键、会话、主题等)
│ │ ├── commands/ # /help /model /clear 等斜杠命令
│ │ └── themes/ # 内置主题
│ ├── shim/ # 适配层(qwen-code → Alice daemon)
│ │ ├── qwen-code-core.ts # @qwen-code/qwen-code-core 类型桩
│ │ └── hooks/
│ │ └── useAliceStream.ts # 替代 useGeminiStream,接入 DaemonClient
│ ├── daemon/ # VERONICA 后台服务
│ ├── core/ # 核心逻辑(命令注册、扩展等)
│ ├── tools/ # 工具系统(builtin、executor、MCP 等)
│ ├── utils/ # 工具函数(daemonClient、config 等)
│ ├── types/ # 全局类型定义
│ └── scripts/ # 独立脚本(test-model 等)
├── dist/ # 构建输出
└── package.json
- 主色调: 科技蓝 (#00D9FF)
- 辅助色: 渐变紫 (#B030FF → #00D9FF)
- 设计原则: 极简、现代、高效
- ⚡ 快速响应,避免卡顿
- 💡 清晰的状态反馈
- 🎯 直观的错误提示
- ⌨️ 完善的键盘操作
本项目使用 ESM 模块,注意事项:
// ✅ 导入时必须包含 .js 扩展名
import { foo } from './utils.js';
// ❌ 错误的导入方式
import { foo } from './utils';# 查看详细日志
DEBUG=* bun run dev
# 清理构建产物
bun run clean- 使用 async/await 处理异步操作
- 组件文件使用
.tsx,逻辑文件使用.ts - 遵循 TypeScript 严格模式
- 函数组件优先,使用 React Hooks
- 基础聊天界面
- LLM API 集成
- 启动 Banner 动画
- 命令历史记录
- 配置管理系统
- 多 LLM 后端支持(LM Studio、Ollama、OpenAI 等)
- 智能降级机制
- 模型测速工具(--test-model)
- 提示词缓存支持
- 主题系统(内置 2 个主题,支持热重载)
- 键绑定系统(可配置快捷键)
- 会话导出(HTML/Markdown)
- 智能提问(ask_user 工具)
- 会话恢复基础(自动创建/保存会话,退出汇报)
- 流式输出优化(完整版)
- 会话树结构(JSONL + 分支支持)
- LLM 抽象层优化(更多提供商)
- 工具拦截机制(事件驱动)
- 完整的会话恢复(--continue/--resume/--session 参数)
- 组件化 UI 架构(5 个内置组件)
- MCP (Model Context Protocol) 支持
- Skills 技能系统(三阶段渐进式加载)
- 工具调用迭代次数可配置
- Overlay 系统(浮层组件)
- 扩展系统(Extension API)
- sudo 密码管理
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用木兰宽松许可证第2版(MulanPSL2) - 详见 LICENSE 文件
- Anthropic - 技能渐进式加载(Discovery → Instruction → Resource)等设计思想参考
- qwen-code - TUI 层完整复用(Ink 6 + React 19 终端界面),并通过 shim 适配层对接 Alice daemon 后端
- OpenClaw - 飞书等通道的网关设计参考(长连接、无需公网)
- Ink - 优秀的 CLI UI 框架
- LM Studio - 本地大语言模型运行环境
- GitHub Copilot - 设计灵感来源
- 作者: Anders
- 项目地址: https://github.com/AndersHsueh/Alice
- 问题反馈: Issues

{ // true: 危险命令需要确认 (默认,推荐) // false: 直接执行,不需要确认 "dangerous_cmd": true }