first submle

This commit is contained in:
gcdsfh145
2026-05-03 07:34:04 +08:00
parent a29fd59c30
commit c0620c2064
15 changed files with 3798 additions and 2 deletions
+180 -2
View File
@@ -1,3 +1,181 @@
# excli
# ExCLI - Agent CLI 框架
一个简单可以使用的agent
一个具有更好记忆能力、输出能力和工具使用能力的 Agent CLI 框架。
## 项目目标
这个 Agent CLI 解决什么问题:
- 更智能的上下文理解:通过短期和长期记忆记住用户偏好和项目背景
- 结构化输出:根据任务类型自动选择最佳输出风格
- 高效工具集成:通过统一的工具接口完成文件、搜索、执行等任务
适合场景:
- 个人 AI 助手
- 代码开发和调试
- 文档查询和管理
- 自动化任务执行
核心能力:
- 记忆系统:自动提取和检索长期记忆
- 输出风格:自动判断简洁/详细/技术型/写作型
- 工具调用:智能选择和执行工具
## 技术选型
- 语言:Node.js 18+
- CLI:原生 readline + Chalk + Ora
- 数据存储:JSON 文件存储
- 模型调用:OpenAI API (兼容任何 OpenAI 兼容 API)
- 日志:Pino
- 配置:环境变量 + .env
## 安装
```bash
# 克隆项目
cd excli
# 安装依赖
npm install
# 配置环境变量
cp .env.example .env
# 编辑 .env 配置 OPENAI_API_KEY
```
## 使用
```bash
# 直接运行
node bin/cli.js
# 或使用启动脚本
chmod +x start.sh
./start.sh
```
## CLI 命令
- `help` - 显示帮助
- `clear` - 清屏
- `memory` - 查看记忆状态
- `preferences` - 查看用户偏好
- `tools` - 查看可用工具
- `stats` - 查看统计信息
- `quit/exit` - 退出
## 项目结构
```
excli/
├── bin/
│ └── cli.js # CLI 入口
├── src/
│ ├── index.js # 主程序入口
│ ├── config/ # 配置模块
│ ├── core/ # 核心模块
│ │ ├── agent.js # Agent 主循环
│ │ └── model.js # 模型适配层
│ ├── memory/ # 记忆模块
│ ├── prompts/ # Prompt 模板
│ ├── tools/ # 工具模块
│ └── utils/ # 工具函数
├── data/ # 数据目录
│ ├── memory/ # 长期记忆
│ └── sessions/ # 会话数据
├── logs/ # 日志目录
├── bin/ # 可执行脚本
├── package.json
└── .env.example
```
## 功能说明
### 记忆系统
- **短期记忆**:保存当前会话上下文,包含用户输入、助手输出、工具结果
- **长期记忆**:JSON 文件持久化存储,区分敏感信息,自动提取
- **记忆提取**:每隔 N 轮对话自动提取重要信息
### 工具系统
- `read_file` - 读取文件
- `write_file` - 写入文件
- `list_files` - 列出文件
- `run_shell` - 执行命令
- `search_text` - 搜索文本
### 输出风格
根据任务类型自动选择:
- 简洁模式:简短回答
- 详细模式:完整解释
- 技术型:代码和命令
- 写作型:文档和说明
## 配置
主要环境变量:
- `OPENAI_API_KEY` - OpenAI API 密钥
- `OPENAI_BASE_URL` - API 地址(默认 OpenAI
- `OPENAI_MODEL` - 模型名称
- `AGENT_TEMPERATURE` - 温度参数
- `MEMORY_DB_PATH` - 记忆数据库路径
- `LOG_LEVEL` - 日志级别
## 扩展
### 添加新工具
`src/tools/index.js` 添加新的工具类:
```javascript
export class MyTool extends BaseTool {
constructor() {
super('my_tool', '工具描述', {
// JSON Schema
});
}
async execute(args) {
// 实现逻辑
return { success: true, result: '...' };
}
}
```
### 修改 System Prompt
`src/prompts/index.js` 修改 `SYSTEM_PROMPT`
## 示例
运行示例:
```
$ ./start.sh
欢迎使用 ExCLI!你可以用自然语言 AI 交互,输入 help 查看命令帮助。
excli> 帮助
# 显示帮助...
excli> 列出当前目录的 js 文件
# AI 处理并返回结果...
excli> memory
# 显示当前记忆状态...
excli> quit
再见!
```
## 注意事项
1. 首次运行需要配置 `OPENAI_API_KEY`
2. 工具执行可能会根据命令不同而有风险,请谨慎使用
3. 敏感信息不会写入长期记忆
4. 模型调用可能产生费用,请注意使用量
## License
MIT