异步迭代器
一个强大的基于终端的人工智能聊天界面,由OpenTUI和React构建,具有模块化代理系统和模型上下文协议(MCP)集成。
为什么爱?
虽然像Claude Code和其他CLI AI代理这样的工具提供了强大的AI帮助,但aiter给了你一些不同的东西: 完全控制您与AI的交互方式.
建立在三个原则之上
可控性:拥有整个代理循环——决定迭代限制,控制工具执行流,并自定义流行为。构建与你的思维模式相匹配的人工智能工作流程,而不是供应商的。
可扩展性:通过Vercel AI SDK运行任何模型。轻松配置MCP服务器。定义自定义工具和命令。为不同的任务创建专门的代理。没有黑盒子,没有专有抽象。
可定制性:终端优先意味着可脚本化、可管道化和CI/CD就绪。用React修改UI。直接检查和编辑对话JSON。完全本地控制,无需遥测。
对于那些想用人工智能构建而不仅仅是使用它的开发人员来说。 非常适合实验、MCP测试、自定义工作流程以及了解AI交互的实际工作方式。
______________________________________________________________________
快速开始
安装
创建新的aiter应用程序:
bunx @aiter/cli create app my-chat-app
cd my-chat-app
bun install
# Set up environment variables
cp .env.template .env跑
# Start with the example agent
bun run src/index.tsx --agent example
# Resume an existing chat
bun run src/index.tsx --agent example --chat chats/abc123.json
# Start with an initial prompt
bun run src/index.tsx --agent example --prompt "Hello, how are you?"
# Pipe prompt from stdin
echo "Explain TypeScript generics" | bun run src/index.tsx --agent example -______________________________________________________________________
特性
核心能力
- 终端用户界面(TUI):由OpenTUI提供支持的美丽交互式聊天界面
- 多代理系统:创建并在具有不同配置的自定义AI代理之间切换
- 持续聊天会话:所有对话都保存为JSON文件,便于恢复
- MCP集成:通过模型上下文协议连接到外部工具和服务
- 支持stdio、SSE和HTTP传输类型 - 从MCP服务器动态加载工具 - 每个代理配置简单
可扩展性
- 基于文件系统的代理组织:Next.js-like基于约定的结构——代理按目录组织,并带有标准化的文件夹(命令/、工具/、mcps/、系统提示/)
- 自定义Slash命令:使用yargs样式的参数解析定义特定于代理的或全局的斜线命令
- 自定义AI工具:添加人工智能在对话中可以使用的本地工具
- 灵活的系统提示:使用基于markdown的系统提示自定义AI行为
- 自定义UI组件:用你自己的React组件覆盖聊天界面中的任何组件
- 自定义数据架构:为特定于代理的状态管理定义类型化数据结构
- Stdin支持:直接来自shell命令或脚本的管道提示
______________________________________________________________________
创建自定义代理
将新代理添加到您的项目中:
# Interactive mode (prompts for customizations)
bunx @aiter/cli add agent my-agent
# Non-interactive with specific customizations
bunx @aiter/cli add agent my-agent --customize commands,tools,mcps
# Add all customizations
bunx @aiter/cli add agent my-agent --customize all --interactive false代理结构
每个代理目录包含:
src/ai/agents//
├── commands/ # Custom slash commands
│ └── index.ts # Export all commands
├── mcps/ # MCP server configurations
│ └── main.json # MCP servers for this agent
├── system-prompts/ # System prompts
│ └── main.md # Main system prompt
├── tools/ # Custom AI tools
│ └── index.ts # Export all tools
├── schema.ts # Data schema for agent state
└── stream-function.ts # Custom stream processing logic______________________________________________________________________
定制指南
添加自定义工具
在中创建工具 src/ai/agents//tools/ 使用AI SDK tool() 功能。参见 src/ai/agents/template 对于基本结构和 src/ai/agents/example 用于实施示例。
添加自定义Slash命令
在中创建命令 src/ai/agents//commands/ 实施 SlashCommand 与yargs风格选项的界面。参见 src/ai/agents/template 对于基本结构和 src/ai/agents/example 用于实施示例。
配置MCP服务器
cp src/ai/agents//mcps/templates/main.json.template src/ai/agents//mcps/main.json编辑 src/ai/agents//mcps/main.json:
{
"mcpServers": {
"server0": {
"type": "stdio",
"command": "npx",
"args": ["path/to/server.js"],
"env": {}
},
"server1": {
"type": "http",
"url": "https://api.example.com/mcp",
"headers": {
"Authorization": "Bearer token"
}
},
"server2": {
"type": "sse",
"url": "https://api.example.com/sse",
"headers": {}
}
}
}自定义系统提示
编辑 src/ai/agents//system-prompts/main.md 定义AI的行为和个性。
自定义组件
您可以通过在中创建自定义版本来覆盖任何UI组件 src/components/组件系统会自动将您的自定义组件与核心组件合并。
自定义数据架构
编辑 src/ai/agents//schema.ts 为特定于代理的状态管理定义类型化数据结构。
______________________________________________________________________
CLI参考
命令行参数
| 选项 | 别名 | 类型 | 默认值 | 描述 |
|---|---|---|---|---|
--agent | -a | 字符串 | example | 指定要使用的代理(必须存在于 src/ai/agents/) |
--chat | -c | 字符串 | null | 要恢复的现有聊天会话文件的路径 |
--prompt | -p | 字符串 | null | 开始聊天时发送的初始提示 |
--help | -h | - | - | 显示帮助信息 |
特殊输入
使用 - 作为从stdin读取提示的位置参数:
cat question.txt | bun run src/index.tsx -
echo "My question" | bun run src/index.tsx -注意:不能与 --prompt
______________________________________________________________________
建筑
包裹
@aiter/core-提供UI组件、触发系统、MCP管理和聊天会话处理的核心运行库@aiter/cli-用于构建新应用程序和代理的CLI工具
关键组件
- 聊天容器:管理聊天界面的主UI组件
- 触发系统:可扩展的输入处理(命令、上下文等)
- MCP经理:Singleton管理模型上下文协议客户端和工具
- 命令注册表:动态加载内置命令和特定于代理的命令
- 海关运输:UI和AI流媒体之间的桥梁
- 组件上下文:合并核心组件和自定义组件的系统
代理系统
每个代理都有自己的隔离:
- 工具集(MCP工具+本地工具)
- 命令注册表(内置+特定于代理)
- 系统提示和配置
- 状态模式
组件系统
组件遵循合并模式:
- 核心组件由提供
@aiter/core - 您在中的自定义组件
src/components/覆盖匹配的名称 - 这
ComponentsProvider使所有组件可通过useComponents() - 任何组件都可以定制,而不会影响其他组件
______________________________________________________________________
贡献
我们欢迎捐款!这是一个使用Bun工作区管理的monorepo。
存储库结构
aiter/
├── packages/
│ ├── core/ # @aiter/core - Core runtime library
│ ├── cli/ # @aiter/cli - CLI tool
│ │ └── template/ # Template for new projects (also dev workspace)
└── scripts/ # Build scripts开发环境设置
# Clone the repository
git clone https://github.com/pranftw/aiter.git
cd aiter
# Install dependencies
bun install
# Create .env from template
cp packages/cli/template/.env.template packages/cli/template/.env开发工作流程
此monorepo使用 直接来源进口 -开发过程中不需要构建步骤!
# Run the template workspace (development environment)
bun dev -a example
# Make changes to packages/core/src/* or packages/cli/template/src/*
# Changes are instantly reflected - no rebuild needed!
# Type check all packages
bun run typecheck
# Build packages (only needed for publishing)
bun run build
# Clean all builds
bun run clean测试CLI命令
# Test the create command
bun run dev:cli create app test-app______________________________________________________________________
许可证
请参阅每个包中的LICENSE文件。
