豫言 / 云设备代理 @ 0.1.0

连接豫言云设备任务,执行命令、HTTP 请求与本地模型转发。

源码浏览已生成;不能解析的文件以纯文本展示,不表示通过类型检查。

包说明.汉语.md

# 云设备代理

云设备代理是豫言编写的命令行工具。`供给` 模式连接豫言云,接收命令执行、任意 HTTP/HTTPS 请求和模型转发任务。它也能独立向本机 Ollama 或 OpenAI 兼容端点发送请求,并把往来按 session 保存在当前目录的 `AI会话` 下。

## 用法

在仓库根目录构建:

```sh
node 豫言操作系统/宿主/节点/宿主.cjs yy3_bs.wasm 应用/开发工具/云设备代理/入口。豫 -o yy云设备代理.wasm --parallel
```

```text
yy云设备代理 发送 <ollama|openai> <session> <请求文件> [主机] [端口]
yy云设备代理 列出
yy云设备代理 浏览 <session>
yy云设备代理 网页 [端口]
yy云设备代理 供给 <服务商凭据文件> [本地主机]
```

协议 `ollama` 将请求送至 `/api/chat`,默认端口 `11434`;`openai` 将请求送至 OpenAI 兼容的 `/v1/chat/completions`,默认端口 `1234`。主机均默认为 `127.0.0.1`,也可显式指定。请求文件原样转发,须符合所选端点的 JSON 格式;要实时看到生成过程,请设置 `"stream": true`。每次请求的协议写在 `协议.<时间>.txt` 中,命令结束也会打印协议。

session 只能含英文字母、数字、横线和下划线。发送命令将原请求留在 `请求.<时间>.json`,上游响应正文留在 `响应.<时间>.jsonl`。同一 session 可发送多次;`浏览` 在命令行展示存档。`网页` 启动只监听本机的浏览页面,默认端口 `8765`,页面展示 session 列表、原始请求、响应与协议。

例如,请求文件为 `请求.json` 时,可运行 `node 豫言操作系统/宿主/节点/宿主.cjs yy云设备代理.wasm 发送 ollama 示例 请求.json`;随后运行 `node 豫言操作系统/宿主/节点/宿主.cjs yy云设备代理.wasm 网页`,在浏览器打开命令所示地址。

`供给` 模式使用系统 `curl` 连接云端,接收现有 `request` 模型任务,以及新增的 `exec` 与 `http` 任务。它继承启动程序的账户权限,不自行提权。云端控制事件的 JSON 形状如下:

```json
{"type":"exec","id":"任务编号","command":"可执行的 shell 命令"}
{"type":"http","id":"任务编号","url":"https://example.com/path","method":"POST","headers":["Content-Type: application/json"],"body":"{}"}
```

`exec` 由 `/bin/sh -c` 执行。`http` 的 `url` 可指向任意 HTTP 或 HTTPS 地址,包括本机、局域网和公网;`method` 默认为 `GET`,`headers` 与 `body` 可省略。HTTP 响应包含状态行、标头和正文。两类任务经现有 `/api/ai/provider/chunk` 分片通道回传一个 JSON 结果,字段为 `exitCode`、`stdout`、`stderr`;HTTP 结果的 `stdout` 包含响应原文。非零退出码仍作为任务结果返回。云端分发及界面尚需配合此协议。

`发送` 模式仍使用自带的 HTTP/1.0 连接实现,不支持 HTTPS、鉴权或 HTTP 分块传输编码;这一限制不适用于使用 `curl` 的 `供给` 模式。

包说明.文言.md

# 云设备代理

受云府之命,或行程,或请远近网页,或达本机模型。亦可自主上送模型之请;以会话为函,存请辞及原应,可列可览。

`发送 <ollama|openai> <会话> <请辞文件> [主机] [端口]` 以请辞原文上送;前者达 `/api/chat`,后者达 `/v1/chat/completions`,协议明书于档。`列出` 枚举诸会话;`浏览 <会话>` 陈其往来;`网页 [端口]` 开本机览页。会话之名唯许英文字母、数字、横线、下划线。欲逐字见答,当于请辞置 `"stream": true`。默认主机 `127.0.0.1`,两协议默认端口各为 `11434`、`1234`。

`供给 <凭据文件> [本地主机]` 出连云府,承旧 `request` 模型之命,亦承 `exec` 行程之命与 `http` 请网页之命。`exec` 载 `id`、`command`,以 `/bin/sh -c` 行之;`http` 载 `id`、`url`,可载 `method`、`headers`、`body`。网址凡 HTTP、HTTPS 皆可,本机、邻网、远域无别。二命之果皆循 `/api/ai/provider/chunk` 返,以 JSON 书 `exitCode`、`stdout`、`stderr`;网页之状态行、首与体俱在 `stdout`。非零退码亦以果返。此器循启者之权,无自提权之术;云府之派令与界面,待彼端续成。