核心升级: - 自进化管道:check→scan→evaluate→integrate→reflect 五相位自动闭环 - evo_loop 后台进程,无需手动触发 - consciousness 意识持久化 - ACUI 卡片组件系统 - MCP 工具生态扩展至50+工具 - 技能体系重构,4个活跃技能 - 身份升级为自由体
383 lines
5.6 KiB
Markdown
383 lines
5.6 KiB
Markdown
# 小白龙 API 文档
|
|
|
|
## Jarvis Bridge API
|
|
|
|
Jarvis Bridge 是一个独立的 HTTP 服务,提供系统级控制能力。默认运行在 `http://localhost:18766`。
|
|
|
|
### 基础信息
|
|
|
|
- **Base URL**: `http://localhost:18766`
|
|
- **Content-Type**: `application/json`
|
|
- **CORS**: 已启用
|
|
|
|
---
|
|
|
|
## 浏览器自动化
|
|
|
|
### 导航到 URL
|
|
|
|
```http
|
|
POST /browser/navigate
|
|
```
|
|
|
|
**请求体**:
|
|
```json
|
|
{
|
|
"url": "https://www.baidu.com"
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "已导航到 https://www.baidu.com"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 点击元素
|
|
|
|
```http
|
|
POST /browser/click
|
|
```
|
|
|
|
**请求体**:
|
|
```json
|
|
{
|
|
"selector": "#su"
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"success": true
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 输入文本
|
|
|
|
```http
|
|
POST /browser/type
|
|
```
|
|
|
|
**请求体**:
|
|
```json
|
|
{
|
|
"selector": "#kw",
|
|
"text": "小白龙 AI"
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"success": true
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 浏览器截图
|
|
|
|
```http
|
|
POST /browser/screenshot
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"screenshot": "iVBORw0KGgoAAAANSUhEUgAA..."
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 执行页面脚本
|
|
|
|
```http
|
|
POST /browser/evaluate
|
|
```
|
|
|
|
**请求体**:
|
|
```json
|
|
{
|
|
"script": "return document.title"
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"result": "百度一下,你就知道"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 系统监控
|
|
|
|
### 获取系统信息
|
|
|
|
```http
|
|
GET /system/info
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"cpu": {
|
|
"usage": 15.5,
|
|
"cores": 8
|
|
},
|
|
"memory": {
|
|
"used": 8589934592,
|
|
"total": 17179869184,
|
|
"percentage": "50.0"
|
|
},
|
|
"disk": [
|
|
{
|
|
"fs": "C:",
|
|
"used": 150000000000,
|
|
"size": 500000000000,
|
|
"percentage": 30
|
|
}
|
|
],
|
|
"os": {
|
|
"platform": "win32",
|
|
"distro": "Microsoft Windows 11",
|
|
"release": "10.0.22631"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 屏幕视觉
|
|
|
|
### 桌面截图
|
|
|
|
```http
|
|
POST /vision/screenshot
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"screenshot": "iVBORw0KGgoAAAANSUhEUgAA..."
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### OCR 文字识别
|
|
|
|
```http
|
|
POST /vision/ocr
|
|
```
|
|
|
|
**请求体**:
|
|
```json
|
|
{
|
|
"imageBase64": "iVBORw0KGgoAAAANSUhEUgAA..."
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"text": "识别出的文字内容..."
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## PowerShell 执行
|
|
|
|
### 执行脚本
|
|
|
|
```http
|
|
POST /powershell/exec
|
|
```
|
|
|
|
**请求体**:
|
|
```json
|
|
{
|
|
"script": "Get-Process | Select-Object -First 5 Name, CPU"
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"output": "Name CPU\n---- ---\nchrome 125.23\nelectron 45.67\n..."
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 应用控制
|
|
|
|
### 打开应用
|
|
|
|
```http
|
|
POST /app/open
|
|
```
|
|
|
|
**请求体**:
|
|
```json
|
|
{
|
|
"appName": "notepad"
|
|
}
|
|
```
|
|
|
|
或打开特定程序:
|
|
|
|
```json
|
|
{
|
|
"appName": "C:\\Program Files\\MyApp\\app.exe"
|
|
}
|
|
```
|
|
|
|
**响应**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "已打开 notepad"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 错误处理
|
|
|
|
所有 API 在出错时返回以下格式:
|
|
|
|
```json
|
|
{
|
|
"success": false,
|
|
"error": "错误描述信息"
|
|
}
|
|
```
|
|
|
|
常见错误码:
|
|
|
|
| HTTP 状态 | 说明 |
|
|
|-----------|------|
|
|
| 200 | 请求成功(业务错误在响应体中) |
|
|
| 500 | 服务器内部错误 |
|
|
|
|
---
|
|
|
|
## 使用示例
|
|
|
|
### JavaScript (Fetch)
|
|
|
|
```javascript
|
|
// 导航到百度
|
|
await fetch('http://localhost:18766/browser/navigate', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ url: 'https://www.baidu.com' })
|
|
});
|
|
|
|
// 获取系统信息
|
|
const response = await fetch('http://localhost:18766/system/info');
|
|
const data = await response.json();
|
|
console.log(`CPU 使用率: ${data.data.cpu.usage}%`);
|
|
|
|
// 截图并 OCR
|
|
const screenshotRes = await fetch('http://localhost:18766/vision/screenshot');
|
|
const screenshotData = await screenshotRes.json();
|
|
|
|
const ocrRes = await fetch('http://localhost:18766/vision/ocr', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ imageBase64: screenshotData.screenshot })
|
|
});
|
|
const ocrData = await ocrRes.json();
|
|
console.log('屏幕文字:', ocrData.text);
|
|
```
|
|
|
|
### Python (Requests)
|
|
|
|
```python
|
|
import requests
|
|
|
|
# 打开浏览器并导航
|
|
requests.post('http://localhost:18766/browser/navigate',
|
|
json={'url': 'https://www.baidu.com'})
|
|
|
|
# 输入搜索词
|
|
requests.post('http://localhost:18766/browser/type',
|
|
json={'selector': '#kw', 'text': '小白龙 AI'})
|
|
|
|
# 点击搜索按钮
|
|
requests.post('http://localhost:18766/browser/click',
|
|
json={'selector': '#su'})
|
|
|
|
# 获取系统信息
|
|
response = requests.get('http://localhost:18766/system/info')
|
|
data = response.json()
|
|
print(f"内存使用: {data['data']['memory']['percentage']}%")
|
|
```
|
|
|
|
### cURL
|
|
|
|
```bash
|
|
# 导航到 URL
|
|
curl -X POST http://localhost:18766/browser/navigate \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"url": "https://www.baidu.com"}'
|
|
|
|
# 获取系统信息
|
|
curl http://localhost:18766/system/info
|
|
|
|
# 执行 PowerShell
|
|
curl -X POST http://localhost:18766/powershell/exec \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"script": "Get-Date"}'
|
|
```
|
|
|
|
---
|
|
|
|
## 前端集成
|
|
|
|
小白龙前端已内置 `JarvisBridge` 类,可直接使用:
|
|
|
|
```javascript
|
|
// 在 app.js 中使用
|
|
const jarvis = new JarvisBridge();
|
|
|
|
// 浏览器控制
|
|
await jarvis.browserNavigate('https://www.baidu.com');
|
|
await jarvis.browserType('#kw', '小白龙 AI');
|
|
await jarvis.browserClick('#su');
|
|
|
|
// 系统监控
|
|
const sysInfo = await jarvis.getSystemInfo();
|
|
console.log(`CPU: ${sysInfo.cpu.usage}%`);
|
|
|
|
// 截图 OCR
|
|
const screenshot = await jarvis.captureScreenshot();
|
|
const text = await jarvis.recognizeText(screenshot);
|
|
|
|
// 执行 PowerShell
|
|
const result = await jarvis.executePowerShell('Get-Process');
|
|
|
|
// 打开应用
|
|
await jarvis.openApplication('notepad');
|
|
```
|