统一 AI CLI 连接器服务器,支持多 AI 提供商和机器人平台集成。
- 多 AI 支持:Claude Code、IFlow、Codex、Agent 引擎
- 平台集成:钉钉机器人、QQ 机器人
- 定时任务:支持 cron 表达式和简写间隔的任务调度
- 语音识别:QQ 语音消息转文字(百度语音)
- Web 配置:可视化配置管理界面
npm install复制配置模板:
cp .env.example .env或直接启动,访问配置页面进行配置:
http://localhost:12480/config/config.html
编辑 .env 文件,主要配置:
# AI 提供商:claude | iflow | codex | agent
PROVIDER=iflow
# IFlow 配置
IFLOW_WORK_DIR=D:\MyProject
# Claude 配置(使用 claude 时)
CLAUDE_CMD_PATH=C:\Users\...\claude.cmd
CLAUDE_WORK_DIR=D:\MyProject
# Agent 配置(使用 agent 时)
AGENT_LLM_PROVIDER=iflow
AGENT_MODEL=glm-4-flash
# 钉钉(可选)
DINGTALK_CLIENT_ID=xxx
DINGTALK_CLIENT_SECRET=xxx
# QQ Bot(可选)
QQBOT_APP_ID=xxx
QQBOT_CLIENT_SECRET=xxx以下服务均提供免费服务:
| 服务 | 用途 | 注册地址 |
|---|---|---|
| QQ 机器人 | QQ 平台机器人接入 | q.qq.com/qqbot |
| IFlow | AI 对话服务 | iflow.cn |
| IFlow CLI | IFlow 命令行工具 | cli.iflow.cn |
| 钉钉开放平台 | 钉钉机器人接入 | open-dev.dingtalk.com |
| 百度语音 | 语音识别服务 | 百度 AI 控制台 |
QQ 机器人:
- 访问 QQ 开放平台,登录后创建机器人应用
- 获取
App ID和Client Secret
IFlow:
- 支持账号登录或 APPKEY 方式
- 在控制台获取 API Key
钉钉机器人:
- 创建企业内部应用
- 获取
Client ID和Client Secret
百度语音:
- 创建语音识别应用
- 获取
API Key和Secret Key
支持两种运行模式:
适合开发测试,手动启动。
npm start适合生产环境,支持自动重启、日志管理、开机自启。
# 安装 PM2
npm install -g pm2
npm install -g pm2-windows-startup
# 启动项目
pm2 start ecosystem.config.js
[或 npm run pm2]
# 设置开机自启
pm2-startup install
pm2 savePM2 常用命令:
| 命令 | 说明 |
|---|---|
pm2 list |
查看所有进程 |
pm2 restart oprcli |
重启应用 |
pm2 stop oprcli |
停止应用 |
pm2 logs oprcli |
查看日志 |
pm2 monit |
监控面板 |
pm2 save |
保存进程列表 |
模式对比:
| 特性 | npm | PM2 |
|---|---|---|
| 重启命令 | ❌ 需手动重启 | ✅ 支持 |
| 开机自启 | ❌ | ✅ |
| 崩溃自动恢复 | ❌ | ✅ |
| 日志管理 | ❌ | ✅ |
| 进程监控 | ❌ | ✅ |
服务运行在 http://localhost:3000
配置页面:http://localhost:3000/config/config.html
重要更新:为避免误触发,系统现在采用精确匹配模式。
| 模式 | 说明 | 示例 |
|---|---|---|
| 无前缀(精确匹配) | 输入必须完全等于命令词 | claude ✅ claude 你好 ❌ |
| 有前缀(灵活匹配) | 支持命令 + 参数 | /重启 ✅ /重启 现在 ✅ |
- 无需前缀:Provider 切换命令(
claude、iflow、codex、agent) - 需要前缀:其他系统命令(
/重启、/status、/help、/path、/tasks等)
💡 为什么这样设计?
- 防止误触发:例如 "重启其他服务" 不会误触发重启命令
- 灵活性:通过
/前缀区分命令和普通对话- 可配置:支持通过环境变量自定义前缀规则
| 命令 | 说明 | 是否需要前缀 |
|---|---|---|
claude / iflow / codex / agent |
切换 AI 提供商 | ❌ 可选 |
/restart / /rs / /重启 |
重启服务(PM2 模式) | ✅ 需要 |
/status / /状态 |
查看状态 | ✅ 需要 |
/help / /帮助 |
查看帮助 | ✅ 需要 |
/path {路径} / /路径 {路径} |
修改工作目录 | ✅ 需要 |
/tasks |
定时任务管理 | ✅ 需要 |
通过环境变量调整前缀规则:
# 方式 1: 全局要求前缀(最严格)
COMMAND_REQUIRE_SLASH=true
# 方式 2: 白名单(指定不需要前缀的命令)
COMMAND_NO_SLASH_LIST=claude,iflow,codex,agent,restart,status
# 方式 3: 黑名单(指定需要前缀的命令)
COMMAND_REQUIRE_SLASH_LIST=restart,stop,path,tasks详细配置说明见 命令配置文档。
定时任务间隔格式:
- 简写:
30s(30秒)、10m(10分钟)、1h(1小时) - Cron:
0 9 * * *(每天9点)
oprcli/
├── server.js # 入口文件
├── connectors/ # AI 连接器
├── agents/ # Agent 引擎
├── integrations/ # 平台集成(钉钉、QQ)
├── scheduler/ # 定时任务
├── server/ # 服务器模块
├── public/ # Web 配置页面
├── system-prompts/ # 系统提示词
└── utils/ # 工具模块
| 变量 | 说明 | 默认值 |
|---|---|---|
PROVIDER |
AI 提供商 | claude |
PORT |
服务端口 | 12480 |
DEFAULT_WORK_DIR |
默认工作目录 | - |
CLAUDE_CMD_PATH |
Claude 命令路径 | - |
IFLOW_PATH |
IFlow 命令路径 | - |
CODEX_PATH |
Codex 命令路径 | - |
DINGTALK_CLIENT_ID |
钉钉 Client ID | - |
DINGTALK_CLIENT_SECRET |
钉钉 Secret | - |
QQBOT_APP_ID |
QQ Bot App ID | - |
QQBOT_CLIENT_SECRET |
QQ Bot Secret | - |
SCHEDULER_ENABLED |
启用定时任务 | true |
STREAM_ENABLED |
启用流式输出 | true |
LOG_LEVEL |
日志级别 | DEBUG |
更多配置见 .env.example。
感谢以下开源项目和服务:
- Claude Code - Anthropic AI 编程助手
- IFlow - 智能 AI 助手平台
- OpenAI Codex - OpenAI 编程模型
- QQ 开放平台 - 腾讯 QQ 机器人平台
- 钉钉开放平台 - 阿里巴巴企业协作平台
- 百度 AI - 百度智能云语音服务
MIT