Skip to content

AndersHsueh/Alice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ALICE Banner

ALICE-CLI

🤖 ALICE - 基于大语言模型的智能办公助手

Version License Node

📖 简介

ALICE 是一个现代化的命令行 AI 助手,支持 Function Calling 工具调用。支持多种 LLM 后端(本地和云端),ALICE 可以帮助您:

  • 💬 自然语言对话交互
  • 🎨 优雅的终端界面设计
  • 🚀 快速响应,流畅体验
  • 🔒 支持本地部署,保护隐私
  • ⚡ 轻量高效,开箱即用
  • 🔄 智能降级,保障可用性

✨ 特性

🚀 v0.3.0 新功能

Skills 技能系统 (#7)

  • 🧠 三阶段渐进式加载(Discovery → Instruction → Resource)
  • 📦 6 个默认技能自动安装(obsidian-markdown、skill-creator 等)
  • 🔍 按需加载,避免上下文窗口膨胀
  • 🛠️ loadSkill 工具供 AI 按需调用

MCP 支持 (#6)

  • 🔌 Model Context Protocol 客户端
  • 📡 最多 3 个 MCP 服务器同时连接
  • 🌐 默认内置 fetch MCP 服务器
  • 🔧 独立配置文件 ~/.Alice/mcp_settings.jsonc

组件化 UI (#14)

  • 🎨 5 个可复用 UI 组件(Markdown、SelectList 等)
  • 📦 barrel export 统一导出

UI/显示优化

  • 🎯 AI输出空行压缩 - 减少多余空行,优化显示区域 (#34)
  • 🔇 屏幕闪烁优化 - Header使用ink <Static> 组件只渲染一次 (#35)
  • 💭 思考内容区分 - <think> 标签内容以灰色显示,与正文区分
  • 📊 表格渲染优化 - 使用React组件替代cli-table3,支持CJK字符宽度
  • 🏷️ 聊天标签优化 - 用户输入用 > 前缀,AI回复用 Alice: 前缀,内容内联显示
  • 📺 模型信息完整显示 - Header显示完整 provider/model 格式

其他改进

  • ⚙️ maxIterations 可配置(工具调用最大迭代次数)
  • 🔧 ajv-formats 支持 MCP schema 格式验证

🚀 v0.2.0 新功能

LLM 抽象层 (#19)

  • 🔌 插件式 Provider 系统(8 个提供商)
  • 📊 模型元数据系统(定价、能力、上下文窗口)
  • ⚙️ 细粒度配置支持
  • 🌐 Anthropic, Google, Mistral, OpenAI 等

事件系统 (#18)

  • 🎯 工具拦截机制
  • 📡 EventEmitter 事件总线
  • 🔗 异步事件处理
  • 🛡️ preventDefault 和 setResult

Overlay 系统 (#15)

  • 🎨 浮层组件(9 种锚点)
  • 📱 响应式布局
  • 🖼️ 遮罩层支持
  • 🔧 useOverlay Hook

主题系统 (#16)

  • 🎨 2 个内置主题
  • 🔥 热重载
  • 📝 自定义主题

其他

  • ⌨️ 键绑定 (#21)
  • 💾 提示词缓存 (#20)
  • 📤 导出功能 (#24)
  • 💬 向用户提问 (#28)
  • 📊 会话统计 (#23)

🔧 工具系统(Function Calling)

  • 8 个内置工具: 文件操作、系统信息、命令执行、技能加载等
    • readFile - 读取文件内容
    • listFiles - 列出目录文件
    • searchFiles - 搜索文件(支持 glob 模式)
    • getCurrentDirectory - 获取当前目录
    • getGitInfo - 查看 Git 仓库信息
    • getCurrentDateTime - 获取当前时间
    • executeCommand - 执行系统命令(带安全确认)
    • loadSkill - 按需加载技能指令
  • 智能工具调用: AI 自动决定何时使用哪个工具
  • 实时进度展示: 工具执行状态可视化
  • 安全机制: 危险命令需要用户确认
  • 跨平台支持: Windows/macOS/Linux 全平台兼容

核心功能

  • 多后端支持: 支持 LM Studio、Ollama、OpenAI 等多种 LLM 服务
  • 智能降级: 主模型故障时自动切换到最快的备用模型
  • 模型测速: 内置 --test-model 工具,一键测试所有模型速度
  • 提示词缓存: 支持 API 端的提示词缓存,降低成本提升速度
  • 智能对话: 基于 LLM 的自然语言理解和生成
  • 命令系统: 内置快捷命令,提升操作效率
  • 历史记录: 支持上下箭头浏览历史输入
  • 会话管理: 自动保存对话上下文,支持会话恢复
  • 流式输出: 实时显示 AI 响应,支持中断

主题与个性化

  • 主题系统: 内置 2 个主题(tech-blue、ocean-dark),支持自定义主题
  • 热重载: 修改主题配置文件后自动更新(无需重启)
  • 可配置键绑定: 自定义快捷键映射(支持组合键)

会话与导出

  • 会话恢复: 自动创建和保存会话,优雅的退出汇报显示
  • 会话导出: 支持导出为 HTML(含样式)和 Markdown 格式
  • 智能提问: AI 可以主动向用户提问以澄清任务

🧠 Skills 技能系统(三阶段渐进式加载)

ALICE 采用 Anthropic 推荐的渐进式加载架构,按需加载技能,避免上下文窗口膨胀:

  1. Discovery(启动时): 扫描 ~/.agents/skills/ 目录,仅提取每个技能的名称和描述(~100 tokens/skill),注入系统提示词
  2. Instruction(按需): 当用户请求匹配某技能时,AI 通过 loadSkill 工具加载完整指令
  3. 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  # 交互式搜索

🔌 MCP (Model Context Protocol)

ALICE 支持通过 MCP 连接外部工具服务器,大幅扩展能力:

  • 独立配置文件 ~/.Alice/mcp_settings.jsonc
  • 最多 3 个 MCP 服务器同时连接
  • 自动发现工具并注册到 Function Calling 系统
  • 默认内置 fetch MCP 服务器(网页抓取)

视觉体验

  • 🎭 炫酷的启动 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.exe

macOS / Linux 用户:

# 解压
tar -xzf alice-*.tar.gz

# 添加执行权限
chmod +x alice-*

# 运行(可选:移动到系统路径)
sudo mv alice-* /usr/local/bin/alice

# 直接运行
alice

方式二:从源码构建

前置要求

  • Node.js: ≥ 18.0.0
  • LM Studio: 用于本地运行大语言模型

安装依赖

# 克隆仓库
git clone https://github.com/AndersHsueh/Alice.git
cd Alice

# 安装依赖
npm install

开发模式

# 启动开发服务(支持键盘输入)
npm run dev

# 跳过启动动画
npm run dev -- --no-banner

⚠️ 注意: 不要使用 npm run dev:watch 进行交互测试,该模式会拦截 stdin,导致无法接收键盘输入。

构建与运行

# 编译 TypeScript
npm run build

# 运行生产版本
npm 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-model

🔧 工具使用示例

ALICE 支持 Function Calling,AI 可以自动调用工具完成任务:

# 示例 1: 查询时间
> You: 现在几点了?

[⏰ 获取当前时间] 正在执行...
[✅ 获取当前时间] 执行成功

Alice: 现在是 2026 年 2 月 10 日 21:40,星期二。

# 示例 2: 搜索文件
> You: 这个项目有多少个 TypeScript 文件?

[🔍 搜索文件] 正在搜索 **/*.ts...
[🔍 搜索文件] 找到 25 个文件

Alice: 项目中共有 25 个 TypeScript 文件,主要分布在 src/core、src/cli 等目录。

# 示例 3: 读取文件
> You: 帮我看看 package.json 的内容

[📄 读取文件] 正在读取 package.json...
[✅ 读取文件] 文件读取成功 (1024 bytes)

Alice: 你的项目名称是 alice-cli,版本 0.2.0,主要依赖包括...

# 示例 4: 危险命令(需确认)
> You: 删除 node_modules 文件夹

[⚠️  危险命令警告]
命令: rm -rf node_modules
确认执行? (y/N): y

[🔧 执行命令] 执行中...
[✅ 执行命令] 命令执行完成

Alice: node_modules 已删除,你可以运行 npm install 重新安装依赖。

配置危险命令确认

编辑 ~/.alice/settings.jsonc 中的 dangerous_cmd 字段:

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

配置文件

配置文件位于 ~/.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
}

支持的 LLM 提供商

ALICE 使用插件式 Provider 系统,支持以下提供商:

提供商 provider 值 说明 Function Calling
LM Studio lmstudio 本地运行,默认端口 1234
Ollama ollama 本地运行,默认端口 11434
OpenAI openai GPT-4/3.5,支持提示词缓存
Anthropic anthropicclaude Claude 3.5/3,长上下文
Google googlegemini 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 特有配置

部分 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

项目结构

alice-cli/
├── src/
│   ├── index.tsx           # 入口文件
│   ├── cli/                # UI 层
│   │   ├── app.tsx        # 主应用
│   │   └── components/    # React 组件
│   │       ├── Banner.tsx
│   │       ├── Header.tsx
│   │       ├── ChatArea.tsx
│   │       └── InputBox.tsx
│   ├── core/              # 核心逻辑
│   │   ├── llm.ts        # LLM 客户端(支持降级)
│   │   ├── providers/    # Provider 适配器
│   │   │   ├── base.ts
│   │   │   ├── openai-compatible.ts
│   │   │   └── index.ts
│   │   └── session.ts    # 会话管理
│   ├── utils/            # 工具函数
│   │   ├── config.ts     # 配置管理(支持 JSONC)
│   │   ├── test-model.ts # 模型测速工具
│   │   ├── thinkParser.ts    # <think> 标签解析
│   │   └── tableRenderer.tsx # 表格渲染组件(CJK支持)
│   └── types/            # TypeScript 类型
│       └── index.ts
├── dist/                 # 构建输出
└── package.json

🎨 设计理念

视觉风格

  • 主色调: 科技蓝 (#00D9FF)
  • 辅助色: 渐变紫 (#B030FF → #00D9FF)
  • 设计原则: 极简、现代、高效

交互体验

  • ⚡ 快速响应,避免卡顿
  • 💡 清晰的状态反馈
  • 🎯 直观的错误提示
  • ⌨️ 完善的键盘操作

🛠️ 开发指南

ESM 模块系统

本项目使用 ESM 模块,注意事项:

// ✅ 导入时必须包含 .js 扩展名
import { foo } from './utils.js';

// ❌ 错误的导入方式
import { foo } from './utils';

调试技巧

# 查看详细日志
DEBUG=* npm run dev

# 清理构建产物
npm run clean

代码规范

  • 使用 async/await 处理异步操作
  • 组件文件使用 .tsx,逻辑文件使用 .ts
  • 遵循 TypeScript 严格模式
  • 函数组件优先,使用 React Hooks

📋 开发路线图

MVP 阶段 (当前)

  • 基础聊天界面
  • 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!

开发流程

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件

🙏 致谢

📮 联系方式


Made with ❤️ by Anders

About

Alice - AI Assistant Repository

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages