项目简介
Oracle CLI (命令行界面) 旨在为开发者和代理提供一种简单可靠的方式,将提示、文件和数据安全地提交给大型语言模型(LLM),以解决复杂问题。它支持通过 OpenAI API 或浏览器自动化使用 ChatGPT。此外,Oracle 提供了一个内嵌的 Model Context Protocol (MCP) 服务器,允许其他 MCP 客户端(如 AI 代理或编辑器插件)通过标准化的 JSON-RPC 协议访问其强大的功能,包括执行模型咨询和获取会话数据。
主要功能点
- 灵活的LLM交互: 可通过OpenAI API直接调用模型,或通过浏览器自动化使用ChatGPT Pro账户。
- 上下文管理: 支持打包提示和相关文件(支持Glob模式和排除规则)提交给LLM,模型可引用这些文件进行回答。
- 会话管理: 自动记录每次运行的会话,包括输入、输出、成本和元数据,并支持回顾、重放和清理历史会话。
- 服务器端搜索: 模型可以利用搜索功能,基于最新信息回答问题。
- MCP服务器接口: 作为MCP服务器运行,提供标准化的JSON-RPC接口,允许其他LLM客户端调用其核心功能。
- Consult 工具: 允许MCP客户端提交提示和文件给LLM进行咨询。
- Sessions 工具: 允许MCP客户端列出或获取特定Oracle会话的详细信息。
- Session 资源: 提供只读资源,如会话元数据('oracle-session://<id>/metadata')、日志('oracle-session://<id>/log')和请求负载('oracle-session://<id>/request')。
安装步骤
Oracle作为一个Node.js项目,可以通过npm或pnpm进行安装和使用。
- 安装 Node.js 和 npm/pnpm: 如果你的系统上还没有安装 Node.js,请先从 Node.js 官网 下载并安装。npm 会随 Node.js 一同安装,你也可以选择安装 pnpm ('npm install -g pnpm')。
- 设置 OpenAI API Key (可选,推荐API引擎使用): 如果你计划使用API引擎,需要设置 'OPENAI_API_KEY' 环境变量。
export OPENAI_API_KEY="sk-YOUR_OPENAI_API_KEY" # 或者在项目根目录创建 .env 文件,内容为 OPENAI_API_KEY="sk-YOUR_OPENAI_API_KEY" - 安装 Oracle CLI:
安装完成后,你就可以在命令行中使用 'oracle' 命令了。# 使用 npm npm install -g @steipete/oracle # 或者使用 pnpm pnpm install -g @steipete/oracle
MCP服务器配置
Oracle 的 MCP 服务器通过 'oracle-mcp' 命令启动,并使用标准输入/输出 (stdio) 作为传输协议。以下是一个 MCP 客户端连接 Oracle MCP 服务器的示例配置,通常以 JSON 格式提供给 MCP 客户端:
{ "name": "Oracle MCP Server", "type": "stdio", "command": "oracle-mcp", "args": [], "description": "连接到 Oracle CLI 的 MCP 服务器,以执行LLM咨询和管理会话。", "tools": [ { "name": "consult", "description": "执行一次Oracle LLM咨询会话。支持提交提示、文件、指定模型和引擎。返回会话ID、状态和LLM输出。", "input": { "type": "object", "properties": { "prompt": { "type": "string", "description": "要发送给LLM的用户提示。" }, "files": { "type": "array", "items": { "type": "string" }, "description": "要附加的文件路径列表。" }, "model": { "type": "string", "description": "要使用的LLM模型(如 'gpt-5-pro' 或 'gpt-5.1')。" }, "engine": { "type": "string", "enum": ["api", "browser"], "description": "执行引擎('api' 或 'browser')。" }, "slug": { "type": "string", "description": "自定义会话名称,便于查找。" } }, "required": ["prompt"] }, "output": { "type": "object", "properties": { "sessionId": { "type": "string", "description": "新创建会话的唯一ID。" }, "status": { "type": "string", "description": "会话的最终状态(如 'completed' 或 'error')。" }, "output": { "type": "string", "description": "LLM生成的文本输出。" }, "metadata": { "type": "object", "description": "完整的会话元数据对象。" } }, "required": ["sessionId", "status", "output"] } }, { "name": "sessions", "description": "列出或获取Oracle会话的详细信息。", "input": { "type": "object", "properties": { "id": { "type": "string", "description": "可选的会话ID或slug,用于获取特定会话的详细信息。" }, "hours": { "type": "number", "description": "列出最近多少小时内的会话(默认24小时)。" }, "limit": { "type": "number", "description": "列出会话的最大数量(默认100)。" }, "includeAll": { "type": "boolean", "description": "设置为true时,列出所有会话,忽略时间范围。" }, "detail": { "type": "boolean", "description": "设置为true时,获取特定会话的完整详细信息,包括日志和请求负载。" } } }, "output": { "type": "object", "oneOf": [ { "properties": { "entries": { "type": "array", "items": { "type": "object" }, "description": "会话列表摘要。" }, "total": { "type": "number", "description": "匹配的会话总数。" }, "truncated": { "type": "boolean", "description": "如果结果被截断,则为true。" } }, "required": ["entries", "total", "truncated"] }, { "properties": { "session": { "type": "object", "description": "特定会话的详细数据。" } }, "required": ["session"] } ] } } ], "resources": [ { "uri_template": "oracle-session://{id}/metadata", "read_only": true, "description": "读取特定Oracle会话的元数据。", "variables": { "id": { "type": "string", "description": "要读取元数据的会话ID。" } } }, { "uri_template": "oracle-session://{id}/log", "read_only": true, "description": "读取特定Oracle会话的完整日志输出。", "variables": { "id": { "type": "string", "description": "要读取日志的会话ID。" } } }, { "uri_template": "oracle-session://{id}/request", "read_only": true, "description": "读取特定Oracle会话的原始请求负载。", "variables": { "id": { "type": "string", "description": "要读取请求负载的会话ID。" } } } ] }
基本使用方法
通过命令行工具直接使用 Oracle:
- 执行一次API调用(带文件):
oracle --prompt "总结一下风险登记册" --file docs/risk-register.md docs/risk-matrix.md - 执行一次浏览器自动化调用(无需API Key):
oracle --engine browser --prompt "审查 TypeScript 数据层" --file "src/**/*.ts" --file "!src/**/*.test.ts" - 查看历史会话:
oracle status # 列出最近24小时的会话 oracle session <会话ID> # 查看特定会话的详细输出 oracle status --clear --hours 168 # 清理一周前的旧会话
信息
分类
开发者工具