Skip to content

fifsky/aichat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aichat

一个简单的命令行ai agent,快速和 ai 对话并得到结果

为什么需要这个项目?

你可能会问,为什么不直接使用 opencode run 或者 codex exec 的非交互模式?

主要原因在于这些工具的非交互模式目前不支持流式输出,导致在等待长回复时体验不佳。而我需要一个:

  • 轻量且快速响应的终端对话工具
  • 支持流式输出,提供丝滑的问答体验
  • 支持 MCP 和 SKILLS,扩展性强
  • 能够让我在遇到问题时,随时随地在终端询问 AI,而无需离开当前的工作界面

Usage

安装前请先安装 Bun

npm install -g @fifsky/aichat
ai --config
ai 今天天气怎么样

本地开发:

bun install
bun run build
./dist/ai --config
./dist/ai 今天天气怎么样

配置

首次使用可以通过交互式配置向导设置模型服务、模型名称、API Key 以及是否显示思考内容:

ai --config

交互式配置界面

也可以使用 --set 直接更新配置项:

ai --config --set provider.baseURL=https://api.deepseek.com --set provider.model=deepseek-v4-pro

配置路径为 ~/.config/aichat/aichat.json

完整配置示例:

{
  "provider": {
    "name": "deepseek",
    "baseURL": "https://api.deepseek.com",
    "apiKey": "sk-xxx",
    "model": "deepseek-v4-pro",
    "thinking": {
      "enabled": true,
      "reasoningEffort": "high",
      "showReasoning": true
    }
  },
  "mcpServers": {
    "example": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@example/mcp-server"],
      "env": {}
    }
  },
  "skills": {
    "enabled": true,
    "dirs": ["~/.agents/skills"]
  },
  "tools": {
    "ask": {
      "enabled": true
    },
    "bash": {
      "enabled": true,
      "autoApprove": ["tvly *"],
      "timeoutMs": 60000
    }
  },
  "session": {
    "path": "~/.aichat/sessions/default.json",
    "maxMessages": 100
  }
}

清空上下文

对话上下文会保存在 ~/.aichat/sessions/default.json,上下文最多保留 100 条消息。如果需要重新开始一次干净的对话,可以执行:

ai --clean

Skills

ai agent会自动加载~/.agents/skills目录下的所有文件作为 skills, 并通过内置的 Bash 工具执行。

Bash 工具默认只自动批准tvly *,其他命令会在终端确认后执行。

Ask 工具

当 AI 对需求理解不清晰、缺少必要决策时,会使用内置的 ask 工具向用户追问。Ask 使用 @clack/prompts 组件渲染终端交互,支持单选、多选和自定义输入;每个问题最多展示 5 个选项。如果需要澄清多个问题,AI 会按步骤逐个询问。

About

一个简单的命令行ai agent,快速和 ai 对话并得到结果

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors