feat: add local model gateway and console tabs
This commit is contained in:
@@ -2,8 +2,102 @@
|
||||
|
||||
## 当前状态
|
||||
|
||||
ShareServer 包含控制台交互原型和可持久化的本地共享目录服务。GoodBuddy 已能注册设备、发布与
|
||||
撤销元数据,Web 能查看真实目录;生产身份、组织隔离、设备控制连接、授权及任务路由仍未实现。
|
||||
ShareServer 包含 Web 控制台、可持久化的本地共享目录和真实模型网关。GoodBuddy 已能注册
|
||||
设备、发布与撤销元数据,Web 能查看真实目录。模型网关支持 OpenAI 兼容上游的发现、映射与
|
||||
Chat Completions 转发,以及 B1 加密凭据、访问 Key 和模型授权。B1 代码已实现、验收部分完成;
|
||||
生产身份、组织隔离、设备控制连接、组织授权及任务路由仍未实现。
|
||||
|
||||
### 2026-10-07:前端真实目录完善
|
||||
|
||||
- `GoodBuddy 接入` 已接入本地共享 API,显示真实登记设备、登记时间、版本和关联发布数量;支持搜索、详情和跳转到该设备的共享内容。页面明确登记记录不代表在线、所有权或身份认证。
|
||||
- `共享中心` 新增真实发布记录的撤销确认和刷新流程。撤销调用 `POST /api/v1/sharing/publications/:id/revoke`,保留服务端撤销记录,不提供能力执行、知识正文读取或下载。
|
||||
- 其他规划页面改为按模块展示专属待接入边界和可用入口,不显示示例数据或不会生效的创建、审批、导出和配置操作。模型网关调用元数据仍从模型网关页面查看。
|
||||
- 新增共享 API 请求封装,统一错误信息和请求取消处理。前端自动化测试覆盖设备目录、待接入边界、共享筛选和撤销入口;本轮尚未进行浏览器视觉验收。
|
||||
- 顶部移除“技术预览 · 非生产服务”常驻文字;侧栏按业务重排为工作台、GoodBuddy 服务、共享资源、组织管理、运营与审计、系统和成员自助。各页面内部仍保留必要的实现边界说明。
|
||||
- 工作台增加服务拓扑,读取真实设备、发布记录和模型网关配置,展示 GoodBuddy 设备、ShareServer 与外部模型上游的关系及数量。空数据仅显示零接入状态,不生成示例节点;当前尚未进行浏览器视觉验收。
|
||||
|
||||
### 2026-10-05:B1 实现与部分验收
|
||||
|
||||
- 上游表单接收真实 API Key,支持保留、替换和清除;AES-256-GCM 密文随配置保存,主密钥位于
|
||||
数据目录外并单独备份。旧环境变量引用继续可读、可调用,前缀导入界面与 `/import-env` 已移除。
|
||||
- 客户端模型列表和聊天要求 Bearer Key,Key 原文仅创建时返回,持久化 SHA-256 摘要。
|
||||
授权绑定模型记录 UUID,修改别名不改变范围;审计关联 Key ID,不将其名称当作用户身份。
|
||||
管理与旧目录 API 校验实际回环 socket,并拒绝转发头;Vite `/api` 也只允许回环来源。
|
||||
容器/反向代理管理尚不支持,等待 B2 登录。
|
||||
- 实现轮验证记录:103 项测试通过,`npm run typecheck`、`npm run lint`、前后端构建通过。
|
||||
自动化覆盖不等于 GoodBuddy Desktop 或浏览器端到端验收。
|
||||
- 实现轮真实供应商验证共 5 次上游请求:1 次模型发现;1 次非流式请求使用 16 Token 上限,
|
||||
输出过短,未形成有效结论;1 次 SSE 请求成功,包含 reasoning 内容和 Token 用量;1 次非流式
|
||||
请求使用 1024 Token 上限并成功;1 次工具选择返回有效调用参数并在本地执行。工具结果未再次
|
||||
发送给上游,因此未完成完整工具往返。
|
||||
- 实际 API 验证确认重启后配置与访问 Key 保留,撤销后拒绝调用;存储含加密凭据而无明文秘密。
|
||||
上述真实验证由实现轮提供,本次文档同步没有新增供应商请求或读取环境秘密。
|
||||
- 浏览器已读取独立服务的网关页快照,确认空目录、访问密钥和客户端设置区域;点击被工具判定为超出视口,截图超时,未完成交互与视觉验收。独立服务已停止,默认数据未改动。
|
||||
- 本轮没有验证 GoodBuddy Desktop。B1 剩余验收包括从空存储经浏览器配置、刷新
|
||||
与重启,Desktop 连接测试和真实 SSE 会话,完整工具结果回传、用户停止时上游取消,以及真实
|
||||
环境下超时、流中断、错误主密钥、内网 HTTP 和部署来源限制。后端基础设计第 4.5 节继续保留完整
|
||||
清单;历史浏览器和旧网关结果不追溯成为 B1 验收。
|
||||
- 文档同步轮重新运行 `npm test`,9 个文件、103 项测试通过;lint、含类型检查的前后端构建
|
||||
通过。已阅读 deai-writing 并扫描相关文档,阻断项为 0;本次修改段落的字段枚举和验收限制
|
||||
按技术含义保留,未借审校改写历史记录。`git diff --check` 通过,仅编辑 README 与文档。
|
||||
|
||||
以下按原日期保留历史记录,其中“当前”“本轮”均指对应日期的实现,不描述 2026-10-05 的状态。
|
||||
|
||||
### 2026-10-04:基于 GoodBuddy 源码的后端基础设计
|
||||
|
||||
- 新增[后端基础设计](./backend-foundation-design.md),核对模型 profile、协议 URL、Main 凭据保存、
|
||||
设备共享 HTTP、资源发布字段、统一知识检索入口和 Office 设计状态。按实际客户端契约安排 B1 至 B6。
|
||||
- 首个实施单元为正常模型网关接入:密钥录入与服务端保存、开放模型、独立访问 Key、手工配置
|
||||
GoodBuddy 和真实对话验证。自动组织模型导入、身份权限、资源绑定、知识检索及文档归属另列依赖。
|
||||
- 修正功能入口、PRD、逻辑和技术文档中仍将模拟页面描述为当前实现的段落;保留历史验证记录。
|
||||
新接口与凭据方案标记待实现,未把当前无认证网关描述成已有访问 Key。
|
||||
- 本轮仅改 ShareServer 文档,未修改 GoodBuddy 或服务代码,未读取环境秘密、启动服务或调用模型。
|
||||
相邻仓库链接目标及新增章节锚点已核对,`git diff --check` 通过。新增设计的 deai-writing 扫描
|
||||
为 0 个阻断项;复核项涉及字段枚举和实施边界,按技术含义保留。未运行业务测试或进行运行时验收。
|
||||
|
||||
### 2026-10-02:移除界面模拟数据
|
||||
|
||||
- 控制台不再加载原型快照,移除虚构身份、组织、统计数量、活动以及模拟操作。
|
||||
概览改为服务入口,共享中心直接读取本地目录;未接入模块保留菜单并显示待实现说明。
|
||||
- 模型网关及共享目录继续使用真实 API,保留加载、空状态、失败重试和筛选。
|
||||
未删除本地持久化数据,未改动 GoodBuddy 仓库。旧原型源码及接口未在本轮删除,已退出控制台路由。
|
||||
- `npm test`:7 个文件、87 项测试通过;类型检查、lint 和前后端构建通过。
|
||||
浏览器访问本地开发地址返回 `Request blocked`,本轮未完成视觉复查。
|
||||
|
||||
### 2026-10-01:本地模型网关与真实上游联调
|
||||
|
||||
- `/model-gateway` 改为真实 API 页面,移除网关样例上游、模型和模拟调用。新增配置持久化、
|
||||
环境引用导入、模型发现、映射编辑与启停、网页请求测试及调用元数据。配置下发移除虚构模型、
|
||||
用户组与设备回执,改为待接入说明;文档及其他示例模块仍保留明确的演示边界。
|
||||
- API 支持模型列表、非流式 JSON 和流式 SSE 转发,透传工具调用数据和上游用量,不执行工具。
|
||||
具体路径、资源限制和存储契约见[技术设计第 4.2 节](./technical-design.md#42-本地模型网关契约已实现)。
|
||||
凭据只引用服务端环境变量,`scripts/dev.mjs` 支持显式 `--env-file`,加载值仅传给 API 子进程。
|
||||
- 测试使用 `../goodbuddy/.env.deepseek.local`,经用户授权加载;未修改 GoodBuddy 仓库。
|
||||
在独立端口 8792 和临时数据目录完成联调,保留原有 8787/5174 开发服务及项目数据。
|
||||
浏览器从空目录导入配置,发现接口返回 2 个模型,包含已配置模型 `deepseek-flash`。
|
||||
- 网页非流式请求返回预期内容,上游报告输入 41、输出 26 Token;另一条 SSE 请求收到 `[DONE]`
|
||||
和预期内容,用量为输入 37、输出 20 Token。停用映射后请求返回 403,错误请求 ID 与审计一致,
|
||||
被拒请求的未知用量未计为零。真实工具调用与 GoodBuddy 桌面端模型调用未在本轮验收。
|
||||
- Playwright/Edge 验证模型发现、网页请求、停用与启用、刷新后保留配置并清除测试正文;
|
||||
1440px 和 390px 的深浅主题未见横向溢出或页面脚本错误,并复核截图。重启独立 API 后,
|
||||
1 个上游、1 个模型和 3 条审计与重启前一致;持久化文件不含测试凭据、提示词或响应正文。
|
||||
独立测试服务已停止,测试配置未导入项目默认数据目录。
|
||||
- `npm test`:7 个文件、77 项测试通过;`npm run lint`、`npm run build`(含类型检查)通过。
|
||||
测试覆盖坏存储、上游错误、超限、流中断、超时、取消、审计写入失败和前端失败重试。
|
||||
设计文档已按真实接口更新并使用 deai-writing 复核;历史演示验证记录保留原有时间与范围。
|
||||
|
||||
### 2026-10-01:本地仓库同步与开发入口
|
||||
|
||||
- 已逐项核对本地未提交代码和未跟踪源码:另一台机器提交的 `c9d5e63` 已包含这些功能与测试,
|
||||
代码差异仅为目录迁移后的引用和构建输出路径调整;`9fa8f3e` 进一步补充 Office 私有部署设计。
|
||||
- 按用户要求将本地 `main` 对齐 `origin/main` 的 `9fa8f3e`,清理旧路径重复源码,未产生合并提交。
|
||||
同步后工作区干净;本地数据、依赖和忽略文件保留,GoodBuddy 仓库单独处理,本轮未操作。
|
||||
- 本地开发在仓库根目录运行 `npm run dev`,入口为 `scripts/dev.mjs`,同时启动 `dev:api` 与
|
||||
`dev:web`。API 使用 Node watch,前端使用 Vite 热更新;默认 Web 地址为 `http://127.0.0.1:5174`,
|
||||
GoodBuddy 连接 API 地址 `http://127.0.0.1:8787`,Web 的 `/api` 请求代理到该端口。
|
||||
- 首次安装依赖用 `npm ci`,终端按 `Ctrl+C` 停止开发服务。开发时先停止占用同一 API 端口或
|
||||
数据目录的旧预览/容器实例;共享记录默认保存在 `data/sharing.json`。
|
||||
- 本轮核对 Git 差异与启动配置,未重新启动服务或运行测试、构建。
|
||||
|
||||
### 2026-10-01:Office 私有部署第一阶段设计
|
||||
|
||||
|
||||
Reference in New Issue
Block a user