docs: define saas manager agnet architecture
This commit is contained in:
@@ -1,73 +0,0 @@
|
||||
# Heicode(源码目录 `cc-haha`)
|
||||
|
||||
本目录实现 **Heicode** 终端与桌面客户端(CLI + Desktop + 本地服务)。目录名 `cc-haha` 为历史工程名;对外产品与文档统一称 **Heicode**(与 **Heicode Manager** 区分时亦称「Heicode 客户端」)。目标是把终端编程体验产品化,并对接企业模型平台。
|
||||
|
||||
## 你能得到什么
|
||||
|
||||
- 一个可运行的 CLI + Desktop 客户端
|
||||
- 双平台登录入口(TaijiAICloud / ClawdRouter)
|
||||
- 动态模型拉取,不写死模型名单
|
||||
- 适配企业交付的品牌化 UI
|
||||
|
||||
## 核心能力
|
||||
|
||||
- **登录流程**:优先浏览器 OAuth,兼容平台令牌登录
|
||||
- **模型发现**:通过 provider API 拉全量模型,不强绑定某一家模型
|
||||
- **运行方式**:同一套 provider 配置可在 CLI 与 Desktop 复用
|
||||
- **本地 sidecar**:桌面端通过本地服务层与 provider 通信,便于状态管理和扩展
|
||||
|
||||
## 目录速览
|
||||
|
||||
```text
|
||||
cc-haha/
|
||||
├── bin/ # 启动入口(heicode、兼容别名)
|
||||
├── src/
|
||||
│ ├── server/ # 本地 API/WS 服务
|
||||
│ │ ├── api/heicode-auth.ts # 登录相关接口
|
||||
│ │ ├── api/providers.ts # 模型拉取与 provider API
|
||||
│ │ └── config/providerPresets.*
|
||||
│ └── ... # CLI 逻辑
|
||||
├── desktop/ # Tauri + React 桌面端
|
||||
└── docs/ # 产品和技术文档
|
||||
```
|
||||
|
||||
## 快速启动
|
||||
|
||||
```bash
|
||||
# 安装依赖
|
||||
bun install
|
||||
|
||||
# 启动本地服务
|
||||
bun run src/server/index.ts
|
||||
|
||||
# 启动桌面端(新终端)
|
||||
cd desktop
|
||||
bun run tauri dev
|
||||
```
|
||||
|
||||
本地联调 TaijiAICloud:
|
||||
|
||||
```bash
|
||||
HEICODE_TAIJIAICLOUD_BASE_URL=http://localhost:3000 bun run src/server/index.ts
|
||||
```
|
||||
|
||||
## 开发约定
|
||||
|
||||
- `providerPresets` 只保留产品确定的 provider
|
||||
- UI 不暴露无关配置项(例如已移除 Providers 菜单)
|
||||
- 模型来源以 provider 实际返回为准
|
||||
- 认证相关改动优先保持“零配置”用户体验
|
||||
|
||||
## 已完成改造(本分支)
|
||||
|
||||
- 品牌统一为 `Heicode`
|
||||
- 登录页去除 API Key 输入区域及相关提示文案
|
||||
- 设置页移除 Providers 菜单
|
||||
- 侧边栏和 About 移除 GitHub 链接与图标
|
||||
- 模型选择器按 provider API 动态拉取模型,修复无 Claude provider 仍展示 Claude 模型的问题
|
||||
|
||||
## 下一步建议
|
||||
|
||||
- 增加登录与模型发现的 E2E 冒烟测试
|
||||
- 将 OAuth 流程状态可视化(处理中/失败原因/重试)
|
||||
- 增加 provider 超时与降级策略(提升桌面端可用性)
|
||||
+4
-3
@@ -7,6 +7,7 @@
|
||||
| 文档 | 用途 |
|
||||
|------|------|
|
||||
| [`vision-heicode-full-stack-agentic-dev.md`](./vision-heicode-full-stack-agentic-dev.md) | 产品愿景与协作范式(方向性,非排期) |
|
||||
| [`saas-manager-agnet-architecture-plan.md`](./saas-manager-agnet-architecture-plan.md) | SaaS Manager / NewAPI / Agnet / Secret Store 的新边界与实施计划 |
|
||||
| [`glossary.md`](./glossary.md) | 术语表:Heicode / Manager / 客户端 / 子 agent / SK 等 |
|
||||
| [`architecture.md`](./architecture.md) | 架构图与关键数据流(mermaid) |
|
||||
| [`sk-lifecycle.md`](./sk-lifecycle.md) | SK(Skill 资产)单点真相:来源、快照、刷新、写权边界 |
|
||||
@@ -25,11 +26,11 @@
|
||||
|
||||
适合实现 Agnet 平台侧、与 Heicode 对接编排或事件流的工程师。
|
||||
|
||||
1. [`glossary.md`](./glossary.md) → [`architecture.md`](./architecture.md)
|
||||
1. [`saas-manager-agnet-architecture-plan.md`](./saas-manager-agnet-architecture-plan.md) → [`glossary.md`](./glossary.md) → [`architecture.md`](./architecture.md)
|
||||
2. [`integration/README.md`](./integration/README.md):集成方阅读地图
|
||||
3. [`sk-lifecycle.md`](./sk-lifecycle.md):SK 边界(Heicode 端写、Agnet 只读快照)
|
||||
4. [`integration/agnet-platform-api-design.md`](./integration/agnet-platform-api-design.md):详细 API 设计
|
||||
5. [`integration/agnet-user-deployment-flow.md`](./integration/agnet-user-deployment-flow.md):用户绑定 Git / 云权限到部署子 Agnet 的产品流程
|
||||
4. [`integration/agnet-platform-api-design.md`](./integration/agnet-platform-api-design.md):历史 API 草案,若与新架构计划冲突,以新架构计划为准
|
||||
5. [`integration/agnet-user-deployment-flow.md`](./integration/agnet-user-deployment-flow.md):历史用户流程草案,若与新架构计划冲突,以新架构计划为准
|
||||
6. [`integration/heicode-oauth-flow.md`](./integration/heicode-oauth-flow.md):HeiCode 客户端 ↔ Manager 浏览器登录流程
|
||||
7. 落地节奏:[`milestones/README.md`](./milestones/README.md)(M3–M5)+ [`milestones/STATUS.md`](./milestones/STATUS.md)
|
||||
|
||||
|
||||
+61
-20
@@ -1,8 +1,8 @@
|
||||
# Heicode 架构与关键数据流
|
||||
|
||||
本文用 mermaid 图示统一表达 **Heicode 客户端 / Manager / Agnet** 之间的边界与数据流,作为愿景与集成 API 设计的视觉补充。
|
||||
本文用 mermaid 图示统一表达 **Heicode 客户端 / Manager / Agnet / NewAPI / Secret Store** 之间的边界与数据流,作为愿景与 SaaS 架构计划的视觉补充。
|
||||
|
||||
> 与文字版的对应关系:[`vision-heicode-full-stack-agentic-dev.md`](./vision-heicode-full-stack-agentic-dev.md) 第五节、[`integration/agnet-platform-api-design.md`](./integration/agnet-platform-api-design.md) §1.1 / §5 / §6 / §7。
|
||||
> 与文字版的对应关系:[`vision-heicode-full-stack-agentic-dev.md`](./vision-heicode-full-stack-agentic-dev.md)、[`saas-manager-agnet-architecture-plan.md`](./saas-manager-agnet-architecture-plan.md)。旧 Agnet API 草案若与新架构计划冲突,以新架构计划为准。
|
||||
|
||||
---
|
||||
|
||||
@@ -11,24 +11,30 @@
|
||||
```mermaid
|
||||
flowchart TD
|
||||
entry["人机入口<br/>官网 · 控制台 · CLI · Desktop"]
|
||||
manager["Heicode Manager<br/>(heicode)"]
|
||||
manager["Heicode Manager<br/>SaaS 控制台"]
|
||||
client["Heicode 客户端<br/>(cc-haha)"]
|
||||
agnet["Agnet 平台<br/>(角色模板 · 执行单元)"]
|
||||
agnet["Agnet 平台<br/>AKS 执行与状态"]
|
||||
newapi["NewAPI<br/>模型网关 · 余额 · 日志"]
|
||||
secret["Secret Store<br/>Vault / Infisical / Key Vault"]
|
||||
assets["资产与环境<br/>仓库 · 流水线 · 运行时"]
|
||||
|
||||
entry --> manager
|
||||
entry --> client
|
||||
manager <--> client
|
||||
manager --> agnet
|
||||
manager --> newapi
|
||||
manager --> secret
|
||||
agnet --> secret
|
||||
client -. "会话子 agent 输出" .- agnet
|
||||
agnet --> assets
|
||||
manager --> assets
|
||||
```
|
||||
|
||||
要点:
|
||||
- **同一身份与策略边界** 跨越 Manager 与客户端
|
||||
- 编排细节归 Agnet 内部;Heicode 关注 **契约、体验与安全边界**
|
||||
- 资产层(仓库 / 流水线 / 运行时)是被动载体
|
||||
- **Manager 是 SaaS 用户、租户、资源、权限与部署控制台**
|
||||
- **NewAPI 是独立模型服务**,普通用户不进入 NewAPI 后台
|
||||
- **Secret Store 保存真实密钥**,Manager DB 只保存 `secret_ref`
|
||||
- **Agnet 在 AKS 上执行**,按 Manager 下发的 Resource Grant 和运行身份使用资源
|
||||
|
||||
---
|
||||
|
||||
@@ -44,20 +50,54 @@ flowchart LR
|
||||
user --> desktop
|
||||
desktop -->|"OAuth: /heicode/oauth/*"| manager
|
||||
desktop -->|"Anthropic Messages /<br/>OpenAI Chat 调用"| manager
|
||||
manager -->|"模型路由 / 计费 / RBAC"| manager
|
||||
newapi["NewAPI<br/>模型网关 / 额度 / 调用日志"]
|
||||
secret["Secret Store<br/>Vault / Infisical / Key Vault"]
|
||||
|
||||
manager -->|"模型、余额、调用日志"| newapi
|
||||
manager -->|"资源绑定 / secret_ref"| secret
|
||||
manager -->|"M2M JWT · 部署/查询编队"| agnet
|
||||
agnet -->|"运行时受控读取密钥"| secret
|
||||
agnet -->|"webhook / events"| manager
|
||||
agnet -.->|"sub_agent.output (SSE/WS)"| desktop
|
||||
```
|
||||
|
||||
关键边界:
|
||||
- 客户端 **不直连** 模型供应商,所有调用经 Manager 路由
|
||||
- 客户端 **不直连** 模型供应商,模型能力经 Manager / NewAPI 提供
|
||||
- Manager 用 **服务账号 / 用户委派令牌** 调 Agnet
|
||||
- 客户端按 [`integration/agnet-platform-api-design.md`](./integration/agnet-platform-api-design.md) §6.4 订阅会话内子 agent 输出流
|
||||
- 密钥不进入 Git、Markdown、前端或日志;子 Agnet 只通过受控身份使用被授权资源
|
||||
|
||||
---
|
||||
|
||||
## 三、SK 数据流(Git / Upload → 快照 → 子 agent 注入)
|
||||
## 三、资源绑定与凭证托管
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
user["用户"]
|
||||
manager["Heicode Manager"]
|
||||
registry["Resource Registry<br/>资源元数据与授权"]
|
||||
broker["Secret Broker"]
|
||||
store["Secret Store<br/>Vault / Infisical / Key Vault"]
|
||||
agnet["Agnet 平台"]
|
||||
pod["子 Agnet Pod<br/>AKS ServiceAccount"]
|
||||
|
||||
user -->|"OAuth / GitHub App / 云授权"| manager
|
||||
manager --> registry
|
||||
manager --> broker
|
||||
broker -->|"写入真实凭证"| store
|
||||
manager -->|"Resource Grant / permission manifest"| agnet
|
||||
agnet -->|"创建运行身份 / policy"| pod
|
||||
pod -->|"按最小权限读取短期凭证"| store
|
||||
```
|
||||
|
||||
要点:
|
||||
- 用户完成授权,平台负责托管、轮换、撤销和审计
|
||||
- Manager DB 保存资源元数据、授权关系和 `secret_ref`
|
||||
- Secret Broker 是唯一写入真实凭证的后端边界
|
||||
- 子 Agnet 不保存长期密钥
|
||||
|
||||
---
|
||||
|
||||
## 四、SK 数据流(Git / Upload → 快照 → 子 agent 注入)
|
||||
|
||||
```mermaid
|
||||
flowchart TB
|
||||
@@ -87,7 +127,7 @@ flowchart TB
|
||||
|
||||
---
|
||||
|
||||
## 四、事件流双轨(平台运行态 vs 会话子代理输出)
|
||||
## 五、事件流双轨(平台运行态 vs 会话子代理输出)
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
@@ -105,15 +145,16 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
## 五、模块关注点对照
|
||||
## 六、模块关注点对照
|
||||
|
||||
| 关注点 | Heicode 客户端 (`cc-haha/`) | Heicode Manager (`heicode/`) | Agnet 平台 |
|
||||
|--------|------------------------------|-------------------------------|------------|
|
||||
| 用户身份 | 浏览器登录 / API Key 兼容 | OAuth 提供方、Token 颁发与吊销 | 接收 M2M JWT 与用户委派令牌 |
|
||||
| 模型调用 | 不直连模型,请求经 Manager | 路由、计费、RBAC | 不参与基础模型调用 |
|
||||
| 编排 | 触发部署、订阅子 agent 输出 | 一键部署入口、Webhook 注册 | 实际执行编队、维护实例生命周期 |
|
||||
| SK | 唯一编辑入口(写 Git / 上传) | 展开 `sk_sources`、刷新策略 | 拉取快照、运行时只读注入 |
|
||||
| 观测 | 会话内子 agent 输出 | 平台运行态聚合 | 提供事件流、指标导出 |
|
||||
| 关注点 | Heicode 客户端 (`cc-haha/`) | Heicode Manager (`heicode/`) | NewAPI | Agnet 平台 | Secret Store |
|
||||
|--------|------------------------------|-------------------------------|--------|------------|--------------|
|
||||
| 用户身份 | 浏览器登录 / API Key 兼容 | SaaS 登录、租户、项目、角色 | 后台服务身份 | 接收 M2M JWT 与委托令牌 | 接收服务身份 / K8s 身份 |
|
||||
| 模型调用 | 不直连模型,请求经 Manager | 展示模型、余额、日志 | 模型网关、额度、调用日志 | 不参与基础模型调用 | 不参与 |
|
||||
| 资源绑定 | 发起本地工作流 | Git / 云 / 文档 / SK 资源绑定与 Resource Grant | 不参与 | 接收授权后的运行引用 | 保存真实凭证 |
|
||||
| 编排 | 触发部署、订阅子 agent 输出 | 一键部署入口、permission manifest、审计 | 不参与 | 实际执行编队、维护实例生命周期 | 按策略提供密钥 |
|
||||
| SK | 主要编辑入口(写 Git / 上传) | 展开 `sk_sources`、刷新策略 | 不参与 | 拉取快照、运行时只读注入 | 可保存访问凭证 |
|
||||
| 观测 | 会话内子 agent 输出 | 平台运行态聚合、NewAPI 调用日志 | 调用日志、余额 | 提供事件流、指标导出 | 提供密钥访问审计 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
+24
-3
@@ -3,7 +3,7 @@
|
||||
本术语表是 Heicode 仓库内 **跨文档共享的命名标准**。任意文档涉及以下名称时,请相对链接回本文件锚点,避免规则漂移。
|
||||
|
||||
> 与代号相关的方向性来源:[`vision-heicode-full-stack-agentic-dev.md`](./vision-heicode-full-stack-agentic-dev.md)。
|
||||
> 与 API 字段相关的来源:[`integration/agnet-platform-api-design.md`](./integration/agnet-platform-api-design.md)。
|
||||
> 与 SaaS 架构相关的来源:[`saas-manager-agnet-architecture-plan.md`](./saas-manager-agnet-architecture-plan.md)。
|
||||
|
||||
## 产品级代号
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
仓库与产品族的总称。在区分产品形态时,亦称 **Heicode 客户端**。
|
||||
|
||||
### Heicode Manager
|
||||
账户、模型策略、渠道、计费与平台管控的服务端,源码目录 `heicode/`。在文档中亦称 **Manager**。
|
||||
SaaS 用户控制台与编排中枢,源码目录 `heicode/`。负责用户、租户、项目、资源绑定、权限分配、Agnet 部署、审计,以及面向普通用户展示模型、余额和调用日志。
|
||||
|
||||
### Heicode 客户端
|
||||
面向开发者的 CLI(Ink)+ 桌面应用(Tauri + React)+ 本地 HTTP/WS 服务,源码目录 `cc-haha/`。
|
||||
@@ -20,7 +20,16 @@
|
||||
**子智能体编排与团队模板** 所在平台的概念名。它是一个抽象代号,用以保持愿景叙事不绑死在某个厂商。落地形态可对应 Agnet。
|
||||
|
||||
### Agnet
|
||||
当前实际接入的编排平台名称。规范上 Heicode 与 Agnet 通过 [`integration/agnet-platform-api-design.md`](./integration/agnet-platform-api-design.md) 中定义的契约通信。
|
||||
当前实际接入的编排平台名称。Agnet 底层运行在 AKS,负责部署子 Agnet、维护执行状态、事件和日志,并按 Manager 下发的 Resource Grant 使用受控资源。
|
||||
|
||||
### NewAPI
|
||||
独立的模型网关和计费服务。它提供模型渠道、模型调用、额度、余额和调用日志;普通 SaaS 用户不进入 NewAPI 后台,Manager 后端通过服务凭据调用 NewAPI。
|
||||
|
||||
### Secret Store
|
||||
真实凭证的保管库,例如 HashiCorp Vault、Infisical 或 Azure Key Vault。Manager 数据库只保存 `secret_ref`,不保存 Git token、云密钥、SSH 私钥和数据库密码。
|
||||
|
||||
### Secret Broker
|
||||
Manager 后端中负责凭证写入、轮换、撤销、路径生成、策略创建和审计的边界模块。业务代码不应绕过 Secret Broker 直接操作 Secret Store。
|
||||
|
||||
## 编排相关
|
||||
|
||||
@@ -41,6 +50,18 @@
|
||||
### SK(Skill 资产)
|
||||
为子 agent 提供运行时只读上下文的说明类正文,多为 Markdown。详见 [`sk-lifecycle.md`](./sk-lifecycle.md)。
|
||||
|
||||
### 资源绑定 (`resource binding`)
|
||||
用户授权 Heicode 使用某个外部资源的动作与结果。资源可以是 Git 仓库、SK 仓库、项目文档、Azure/AWS/GCP 账号、VM、数据库、对象存储或 AKS 集群。绑定产生资源元数据和 `secret_ref`,不产生可暴露的明文密钥。
|
||||
|
||||
### Resource Grant
|
||||
Manager 中把某个资源授权给特定租户、项目、子 Agnet 角色和权限范围的记录。部署时,Manager 将 Resource Grant 转换为 permission manifest 发送给 Agnet 平台。
|
||||
|
||||
### permission manifest
|
||||
面向系统强制执行的结构化权限清单,描述每个子 Agnet 可用的资源、动作、路径、环境和限制。它和 AGENT.md / resource context 配套使用。
|
||||
|
||||
### resource context
|
||||
面向模型理解的启动上下文,通常可以生成为 Markdown。它描述角色、目标、可用资源和禁止事项,但不得包含任何真实密钥。
|
||||
|
||||
### `sk_sources`
|
||||
SK 的来源数组。每个元素声明其来源类型:
|
||||
- `git`:以 commit SHA 为快照锚点
|
||||
|
||||
+15
-14
@@ -8,25 +8,26 @@
|
||||
2. 二者之间走 **什么协议、什么字段**(API 契约)
|
||||
3. 这些能力 **何时落地**(与里程碑对齐)
|
||||
|
||||
## 当前主线
|
||||
|
||||
2026-05-02 之后,Manager / NewAPI / Agnet / Secret Store 的主边界以 [`../saas-manager-agnet-architecture-plan.md`](../saas-manager-agnet-architecture-plan.md) 为准。
|
||||
本目录中的旧接口草案可作为历史参考;如果出现冲突,优先采用新架构计划。
|
||||
|
||||
## 推荐阅读顺序
|
||||
|
||||
|
||||
| 步骤 | 文档 | 你将得到 |
|
||||
| --- | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
|
||||
| 1 | `[../glossary.md](../glossary.md)` | 统一术语:Heicode / Manager / 客户端 / 子 agent / SK / 标识符等 |
|
||||
| 2 | `[../architecture.md](../architecture.md)` | 整体架构与数据流(mermaid) |
|
||||
| 3 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §1.1 | Manager 与客户端在 Agnet 可视化中的职责划分 |
|
||||
| 1 | `[../saas-manager-agnet-architecture-plan.md](../saas-manager-agnet-architecture-plan.md)` | 新主线:SaaS Manager、NewAPI、Agnet、Secret Store 的职责边界 |
|
||||
| 2 | `[../glossary.md](../glossary.md)` | 统一术语:Heicode / Manager / 客户端 / 子 agent / SK / 标识符等 |
|
||||
| 3 | `[../architecture.md](../architecture.md)` | 整体架构与数据流(mermaid) |
|
||||
| 4 | `[../sk-lifecycle.md](../sk-lifecycle.md)` | SK 来源、快照、写权边界(**单点真相**) |
|
||||
| 5 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §2–§3 | 身份、调用方式、RBAC |
|
||||
| 6 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §4 | 多租户与隔离 |
|
||||
| 7 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §5 | 一键部署、`sk_sources`、**运行时绑定**、**SK 访问策略**、控制面 API |
|
||||
| 8 | `[./agnet-user-deployment-flow.md](./agnet-user-deployment-flow.md)` | 用户从绑定 Git / 云权限到部署子 Agnet 的产品流程 |
|
||||
| 9 | `[./orchestration-plan-contract.md](./orchestration-plan-contract.md)` | 模型提案对象与平台裁决规则 |
|
||||
| 10 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §6–§7 | 运行态、聚合视图、事件流(双轨) |
|
||||
| 11 | `[./Heicode-登录接口对接文档.md](./Heicode-登录接口对接文档.md)` | 已上线认证接口契约(login / me / refresh / logout) |
|
||||
| 12 | `[./heicode-oauth-flow.md](./heicode-oauth-flow.md)` | 客户端浏览器登录到 Manager 的完整流程 |
|
||||
| 13 | `[./acceptance-matrix.md](./acceptance-matrix.md)` | 集成验收最小测试矩阵 |
|
||||
| 14 | `[../milestones/README.md](../milestones/README.md)` + `[../milestones/STATUS.md](../milestones/STATUS.md)` | 落地节奏与现状 |
|
||||
| 5 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` | 历史 API 草案:需按新主线重写后才能作为实现契约 |
|
||||
| 6 | `[./agnet-user-deployment-flow.md](./agnet-user-deployment-flow.md)` | 历史用户流程草案:Git 来源和云权限应升级为统一资源绑定 |
|
||||
| 7 | `[./orchestration-plan-contract.md](./orchestration-plan-contract.md)` | 历史编排提案草案:需补齐 Resource Grant、Secret Broker 与平台代理 |
|
||||
| 8 | `[./Heicode-登录接口对接文档.md](./Heicode-登录接口对接文档.md)` | 已上线认证接口契约(login / me / refresh / logout) |
|
||||
| 9 | `[./heicode-oauth-flow.md](./heicode-oauth-flow.md)` | 客户端浏览器登录到 Manager 的完整流程 |
|
||||
| 10 | `[./acceptance-matrix.md](./acceptance-matrix.md)` | 集成验收最小测试矩阵,后续需要按新主线更新 |
|
||||
|
||||
|
||||
## 边界速览
|
||||
@@ -38,7 +39,7 @@
|
||||
| 模型策略与计费 | 路由 / RBAC / 计费 | 调用 Manager | 不参与 |
|
||||
| 子 agent 输出展示 | 平台运行态汇总 | 会话内增量展示 | 提供 SSE/WS 流 |
|
||||
| SK 正文写入 | **不允许** | 唯一编辑入口 | **不允许**(仅只读快照) |
|
||||
| 凭据(Git/云 SA)写入 | 持久化与轮换 | 发起授权 | 按租户使用 |
|
||||
| 凭据(Git/云 SA)写入 | 通过 Secret Broker 托管、轮换、撤销 | 发起授权 | 运行时按 Resource Grant 和 K8s 身份受控使用 |
|
||||
|
||||
|
||||
## 与里程碑的关系
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# Agnet 平台 ↔ Heicode 集成接口设计(草案)
|
||||
|
||||
> Deprecated: 本文是早期接口草案。2026-05-02 之后,Manager / NewAPI / Agnet / Secret Store 的主边界以 [`../saas-manager-agnet-architecture-plan.md`](../saas-manager-agnet-architecture-plan.md) 为准。本文如与新架构计划冲突,以新架构计划为准。
|
||||
|
||||
本文描述 **Agnet 平台**应向 **Heicode(Manager / 客户端 / 自动化服务)** 暴露的 **控制面、数据面隔离、权限模型与可视化/事件接口**。
|
||||
路径、字段名为 **设计意图**;落地时可等价映射为 gRPC 或 GraphQL,但**语义与隔离边界**应保持一致。
|
||||
|
||||
@@ -487,4 +489,4 @@ Tenant(租户)
|
||||
|
||||
---
|
||||
|
||||
*本文档随里程碑评审更新;实现细节以 Agnet 与 Heicode 联合 RFC 为准。*
|
||||
*本文档随里程碑评审更新;实现细节以 Agnet 与 Heicode 联合 RFC 为准。*
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# Agnet 用户部署流程
|
||||
|
||||
> Deprecated: 本文是早期用户流程草案。2026-05-02 之后,资源绑定、凭证托管、NewAPI 解耦和 Agnet AKS 运行身份以 [`../saas-manager-agnet-architecture-plan.md`](../saas-manager-agnet-architecture-plan.md) 为准。本文如与新架构计划冲突,以新架构计划为准。
|
||||
|
||||
本文记录 Heicode Manager 中用户从绑定仓库、授权云资源,到部署子 Agnet 的目标流程。它描述产品语义和交互顺序,具体 API 字段以 [`agnet-platform-api-design.md`](./agnet-platform-api-design.md) 与 [`orchestration-plan-contract.md`](./orchestration-plan-contract.md) 为准。
|
||||
|
||||
## 一、绑定代码与 SK 仓库
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# 编排提案契约(`orchestration_plan`)
|
||||
|
||||
> Deprecated: 本文是早期编排提案草案。2026-05-02 之后,正式计划需要补齐 Resource Grant、Secret Broker、Secret Store、AKS 运行身份和平台代理语义;主参考见 [`../saas-manager-agnet-architecture-plan.md`](../saas-manager-agnet-architecture-plan.md)。
|
||||
|
||||
本文定义「模型提案、平台裁决」模式下的最小编排对象,供 Heicode / Manager / Agnet 三方对齐。
|
||||
|
||||
## 1. 决策边界
|
||||
@@ -118,4 +120,3 @@ Agnet 在执行前必须做下列校验:
|
||||
- `orchestration_plan` 建议由 Manager **无损映射**为 Agnet `POST /deployments` 标准 payload;**`runtime_execution` / `sk_access_policy` 不得在进入部署链路时丢弃**,否则子 agent 无法获得用户在 Manager 配置的权限与 SK 边界
|
||||
- 拒绝时应返回 `error.code` + `request_id` + `correlation_id`
|
||||
- 接受后返回 `deployment_id`,并通过事件流持续反馈执行状态
|
||||
|
||||
|
||||
@@ -2,13 +2,14 @@
|
||||
|
||||
> 导航:[`../README.md`](../README.md) · [`../glossary.md`](../glossary.md) · [`../architecture.md`](../architecture.md) · [`./STATUS.md`](./STATUS.md)
|
||||
|
||||
本目录将整体交付拆成**可验收、可并行准备**的里程碑事件;每个文件定义**完成定义(DoD)**、**依赖**与**与 Agnet 平台的衔接点**。
|
||||
全局范式仍以 [`../vision-heicode-full-stack-agentic-dev.md`](../vision-heicode-full-stack-agentic-dev.md) 为准;当前实现状态见 [`./STATUS.md`](./STATUS.md)。
|
||||
本目录保存早期 M1-M5 里程碑草案。2026-05-02 之后,SaaS Manager、NewAPI、Agnet 和 Secret Store 的落地节奏以 [`../saas-manager-agnet-architecture-plan.md`](../saas-manager-agnet-architecture-plan.md) 第十节为准。
|
||||
本目录可作为历史参考;后续需要把 M1-M5 重写为 P0-P5 后再作为正式交付计划使用。
|
||||
|
||||
## 推荐阅读顺序
|
||||
|
||||
| 顺序 | 文档 | 摘要 |
|
||||
|------|------|------|
|
||||
| 0 | [SaaS Manager 与 Agnet 平台架构计划](../saas-manager-agnet-architecture-plan.md) | 当前主计划:P0-P5 |
|
||||
| 1 | [M1-契约与身份对齐](./M1-contract-identity.md) | Heicode Manager ↔ 客户端最小契约;登录与令牌语义 |
|
||||
| 2 | [M2-本地端到端闭环](./M2-local-e2e.md) | 单环境跑通:登录、模型发现、对话、一次发布链路(示意) |
|
||||
| 3 | [M3-Agnet-编排集成](./M3-agnet-orchestration-bridge.md) | 拉起编队、执行单元生命周期与回调 Heicode |
|
||||
@@ -21,7 +22,7 @@ Agnet 平台应对外暴露的 **HTTP/gRPC 契约、事件流与隔离模型**
|
||||
|
||||
**[`../integration/agnet-platform-api-design.md`](../integration/agnet-platform-api-design.md)**
|
||||
|
||||
里程碑 **M3~M5** 分别对应集成文档中的「编排 API」「安全与隔离」「观测与可视化 API」的落地节奏。
|
||||
早期里程碑 **M3~M5** 曾对应集成文档中的「编排 API」「安全与隔离」「观测与可视化 API」。这些内容需要按新的 Manager 资源绑定、Secret Broker、AKS 运行身份和 NewAPI 解耦方案重写。
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 里程碑现状对齐
|
||||
|
||||
本文以仓库当前代码为依据,对 M1–M5 的 DoD 项做粗粒度盘点,便于例会与评审快速对齐。**不替代** 各里程碑文档的 DoD 原文。
|
||||
本文以仓库当前代码为依据,对早期 M1-M5 的 DoD 项做粗粒度盘点,便于例会与评审快速对齐。2026-05-02 之后,正式计划以 [`../saas-manager-agnet-architecture-plan.md`](../saas-manager-agnet-architecture-plan.md) 第十节 P0-P5 为准;本文保留为历史现状参考。
|
||||
|
||||
> 状态图例:
|
||||
> - `done`:代码已落地并经过基本验证
|
||||
|
||||
@@ -0,0 +1,312 @@
|
||||
# Heicode SaaS Manager 与 Agnet 平台架构计划
|
||||
|
||||
本文记录 2026-05-02 讨论后确认的新边界:Heicode 的最终形态是一款覆盖软件生命周期的智能开发 Code 工具。用户注册后,用自然语言描述想法,平台应能逐步完成团队生成、产品文档、原型描述、代码开发、代码检查、生产部署、定期维护和升级。
|
||||
|
||||
本文是后续 Manager / NewAPI / Agnet / 凭证托管方案的主参考。旧的 Agnet 接口草案如与本文冲突,以本文为准。
|
||||
|
||||
## 一、核心判断
|
||||
|
||||
Heicode 不是 NewAPI 的二次开发项目,也不是单纯的 Agent 控制台。产品边界应拆成四层:
|
||||
|
||||
| 层 | 定位 | 主要职责 |
|
||||
|----|------|----------|
|
||||
| Heicode Manager | SaaS 用户控制台与编排中枢 | 用户、租户、项目、资源绑定、权限分配、Agnet 部署、审计、余额与模型可见性 |
|
||||
| Agnet 平台 | 执行与状态平台 | 在 AKS 上部署子 Agnet、运行任务、维护状态、事件、日志和执行元数据 |
|
||||
| NewAPI | 内部模型网关与计费服务 | 模型渠道、模型列表、模型调用、额度、余额、调用日志;后台不开放给普通用户 |
|
||||
| Secret Store | 凭证保管库 | 保存 Git token、云密钥、SSH key、数据库密码等真实凭证 |
|
||||
|
||||
Manager 是用户操作入口;Agnet 是运行时执行层;NewAPI 是模型能力服务;Secret Store 是安全凭证底座。
|
||||
|
||||
## 二、不可破坏的原则
|
||||
|
||||
1. 在需求和边界没有想清楚前,不改代码。
|
||||
2. NewAPI 保持独立服务,不继续改造成 Manager 的内嵌后台。
|
||||
3. NewAPI 后台不开放给普通 SaaS 用户,模型管理由内部人员完成。
|
||||
4. Manager 只补 NewAPI 没有的后端能力:项目、资源、权限、Agnet 部署、审计和生命周期管理。
|
||||
5. 用户绑定的是 Agnet 可用资源,不只是 Git 来源。
|
||||
6. 密钥不能进入 Git、Markdown、前端、部署摘要或日志。
|
||||
7. Manager 负责资源绑定、权限分配和凭证托管能力;真实密钥放入 Secret Store。
|
||||
8. 子 Agnet 不保存长期密钥,只接收角色、资源元数据、AGENT.md 和受控访问方式。
|
||||
9. Agnet 平台在 AKS 上负责运行时身份、隔离、状态、事件和审计回传。
|
||||
10. 高危生产权限优先走平台代理或审批,不直接把长期密钥注入子 Agnet。
|
||||
|
||||
## 三、Manager 的产品主线
|
||||
|
||||
Manager 面向普通用户展示的是一条从想法到交付的控制流程,而不是 NewAPI 管理后台。
|
||||
|
||||
核心功能:
|
||||
|
||||
1. 绑定 GitHub、GitLab、Gitea、Gitee、自建 Git 等代码来源。
|
||||
2. 绑定云资源,例如 AWS、Azure、GCP、虚拟机、数据库、对象存储、Kubernetes 集群。
|
||||
3. 确认项目仓库、SK 仓库、项目文档仓库或二合一仓库。
|
||||
4. 按敏捷或瀑布方法分配子 Agnet 角色。
|
||||
5. 为每个子 Agnet 配置 AGENT.md、可用工具、Git 范围、云资源范围、模型和预算。
|
||||
6. 部署子 Agnet,设置数量、模型和运行环境。
|
||||
7. 观察子 Agnet 活动状态、失败原因、事件和运行日志。
|
||||
8. 查看审计日志和模型调用日志。
|
||||
9. 查看可用模型、余额、额度和使用情况。
|
||||
10. 展示 NewAPI 对普通用户有意义的能力,隐藏渠道、价格、模型后台管理等管理员能力。
|
||||
|
||||
## 四、资源绑定模型
|
||||
|
||||
“绑定”不是保存一串密钥,而是创建租户级 Resource Grant。
|
||||
|
||||
```text
|
||||
某个用户/租户授权 Heicode 使用某个外部资源
|
||||
-> Manager 记录资源元数据
|
||||
-> Manager 的 Secret Broker 把真实凭证写入 Secret Store
|
||||
-> Manager 生成可审计、可撤销、可分配给子 Agnet 的资源授权
|
||||
```
|
||||
|
||||
资源类型建议统一建模为:
|
||||
|
||||
| 类型 | 示例 | 子 Agnet 可见内容 |
|
||||
|------|------|------------------|
|
||||
| Git 资源 | GitHub repo、自建 Git、SK repo | repo URL、ref、允许路径、读写范围 |
|
||||
| 云账号 | Azure subscription、AWS account、GCP project | account/project/subscription 元数据、允许动作 |
|
||||
| 单项云资源 | VM、DB、Bucket、AKS namespace | 资源 ID、环境、网络边界、允许动作 |
|
||||
| 项目文档 | 产品文档、原型说明、需求库 | 文档引用、版本、可读范围 |
|
||||
| SK 资源 | 技能仓库、上传的技能包 | SK 来源、版本、允许/禁止策略 |
|
||||
|
||||
Manager 数据库保存资源元数据和授权关系,不保存明文密钥:
|
||||
|
||||
```text
|
||||
resources:
|
||||
id
|
||||
tenant_id
|
||||
provider
|
||||
type
|
||||
display_name
|
||||
external_id
|
||||
metadata_json
|
||||
secret_ref
|
||||
status
|
||||
|
||||
resource_grants:
|
||||
id
|
||||
tenant_id
|
||||
project_id
|
||||
resource_id
|
||||
agnet_role
|
||||
permissions_json
|
||||
constraints_json
|
||||
|
||||
secret_bindings:
|
||||
id
|
||||
tenant_id
|
||||
resource_id
|
||||
secret_provider
|
||||
secret_ref
|
||||
version
|
||||
status
|
||||
last_rotated_at
|
||||
```
|
||||
|
||||
## 五、开源 Secret Store 架构
|
||||
|
||||
SaaS 场景下,凭证不能转嫁给用户手工管理。用户负责授权,平台负责托管、隔离、轮换、撤销和审计。
|
||||
|
||||
推荐抽象:
|
||||
|
||||
```text
|
||||
Manager API
|
||||
-> Secret Broker
|
||||
-> Secret Provider
|
||||
-> Vault / Infisical / Azure Key Vault
|
||||
```
|
||||
|
||||
开源优先方案:
|
||||
|
||||
| 方案 | 适用判断 |
|
||||
|------|----------|
|
||||
| HashiCorp Vault | 优先选择。Kubernetes Auth、Policy、TTL、动态密钥、审计能力成熟,适合 AKS 中的子 Agnet 运行时授权 |
|
||||
| Infisical | 产品体验较好,适合作为可选 Secret Provider,需要进一步验证多租户策略和运行时授权能力 |
|
||||
| SOPS + KMS | 适合配置文件密钥,不适合作为 SaaS 动态资源绑定主方案 |
|
||||
|
||||
Secret Broker 负责:
|
||||
|
||||
- 接收 OAuth / GitHub App / 云授权回调后的凭证。
|
||||
- 生成租户隔离的 secret path。
|
||||
- 写入 Vault / Infisical / Key Vault。
|
||||
- 创建或更新 policy。
|
||||
- 保存 secret_ref 到 Manager DB。
|
||||
- 轮换、撤销、禁用凭证。
|
||||
- 避免密钥进入日志、前端响应、Markdown 和 Git。
|
||||
|
||||
Vault 路径示例:
|
||||
|
||||
```text
|
||||
secret/heicode/tenants/{tenant_id}/resources/{resource_id}/github
|
||||
secret/heicode/tenants/{tenant_id}/resources/{resource_id}/azure
|
||||
secret/heicode/tenants/{tenant_id}/projects/{project_id}/deployments/{deployment_id}
|
||||
```
|
||||
|
||||
## 六、AKS 上的 Agnet 凭证访问
|
||||
|
||||
Agnet 平台底层是 AKS,因此运行时权限应和 Kubernetes 身份绑定。
|
||||
|
||||
推荐流程:
|
||||
|
||||
```text
|
||||
用户在 Manager 授权资源
|
||||
-> Manager Secret Broker 写入 Secret Store
|
||||
-> Manager 记录 Resource Grant
|
||||
-> Manager 请求 Agnet 平台部署
|
||||
-> Agnet 平台为 deployment / role 创建 K8s ServiceAccount
|
||||
-> Agnet 平台绑定 Vault policy 或 Workload Identity
|
||||
-> 子 Agnet Pod 运行时只能访问被授权的 secret
|
||||
```
|
||||
|
||||
子 Agnet 拿到的是:
|
||||
|
||||
```text
|
||||
你是 backend-agent
|
||||
你可以访问 project-main-repo
|
||||
权限是 read_repo / write_branch / create_pr
|
||||
凭证由运行环境提供
|
||||
禁止输出、持久化或提交任何凭证
|
||||
```
|
||||
|
||||
子 Agnet 不应拿到:
|
||||
|
||||
```text
|
||||
github_pat_xxx
|
||||
azure_client_secret_xxx
|
||||
ssh_private_key
|
||||
database_password
|
||||
```
|
||||
|
||||
运行时访问分两种模式:
|
||||
|
||||
| 模式 | 用法 | 适用场景 |
|
||||
|------|------|----------|
|
||||
| 受控注入 | Pod 通过 Vault Agent、Kubernetes Auth、CSI 或 Workload Identity 读取短期凭证 | Git clone、开发/测试环境、低风险资源 |
|
||||
| 平台代理 | 子 Agnet 请求 Manager / Agnet Platform 代执行资源动作 | 生产部署、数据库写入、高危云操作、需要审批的动作 |
|
||||
|
||||
推荐混合策略:普通开发资源可受控注入,生产云资源和高危操作走平台代理或审批。
|
||||
|
||||
## 七、NewAPI 的边界
|
||||
|
||||
NewAPI 不作为普通用户后台开放。Manager 后端通过服务凭据调用 NewAPI,对用户展示必要信息。
|
||||
|
||||
Manager 可展示:
|
||||
|
||||
- 可用模型。
|
||||
- 当前租户或项目额度。
|
||||
- 余额。
|
||||
- 调用量。
|
||||
- 调用日志。
|
||||
- 失败日志。
|
||||
- 模型可用状态。
|
||||
|
||||
Manager 不展示:
|
||||
|
||||
- 渠道管理。
|
||||
- 模型供应商后台配置。
|
||||
- 价格配置。
|
||||
- 系统管理员用户管理。
|
||||
- NewAPI 原生管理后台入口。
|
||||
|
||||
用户登录 Manager,不直接登录 NewAPI。Manager 需要维护用户 / 租户 / 项目到 NewAPI 用户、key 或 quota 的映射。
|
||||
|
||||
## 八、认证与权限统一策略
|
||||
|
||||
不要求三套系统完全统一登录,但必须统一租户、项目、角色、资源授权语义。
|
||||
|
||||
| 系统关系 | 建议 |
|
||||
|----------|------|
|
||||
| Manager ↔ NewAPI | 服务端对服务端调用。用户不直接进入 NewAPI 后台。Manager 按租户映射 NewAPI key、额度和日志 |
|
||||
| Manager ↔ Agnet | 必须共享 tenant / project / deployment / role / resource grant 语义。使用 M2M token 或受控委托令牌 |
|
||||
| Agnet ↔ Secret Store | 通过 AKS ServiceAccount、Vault Kubernetes Auth、Workload Identity 或平台代理访问 |
|
||||
| 用户 ↔ Manager | Manager 是 SaaS 登录和用户体验入口 |
|
||||
|
||||
因此,可行方案是:Manager 统一用户体验和资源权限,Agnet 统一执行身份和运行隔离,NewAPI 只提供模型服务能力。
|
||||
|
||||
## 九、启动上下文与 Markdown
|
||||
|
||||
绑定的资源最终可以生成 Markdown,但 Markdown 是上下文和规则,不是凭证载体。
|
||||
|
||||
Markdown 可包含:
|
||||
|
||||
- 子 Agnet 角色。
|
||||
- 目标任务。
|
||||
- 项目背景。
|
||||
- AGENT.md 来源。
|
||||
- 可使用的 Git 资源。
|
||||
- 可使用的云资源。
|
||||
- 可使用的 SK。
|
||||
- 允许和禁止动作。
|
||||
- 审计要求。
|
||||
|
||||
Markdown 不得包含:
|
||||
|
||||
- Git token。
|
||||
- 云 access key。
|
||||
- refresh token。
|
||||
- SSH 私钥。
|
||||
- 数据库密码。
|
||||
- NewAPI key 原文。
|
||||
|
||||
建议 Manager 生成两类产物:
|
||||
|
||||
| 产物 | 用途 |
|
||||
|------|------|
|
||||
| AGENT.md / resource context | 给子 Agnet 的启动上下文,说明角色和可用资源 |
|
||||
| permission manifest | 给 Agnet 平台和审计系统的结构化权限清单 |
|
||||
|
||||
Markdown 面向模型理解,manifest 面向系统强制执行。
|
||||
|
||||
## 十、实施 Plan
|
||||
|
||||
### P0:文档和边界收敛
|
||||
|
||||
- 清理废弃或冲突的旧文档入口。
|
||||
- 确认本文为 Manager / NewAPI / Agnet / Secret Store 的主参考。
|
||||
- 更新术语表:资源绑定、Resource Grant、Secret Broker、Secret Store、平台代理。
|
||||
- 明确代码修改铁律:边界未讨论清楚前不改代码。
|
||||
|
||||
### P1:Manager 资源模型
|
||||
|
||||
- 将当前“Git 来源”抽象为资源绑定模型。
|
||||
- 增加资源类型:Git、SK、项目文档、云账号、单项云资源。
|
||||
- 增加 resource_grants,用于把资源分配给项目、角色和子 Agnet。
|
||||
- 前端从“填 JSON”升级为“绑定资源 -> 分配角色 -> 部署确认”的向导。
|
||||
|
||||
### P2:Secret Broker 与开源 Secret Store
|
||||
|
||||
- 选型 Vault 作为首个开源 Secret Provider。
|
||||
- 在 Manager 后端实现 Secret Broker。
|
||||
- 支持写入、读取引用、轮换、撤销、禁用。
|
||||
- DB 只保存 secret_ref,不保存明文密钥。
|
||||
- 增加密钥泄露防护:日志脱敏、前端响应过滤、Markdown 生成过滤。
|
||||
|
||||
### P3:Agnet 平台 AKS 身份接入
|
||||
|
||||
- Agnet 平台支持 deployment / role 到 Kubernetes ServiceAccount 的映射。
|
||||
- 支持 Vault Kubernetes Auth 或等价 Workload Identity。
|
||||
- 支持按 tenant / project / role 生成 Vault policy。
|
||||
- 子 Agnet 运行时只能访问被授权的 secret。
|
||||
- 生产云操作支持平台代理或审批。
|
||||
|
||||
### P4:NewAPI 解耦
|
||||
|
||||
- NewAPI 保持独立服务。
|
||||
- Manager 通过服务凭据调用 NewAPI。
|
||||
- Manager 展示普通用户需要的模型、余额、额度、调用日志。
|
||||
- 隐藏 NewAPI 管理员后台能力。
|
||||
- 建立 Manager tenant / user / project 与 NewAPI key / quota / usage 的映射。
|
||||
|
||||
### P5:部署和审计闭环
|
||||
|
||||
- Manager 生成 AGENT.md / resource context / permission manifest。
|
||||
- Agnet 平台部署子 Agnet 后回传 deployment、agent instance、状态和事件。
|
||||
- Manager 展示活动状态、失败原因、资源使用记录、模型调用记录和审计日志。
|
||||
- 对高危权限增加审批、撤销和运行中失效机制。
|
||||
|
||||
## 十一、当前不做
|
||||
|
||||
- 不把云密钥写入 Markdown。
|
||||
- 不把 NewAPI 后台开放给普通用户。
|
||||
- 不让 Agnet 平台成为长期密钥明文存储地。
|
||||
- 不在边界未确认时继续堆功能。
|
||||
- 不把 Manager 继续改造成 NewAPI 的缝合后台。
|
||||
@@ -1,70 +0,0 @@
|
||||
# Heicode Manager(源码目录 `heicode`)
|
||||
|
||||
本目录实现 **Heicode Manager**:网关与管理控制台(账号、渠道、模型策略、计费等)。目录名 `heicode` 为历史工程名;对外产品与文档统一称 **Heicode Manager**。目标是支撑 **Heicode 客户端**「浏览器登录后即用模型」。
|
||||
|
||||
## 本仓库角色
|
||||
|
||||
- 作为模型统一入口,管理渠道、用户、令牌、计费策略
|
||||
- 提供 Heicode 需要的授权桥接接口
|
||||
- 输出标准模型发现能力(`/v1/models`)给客户端
|
||||
|
||||
## Heicode 相关新增能力
|
||||
|
||||
### 1) 浏览器登录授权入口
|
||||
|
||||
- `GET /heicode/oauth/authorize`
|
||||
- `GET /heicode/oauth/session`
|
||||
|
||||
行为说明:
|
||||
|
||||
- 校验 `redirect_uri` 必须是 loopback(`127.0.0.1` / `localhost` / `::1`)
|
||||
- 若用户未登录平台控制台,先引导登录
|
||||
- 登录后签发或复用 Heicode 专用 token
|
||||
- 回跳本地客户端并携带 `state` 与 `token`
|
||||
|
||||
### 2) 客户端模型发现
|
||||
|
||||
- Heicode 通过 `GET /v1/models` 拉取可用模型集合
|
||||
- 客户端不再依赖硬编码模型列表
|
||||
|
||||
## 快速运行(本地 Docker)
|
||||
|
||||
```bash
|
||||
cd heicode
|
||||
docker compose -f docker-compose.yml -f docker-compose.override.yml up --build -d
|
||||
```
|
||||
|
||||
查看服务状态:
|
||||
|
||||
```bash
|
||||
docker compose ps
|
||||
docker compose logs -f heicode
|
||||
```
|
||||
|
||||
默认访问地址:`http://localhost:3000`
|
||||
|
||||
## Heicode 联调检查清单
|
||||
|
||||
- 平台已可正常登录 Web 控制台
|
||||
- `GET /heicode/oauth/authorize` 返回流程可达
|
||||
- `GET /heicode/oauth/session` 可反映登录态
|
||||
- `GET /v1/models` 返回模型列表不为空
|
||||
- Heicode 客户端登录后可直接发起模型请求
|
||||
|
||||
## 目录关注点
|
||||
|
||||
- `controller/heicode_oauth.go`:Heicode 授权与会话检测核心逻辑
|
||||
- `router/heicode-router.go`:Heicode OAuth 路由注册
|
||||
- `router/main.go`:总路由接入点
|
||||
- `docker-compose.override.yml`:本地开发构建入口
|
||||
|
||||
## 生产建议
|
||||
|
||||
- 强制 HTTPS 与可信证书
|
||||
- 设置稳定的会话密钥与持久化存储
|
||||
- 对授权回调、token 签发、模型探活增加审计日志
|
||||
- 配置限流与告警,避免异常流量冲击
|
||||
|
||||
## 许可证与来源
|
||||
|
||||
本工程在开源网关上游基础上演进(目录名 `heicode` 仅为历史路径),遵循对应许可证要求。企业使用前请完成内部合规审查。
|
||||
Reference in New Issue
Block a user