docs: 按实际进度诚实化能力清单(已实现/降级/未实现三档)
This commit is contained in:
1 parent
cf25c6643d
commit
f46692c329
3 files changed
+164
-9
No files matched your search
+2
-2
@@ -21,7 +21,7 @@
|
||||
|---|------|------|------|:---:|------|
|
||||
| 1 | `/api/v1/auth/login` | POST | 否 | ✅ | `{username,password}` → `{data:{token,jwt}}`(24h,owner) |
|
||||
| 2 | `/api/v1/health` | GET | 否 | ✅ | 健康检查 `{data:{status:"ok"}}` |
|
||||
| 3 | `/api/v1/chat` | POST | JWT | ✅ | `{text,image?,deviceId?,stream?}` → `{data:{reply}}`;`stream:true` 时经 WS 触发流式。`image` 为 base64 data: URI 或 http(s) URL,入视觉真推理(design/06);`deviceId` 为**客户端生成的具体端标识**(design/16 §4.5,如 `web:chrome:a1b2c3`,可选),落库到消息、便于主人知道从哪个端发来。**会话编排(design/15)**:非流式且该会话「正忙」时**不阻塞**,返回 `202` `{data:{queued:true,queueDepth}}`(稍后按上下文续接);待处理队列满时返回 `409` `{error:{code:"chat_busy"}}` |
|
||||
| 3 | `/api/v1/chat` | POST | JWT | ✅ | `{text,image?,deviceId?,stream?}` → `{data:{reply}}`;`stream:true` 时经 WS 触发流式。`image` 为 base64 data: URI 或 http(s) URL,入视觉路由(design/06)——**真视觉需配 `LLM_VISION_MODEL`/凭据,无凭据时降级为主模型直接看图或视觉·OCR 工具文本描述**;`deviceId` 为**客户端生成的具体端标识**(design/16 §4.5,如 `web:chrome:a1b2c3`,可选),落库到消息、便于主人知道从哪个端发来。**会话编排(design/15)**:非流式且该会话「正忙」时**不阻塞**,返回 `202` `{data:{queued:true,queueDepth}}`(稍后按上下文续接);待处理队列满时返回 `409` `{error:{code:"chat_busy"}}` |
|
||||
| 4 | `/api/v1/sessions` | GET | JWT | ✅ | `{data:[session...]}`。**会话持久化(design/16)**:注入 HistoryStore 后返回持久化会话元数据 `{data:[{id,type("main"|"sub"),title?,createdAt}]}`(主会话 `id="web"` 恒在首位,次级 `web:<uuid>`);未注入时退化回渠道会话列表 |
|
||||
| 5 | `/api/v1/sessions` | POST | JWT(owner/admin) | ✅ | **新建次级会话** → `201 {data:{sessionId}}`(`sessionId="web:<uuid>"`);未注入 HistoryStore 回 `501 not_implemented` |
|
||||
| 6 | `/api/v1/sessions/{id}/messages` | GET | JWT(owner/admin) | ✅ | **热分页拉历史**:`?limit=&before=&platform=` 默认 `limit=50`(上限 200)、`before`=上一页最旧 `createdAt`(毫秒),按时间倒序 `{data:[{id,sessionId,role,content,mode?,mood?,image?,thinking?,platform?,deviceId?,senderName?,createdAt}]}`;`platform` 为**可选**来源平台过滤(design/16 §4.4)——Web 端不传(=全量共享主会话),IM 适配器传**本平台**(如 `telegram`)只拉本渠道消息;`deviceId` 为**客户端具体端标识**(design/16 §4.5,如 `web:chrome:a1b2c3` / `weixin-ilink:conf0:wx_uid`);`senderName` 为**第三方发送者昵称**(design/16 §4.6,群聊/陌生人私聊消息带,主人私聊为空,`omitempty`);非法 `limit`/`before` 回 `400`;未注入 HistoryStore 回 `501` |
|
||||
@@ -124,7 +124,7 @@
|
||||
- **向后兼容**:未映射/无法确定的事件仍走 `stream_chunk` + `stream_end`(非流式回退路径)。
|
||||
- **上行(客户端→服务端)**: `mode_switch` / `chat`(跑 loop 并广播流式) / `voice_input` / `subagent_ask` / `task_output_query` / `interrupt`。
|
||||
- **`interrupt`**(上行,客户端→服务端):`{sessionId}` → 会话编排器中断(design/15 §3)——取消该会话当前在跑的任务(context cancel)、清空其待处理队列、回 `session_interrupted`;用户说「停下/算了/换个话题」时发。命中空闲会话为 no-op。
|
||||
- **`voice_input`**(上行,客户端→服务端):`_{audio?, format?, text?, sessionId?}`。`audio` 为 base64(或 data: URI)音频,`format` 为其编码(`wav`/`mp3`/`ogg`);`text` 为已转写文本时跳过 STT。服务端走 STT→agent 聊天→TTS(design/06 §1),回复经 `voice_output` 定向回该连接。无注入语音服务时回 `error` 帧(`voice unavailable`)。
|
||||
- **`voice_input`**(上行,客户端→服务端):`_{audio?, format?, text?, sessionId?}`。`audio` 为 base64(或 data: URI)音频,`format` 为其编码(`wav`/`mp3`/`ogg`);`text` 为已转写文本时跳过 STT。服务端走 STT→agent 聊天→TTS(design/06 §1),回复经 `voice_output` 定向回该连接。**真 STT/TTS 需配云端 endpoint**;无凭据时后端走降级链(cloud 端点为占位,edge-tts/espeak 未实现,最终 `silent` 返回空音频)。无注入语音服务时回 `error` 帧(`voice unavailable`)。
|
||||
- **`voice_output`**(下行,服务端→客户端):`{audio, format, text, reply}`。`audio` 为 base64 合成音频,`format` 为其编码,`text` 为识别文本,`reply` 为助手回复文本。
|
||||
- **向后兼容**:未映射/无法确定的事件仍走 `stream_chunk` + `stream_end`(非流式回退路径)。
|
||||
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
# Cyrene v2 后端 API 完整参考(api-reference.md)
|
||||
|
||||
> **用途**:本文档是 Cyrene v2 **全部后端 API(REST + WebSocket)的唯一详细参考**,供 Web 前端 / 移动端 / 原生客户端 / IM 桥接等**跨平台客户端开发者**使用。所有字段名、取值、鉴权规则、状态码均**以代码为准**(`internal/services/gateway/*.go`)。
|
||||
> **主文档关系**:`Docs/api-client.md` 为面向使用者的**摘要**;`Docs/api-reference.md` 为**超详细主文档**。
|
||||
> **维护铁律**:每实现/变更一个端点或 WS 事件必须同步更新本文档;契约变更版本化(REST 走 `/api/v1`,未来破坏性变更升 v2),不得破坏既有客户端。
|
||||
> **当前版本**:以代码为准(gateway 已在 M0–M16 若干里程碑落地;详见各端点「里程碑」注记)。
|
||||
|
||||
---
|
||||
|
||||
## 0. 基础约定(全局)
|
||||
|
||||
- **Base URL**:`http://<host>:8080`。网关是唯一对外端口(单二进制、单端口 `:8080`、零跨进程 IPC 红线);生产一般经反向代理 + HTTPS。
|
||||
- **版本**:REST 全部挂在 `/api/v1/{resource}`;WS 挂 `/ws/chat`;管理端点挂 `/api/v1/admin/*`。
|
||||
- **响应统一信封**:
|
||||
- 成功:`{"data": <payload>}`(HTTP 200 / 201 / 202 / 204)。
|
||||
- 失败:`{"error": {"code": <string>, "message": <string>}}`(HTTP 400/401/403/404/409/500/501 等)。
|
||||
- **错误码**:业务错误带稳定字符串 `code`(如 `unauthorized` / `not_found` / `bad_request` / `chat_busy` / `not_implemented`),便于客户端分支;`message` 面向人读。
|
||||
- **CORS**:`Access-Control-Allow-Origin` 为配置的 `ALLOWED_ORIGINS` 白名单(`*` 时放开);`Allow-Methods: GET, POST, PUT, DELETE, OPTIONS`;`Allow-Headers: Authorization, Content-Type`;`Max-Age: 600`。`OPTIONS` 预检直接回 `204`。同源/无 Origin 请求放行。**注意:CORS 只允许 `Authorization, Content-Type` 头——若客户端要额外发送 `X-API-Version`,需自行在网关侧放开或仅作为文档惯例(当前服务端**不校验**该头)。**
|
||||
- **请求日志**:每个请求由 `logging` 中间件记录一行(method/path/status/duration_ms),并计入可观测性指标。panic 由 `recover` 中间件兜底为 `500 {error:{code:internal,...}}`,不崩溃进程。
|
||||
- **超时**:WS 连接 ping 周期 54s、pong 等待 60s、写超时 10s;读上限 4096 字节/帧。
|
||||
|
||||
### 0.1 鉴权模型(RBAC)
|
||||
|
||||
认证基于 **JWT Bearer**(`internal/auth`),角色层级 **owner > admin > viewer**(`owner` 满足 admin/viewer,`admin` 满足 viewer,`viewer` 仅满足 viewer)。
|
||||
|
||||
- **获取 token**:`POST /api/v1/auth/login`(见 §2.2)。token 有效期 **24 小时**(`tokenTTL`),签发角色恒为 `owner`。
|
||||
- **REST 鉴权**:请求头 `Authorization: Bearer <JWT>`。`s.auth.Authorize(...)` 中间件:
|
||||
- 缺失/无效/过期 token → `401 {error:{code:"unauthorized",...}}`。
|
||||
- 有效 token 但角色不足 → `403 {error:{code:"forbidden",...}}`。
|
||||
- `Authorize()`(无参)→ 任意**已认证**角色通过(only read metadata, e.g. GET /sessions、GET /personas)。
|
||||
- `Authorize(owner)` → 仅 owner;`Authorize(owner, admin)` → owner 或 admin。
|
||||
- **WS 鉴权**:`GET /ws/chat` 通过 `?token=<JWT>` 或 `Authorization: Bearer` 取 token(`wsToken`),`Verify` 通过即可升级;**不做角色门槛**(任何有效 token 均可连接),但 `history` 回放与 `proactive` 推送等按角色处理(见 §6)。
|
||||
- **API Key(`X-API-Key`)**:⚠️ **当前实现未接入**。认证/授权中间件 `Authorize` 只校验 `Authorization: Bearer <JWT>`。`POST /api/v1/admin/users/apikey` 会**签发**一个明文 API key(仅返回一次),`GET /api/v1/admin/users` 会列出其掩码,但**网关的鉴权中间件目前不接受 `X-API-Key` 头**(`auth.APIKey.Verify/Lookup` 仅在单元测试中调用)。本文档按代码如实标注:**所有端点实际鉴权 = Bearer JWT**。若未来把 API key 接入中间件,需同步更新本档。
|
||||
|
||||
### 0.2 X-API-Version 头
|
||||
|
||||
`Docs/api-client.md` 约定客户端每个请求带 `X-API-Version: 1`。**当前服务端不校验该头**(未在代码中读取),仅作为客户端契约惯例;如需服务端强校验,需另行实现。本文档在 curl 示例中**带上该头**以示惯例。
|
||||
|
||||
### 0.3 上传 / 媒体(重要确认)
|
||||
|
||||
- **无 `/upload` 端点**。图片走 `POST /api/v1/chat` 或 WS `chat` 的 `image` 字段(**base64 data: URI** 或 http(s) URL,入视觉真推理,见 §6 流式与直连)。
|
||||
- **无 REST 语音端点**。语音**只走 WS**:上行 `voice_input`(base64 音频或已转写 text),下行 `voice_output`(合成音频 base64)。见 §6.5。
|
||||
- 管理端导入知识文档(RAG)也走 JSON body 文本(`POST /api/v1/admin/rag`),非文件上传。
|
||||
|
||||
---
|
||||
|
||||
## 1. REST 端点总览
|
||||
|
||||
> 下表为**全量登记**;下文 §2–§5 每端点给出字段级说明。`鉴权列`:`无` / `JWT`(任意已认证) / `owner|admin` / `owner`。`里程碑` 为代码/设计归属的大致里程碑(M8 网关、M9 前端、M10 补齐写、M16 会话持久化等)。
|
||||
|
||||
### 1.1 公开(无鉴权)
|
||||
|
||||
| # | 方法 | 路径 | 状态 | 说明 | 里程碑 |
|
||||
|---|------|------|:---:|------|:---:|
|
||||
| 1 | GET | `/api/v1/health` | 200 | 存活探针 `{status:"ok"}` | M8 |
|
||||
| 2 | POST | `/api/v1/auth/login` | 200 | 换取 JWT(恒 owner) | M8 |
|
||||
|
||||
### 1.2 用户侧(已认证)
|
||||
|
||||
| # | 方法 | 路径 | 鉴权 | 状态 | 说明 | 里程碑 |
|
||||
|---|------|------|------|:---:|------|:---:|
|
||||
| 3 | POST | `/api/v1/chat` | owner\|admin | 200/202/409 | 发消息(同步回复或触发 WS 流式) | M8/M15 |
|
||||
| 4 | GET | `/api/v1/sessions` | JWT | 200 | 会话列表(持久化会话 or 渠道会话回退) | M16 |
|
||||
| 5 | GET | `/api/v1/personas` | JWT | 200 | 人格列表 | M8 |
|
||||
| 6 | GET | `/api/v1/sessions/{id}/messages` | owner\|admin | 200 | 会话消息热分页 | M16 |
|
||||
| 7 | POST | `/api/v1/sessions` | owner\|admin | 201 | 新建次级会话 | M16 |
|
||||
| 8 | DELETE | `/api/v1/sessions/{id}` | owner\|admin | 200 | 删除次级会话 | M16 |
|
||||
|
||||
### 1.3 管理后台(`/api/v1/admin/*`)
|
||||
|
||||
读(`owner|admin`)+ 写(`owner`,全程审计)。下表按注册顺序,标注鉴权与状态。
|
||||
|
||||
| # | 方法 | 路径 | 鉴权 | 状态 | 说明 | 里程碑 |
|
||||
|---|------|------|------|:---:|------|:---:|
|
||||
| 9 | GET | `/api/v1/admin/personas` | owner\|admin | 200 | 人格列表 | M8 |
|
||||
| 10 | GET | `/api/v1/admin/sessions` | owner\|admin | 200 | 会话列表 | M16 |
|
||||
| 11 | GET | `/api/v1/admin/memories` | owner\|admin | 200 | 记忆列表 | M8 |
|
||||
| 12 | GET | `/api/v1/admin/plugins` | owner\|admin | 200 | 插件/能力列表 | M8 |
|
||||
| 13 | GET | `/api/v1/admin/channels` | owner\|admin | 200 | 渠道列表 + 已配账号(掩码+bot 身份+capabilities) | M8/M17 |
|
||||
| 14 | GET | `/api/v1/admin/channels/messages` | owner\|admin | 200 | IM 适配器日志流(全量/平台/适配器三粒度) | M16 |
|
||||
| 15 | GET | `/api/v1/admin/channels/{platform}/messages` | owner\|admin | 200 | 某平台 IM 适配器日志流 | M16 |
|
||||
| 16 | GET | `/api/v1/admin/iot` | owner\|admin | 200 | IoT 设备列表 | M8 |
|
||||
| 17 | GET | `/api/v1/admin/llm` | owner\|admin | 200 | LLM 多厂商多模型组(APIKey 不回显) | M8/M15 |
|
||||
| 18 | GET | `/api/v1/admin/automations` | owner\|admin | 200 | 自动化/提醒列表 | M8 |
|
||||
| 19 | GET | `/api/v1/admin/users` | owner\|admin | 200 | 账号/API-key 列表 | M8 |
|
||||
| 20 | GET | `/api/v1/admin/backthink` | owner\|admin | 200 | 后台思考记录 | M9/M10 |
|
||||
| 21 | GET | `/api/v1/admin/rag` | owner\|admin | 200 | 知识库文档列表(可带 `?query=` 并入命中) | M10 |
|
||||
| 22 | POST | `/api/v1/admin/rag/query` | owner\|admin | 200 | 知识库检索 | M10 |
|
||||
| 23 | POST | `/api/v1/admin/rag/delete` | owner\|admin | 501 | 删除文档(写为 M10,当前 501) | M10 |
|
||||
| 24 | GET | `/api/v1/admin/observability/metrics` | owner\|admin | 200 | 网关请求指标 | M10 |
|
||||
| 25 | GET | `/api/v1/admin/observability/trace` | owner\|admin | 200 | 最近 trace span | M10 |
|
||||
| 26 | GET | `/api/v1/admin/observability/audit` | owner\|admin | 200 | 审计记录 | M10 |
|
||||
| 27 | POST | `/api/v1/admin/plugins/policy` | **owner** | 200 | 写工具策略(审计) | M8 |
|
||||
| 28 | GET | `/api/v1/admin/sessions/{id}/export` | owner\|admin | 200 | 导出会话元数据 | M8 |
|
||||
| 29 | POST | `/api/v1/admin/personas` | **owner** | 201 | 新建人格 | M8 |
|
||||
| 30 | PUT | `/api/v1/admin/personas/{id}` | **owner** | 200 | 编辑人格 | M8 |
|
||||
| 31 | POST | `/api/v1/admin/users` | **owner** | 501 | 新建用户(M10) | M10 |
|
||||
| 32 | POST | `/api/v1/admin/users/apikey` | **owner** | 201 | 签发 API key | M8 |
|
||||
| 33 | DELETE | `/api/v1/admin/users/apikey/{id}` | **owner** | 200 | 吊销 API key | M8 |
|
||||
| 34 | POST | `/api/v1/admin/iot/{id}/control` | **owner** | 200 | 设备控制 | M8 |
|
||||
| 35 | POST | `/api/v1/admin/iot/scenarios` | **owner** | 501 | IoT 场景(M10) | M10 |
|
||||
| 36 | POST | `/api/v1/admin/iot/rules` | **owner** | 501 | IoT 规则(M10) | M10 |
|
||||
| 37 | POST | `/api/v1/admin/automations` | **owner** | 201 | 新建自动化/提醒 | M8 |
|
||||
| 38 | POST | `/api/v1/admin/automations/{id}/run` | **owner** | 200 | 手动触发规则 | M8 |
|
||||
| 39 | DELETE | `/api/v1/admin/automations/{id}` | **owner** | 200 | 删除规则 | M8 |
|
||||
| 40 | POST | `/api/v1/admin/llm` | **owner** | 201 | 保存 LLM provider 组(落盘 + 热更新) | M8/M15 |
|
||||
| 41 | POST | `/api/v1/admin/llm/test` | **owner** | 200 | 真实模型调用测试 | M8/M15 |
|
||||
| 42 | POST | `/api/v1/admin/channels/open` | **owner** | 200 | 连接渠道 | M8 |
|
||||
| 43 | POST | `/api/v1/admin/channels/close` | **owner** | 200 | 断开渠道 | M8 |
|
||||
| 44 | POST | `/api/v1/admin/channels/test` | **owner** | 200 | 结构性身份识别测试 | M8/M16 |
|
||||
| 45 | GET | `/api/v1/admin/channels/{platform}/login-qr` | **owner** | 200 | 微信 iLink 扫码绑定 QR | M16 |
|
||||
| 46 | GET | `/api/v1/admin/channels/{platform}/login-status` | **owner** | 200 | 微信 iLink 扫码状态 | M16 |
|
||||
| 47 | GET | `/api/v1/admin/channels/{platform}/view` | **owner** | 200 | KOOK 账号聚合视图 | M17 |
|
||||
| 48 | GET | `/api/v1/admin/channels/{platform}/friends` | **owner** | 200 | KOOK 好友/申请/屏蔽 | M17 |
|
||||
| 49 | POST | `/api/v1/admin/channels/{platform}/friend/handle` | **owner** | 200 | KOOK 处理好友申请 | M17 |
|
||||
| 50 | POST | `/api/v1/admin/channels/{platform}/message/test` | **owner** | 200 | KOOK 发送测试消息 | M17 |
|
||||
| 51 | PUT | `/api/v1/admin/channels/{platform}/config` | **owner** | 201 | 保存渠道账号配置(落盘 + 热更新) | M16 |
|
||||
| 52 | DELETE | `/api/v1/admin/channels/{platform}/config` | **owner** | 200 | 删除渠道账号 | M16 |
|
||||
| 53 | POST | `/api/v1/admin/plugins/install` | **owner** | 501 | 安装插件(需源码清单) | M10 |
|
||||
| 54 | POST | `/api/v1/admin/plugins/uninstall` | **owner** | 200 | 移除插件 | M8 |
|
||||
| 55 | POST | `/api/v1/admin/memories` | **owner** | 201 | 手动添加记忆 | M8 |
|
||||
| 56 | POST | `/api/v1/admin/memories/search` | **owner** | 200 | 记忆检索 | M8 |
|
||||
| 57 | POST | `/api/v1/admin/rag` | **owner** | 201 | 导入知识文档 | M10 |
|
||||
| 58 | POST | `/api/v1/admin/system/revoke-keys` | **owner** | 200 | 吊销全部 API key | M10/M11 |
|
||||
| 59 | POST | `/api/v1/admin/system/rotate-jwt` | **owner** | 200 | 轮换 JWT 密钥 | M10/M11 |
|
||||
| 60 | POST | `/api/v1/admin/system/backup` | **owner** | 200 | 备份数据库 | M10/M11 |
|
||||
| 61 | POST | `/api/v1/admin/system/restore` | **owner** | 200 | 恢复数据库 | M10/M11 |
|
||||
|
||||
**另**:外部 webhook 回调(如 `webhook` 渠道的 HMAC 回调)由 composition root 通过 `Deps.Webhooks` 动态挂载,**不走网关鉴权**(handler 自校验签名/授权);路径由调用方决定,不在上表枚举。
|
||||
|
||||
**WS**:`GET /ws/chat`(握手,JWT,见 §6)。
|
||||
@@ -1,20 +1,44 @@
|
||||
# Cyrene v2 — 昔涟
|
||||
|
||||
> 自托管的「人格化通用智能体运行时」。一个 Go 单二进制,默认以「全能小女友」的人格陪伴你;在聊天/开发/家庭/工作等模式间无感切换;像 OpenClaw 一样接入多个聊天平台(QQ/微信/Telegram…);各人格独立记忆与情绪、共享同一套能力。
|
||||
> 自托管的「人格化通用智能体运行时」。一个 Go 单二进制,默认以「全能小女友」的人格陪伴你;在聊天/开发/家庭/工作等模式间无感切换;如 OpenClaw 般接入聊天平台(**KOOK / 微信 iLink 已接通**,QQ / Telegram 待接通);各人格独立记忆与情绪、共享同一套能力。
|
||||
|
||||
**状态**:M0–M11 已完成,M12 收尾中 | **分支**:`dev` | 设计文档见 `DevDocs/00-overview.md`
|
||||
**状态**:按里程碑 M0–M12 推进中;每一项能力以「当前能力」三档清单(已实现 / 降级 / 未实现)为准,**不作整体完成宣称**。 | **分支**:`dev` | 设计文档见 `DevDocs/00-overview.md`
|
||||
|
||||
---
|
||||
|
||||
## 核心特性
|
||||
## 当前能力(按真实状态分三档,不虚标)
|
||||
|
||||
> 状态以实际开发进度为准;标注「降级 / 占位」的项依赖外部凭据 / endpoint 才能达到完整形态。
|
||||
|
||||
### ✅ 已实现
|
||||
|
||||
- **单二进制、进程内协作** — 所有服务同进程打包,仅 gateway `:8080` 对外;模块间走进程内接口 + 事件总线,**零跨进程 IPC**
|
||||
- **人格化陪伴** — 多人格 / 情绪状态机 / 好感度;per-persona 记忆隔离,能力全局共享
|
||||
- **通用 Agent 运行时** — 多供应商 LLM(per-role 路由 + 降级)、工具调用(8 轮上限)、子代理编排、记忆/RAG(三类作用域 + 向量)、多模态(vision 分层路由 + voice 降级链)
|
||||
- **多平台 IM(内置渠道插件)** — OneBot v11 QQ / ClawBot iLink 微信 / Telegram / Webhook,可配置、随二进制分发
|
||||
- **通用 Agent 运行时** — 多供应商 LLM(per-role 路由 + 降级)、工具调用(8 轮上限)、子代理编排(生命周期 / 合并 / 上限)、记忆三类作用域 + RAG、会话持久化 / 主·次级会话
|
||||
- **多平台 IM 渠道插件(已接通)** — KOOK、微信 iLink 已打通;OneBot v11 QQ / Telegram / Webhook 渠道插件均内置、可配置、随二进制分发
|
||||
- **微信 iLink 扫码绑定 + 自动认主** — 扫码登录(`login-qr` / `login-status`)已打通;绑定确认时**自动把主人 id 登记进 owner 白名单**(热生效,无需人工补录)
|
||||
- **多渠道主会话同步** — AI 渠道(web / kook / weixin)主人私聊汇聚到主会话,Web 端免刷新镜像;群聊 / 陌生人走独立隔离会话
|
||||
- **参与度引擎**、**backthink 自主思考**(读写记忆 + 调工具 + 主动推送)、**全链路流程可视化 P1**(`graph_update`)
|
||||
- **系统设置(4 个可写操作)** — 吊销全部 API key / 轮换 JWT / 备份 / 恢复,后端 + 前端真实操作已接通(owner-only + 审计 + 前端确认弹窗)
|
||||
- **语境感知 UI** — 同一会话上下文下切换 聊天/开发/家庭/工作/知识/语音/视觉/子代理监控/设置 模式(Miuix 设计语言)
|
||||
- **超级详尽后台管理面板**(`/admin`)— 15 大模块统一管理(RBAC + 审计)
|
||||
- **单二进制、多平台** — Linux / Windows / macOS / ARM / Termux
|
||||
- **多平台部署** — Linux / Windows / macOS / ARM / Termux;SQLite 默认(PG + pgvector 可选增强,配置后真生效)
|
||||
|
||||
### ⚠️ 部分实现(降级 / 占位)
|
||||
|
||||
- **视觉(真实模型未接通)** — vision 分层路由与推理入口已实现,但**真实视觉 / OCR 模型服务未接入**:需配置 `LLM_VISION_MODEL` 及凭据;无凭据时降级为主模型直接看图 / 视觉·OCR 工具文本描述
|
||||
- **语音(ASR / TTS 真模型未接通)** — STT→chat→TTS 链路已接,但**真实 ASR / TTS provider 未接入**:cloud STT 端点为占位(空 endpoint → 降级),edge-tts / espeak 为未实现占位;无凭据时全程降级(`silent` 返回空音频)。需配 ASR / TTS endpoint
|
||||
- **RAG 语义 / 向量检索** — 导入文档当前走 keyword / line 路径(知识库 store 无直属向量索引),向量语义为**优雅降级**;配置 PG + pgvector 增强后真走语义路径
|
||||
- **微信 iLink 绑定依赖微信侧资格** — 扫码协议已对齐官方并打通;仍需微信账号侧具备 iLink bot 绑定资格(账号环境依赖)
|
||||
- **checkpoint(durable execution)** — 仅有 `saveCheckpoint` 保存、**无恢复 / Resume**(长任务中断不可回放,半壳)
|
||||
|
||||
### ❌ 未实现(当前不提供)
|
||||
|
||||
- **QQ(OneBot v11)** / **Telegram** — 渠道插件代码存在,但未接通(需真 OneBot/Bot token)
|
||||
- **系统设置**:**编辑环境变量 / 重启服务 / 检查更新** — 后端未实现,不提供
|
||||
- **知识库删除**(`POST /api/v1/admin/rag/delete` 写操作)— 当前返回 `501 not_implemented`
|
||||
- **全链路 P2** — 并行子代理分支 / 泳道 / 节点实时日志(当前 loop 未在 span 上记录事件,`log[]` 常空)
|
||||
- **LLM 异步记忆提取** — 仅手工提取接线,LLM 异步提取未接入
|
||||
|
||||
---
|
||||
|
||||
@@ -139,7 +163,7 @@ EMBEDDING_MODEL=Qwen3-Embedding-0.6B
|
||||
| 后端 | Go 1.26(单二进制运行时)、进程内总线(可换 NATS)、slog(日志带 `source` 来源标注) |
|
||||
| 前端 | React 19、TypeScript、Vite 6、Tailwind 4、Zustand 5、PWA(Miuix 设计语言) |
|
||||
| 数据库 | **SQLite 默认**(纯 Go、单二进制);PG + pgvector 可选增强(配置后真生效) |
|
||||
| 多模态 | vision(分层路由:主/视觉/OCR)、async voice(STT→agent→TTS 降级链) |
|
||||
| 多模态 | vision(分层路由:主/视觉/OCR;真模型未接通,无凭据降级主模型)、async voice(STT→agent→TTS 降级链;真 ASR/TTS 未接通,无凭据降级 silent) |
|
||||
| LLM | 多供应商(OpenAI 兼容/订阅/本地/网关)、per-role 路由 + 降级 |
|
||||
|
||||
---
|
||||
|
||||
Reference in new issue
Block a user