diff --git a/docs/integration/README.md b/docs/integration/README.md index abb67aa..584b5c4 100644 --- a/docs/integration/README.md +++ b/docs/integration/README.md @@ -7,7 +7,12 @@ **Agnet 可视化分工(摘要)** - **Heicode Manager**:呈现 Agnet 平台回传的 **运行态与性能类字段**(是否在跑、阶段、健康、资源、聚合指标等)。 -- **Heicode 客户端**:在编码与会话中 **实时展示子 Agnet 产出内容**(流式输出等),与 §6.4 / 事件流中的会话侧增量对应。 +- **Heicode 客户端**:在编码与会话中 **实时展示 Agnet 平台子 agent 产出**(流式输出等),与 §6.4 / 事件流中的会话侧增量对应。 团队与个人均可使用两端;划分依据是 **信息类型与载体**,详见集成文档 **§1.1**。 +**Manager 一键部署与 SK(摘要)** + +- **Heicode Manager** 须支持 **一键部署 Agnet 团队**,并在契约中写清 **团队成员**、**各成员所用模型**、**Agnet 子 agent 绑定的 SK 源(只读)**。 +- **SK**:以 **Git 为统一事实源**,并允许 **上传 MD** 等作为补充;对 Agnet 的接口与语义要求见集成文档 **§5.0.1**。SK 正文不经 Agnet/Manager 编辑,详见 **§5.0**、**§3.2**。 + **里程碑**(何时落地哪些能力)见 [`../milestones/README.md`](../milestones/README.md)。 diff --git a/docs/integration/agnet-platform-api-design.md b/docs/integration/agnet-platform-api-design.md index 594b7ae..d72e264 100644 --- a/docs/integration/agnet-platform-api-design.md +++ b/docs/integration/agnet-platform-api-design.md @@ -23,7 +23,7 @@ | 载体 | 主要职责 | 典型内容 | |------|----------|----------| | **Heicode Manager** | 呈现 **Agnet 平台回传的运行态与性能类字段**:编队/实例是否在跑、阶段(phase)、健康度、资源占用、队列与心跳、项目级聚合指标与近期错误摘要等。 | 控制台、Dashboard、与平台 SLA/运维相关的观测面。 | -| **Heicode(客户端)** | 在 **编码与工作会话过程中**,**实时或准实时展示子 Agnet(子执行单元)产出的内容**(流式文本/结构化片段/工具结果等),与编辑、会话上下文同屏。 | 会话内输出面板、流式增量、与当前任务绑定的子代理交付物。 | +| **Heicode(客户端)** | 在 **编码与工作会话过程中**,**实时或准实时展示 Agnet 平台内子 agent 产出的内容**(流式文本/结构化片段/工具结果等),与编辑、会话上下文同屏。 | 会话内输出面板、流式增量、与当前任务绑定的子 agent 交付物。 | **边界**:Manager 侧重 **平台契约下的状态与指标**;Heicode 侧重 **工作流中的执行输出**。二者可调用同源底层 API,但 **不得**把「平台大盘」与「子代理会话输出」混为同一套 UI 假设——后者通常带更强会话/项目上下文与更细粒度流式协议。 @@ -71,6 +71,7 @@ - **控制面**(部署/改策略)与 **观测面**(读指标)可分角色授予。 - **凭据类写操作**(绑定 Git Token、云 SA)单独 scope:`agnet:credential:write`。 +- **SK 正文写入**:仅允许经 **Heicode 客户端**身份或专用 **`heicode:sk:write`**(示例名)路径;**Agnet / Manager 控制台接口不得授予 SK 正文写权限**(与 §5.0「SK 仅在 Heicode 编辑」一致)。 - **拒绝隐式升级**:只读 Token **不得**通过查询参数绕过 body 校验升格为写操作。 --- @@ -109,6 +110,88 @@ Tenant(租户) > 下列 REST 仅为示意;实际路径前缀可为 `/api/v1` 或 `/agnet/v1`。 +### 5.0 Heicode Manager:一键部署 Agnet 团队与 SK 边界(产品契约) + +下列条款为 **Heicode 与 Agnet 联合落地时必须写清** 的契约;API 形状可与 **`POST /deployments`** 合一或拆为 **`POST /teams/deployments`** 等聚合端点,但 **语义不得缩水**。 + +| 契约项 | 要求 | +|--------|------| +| **一键部署** | 在 **Heicode Manager** 控制台提供 **单次操作**(按钮或向导终点)完成:在 Agnet 上 **部署一支 Agnet 团队/编队**,并得到可追踪的 `deployment_id`、团队视图入口与后续观测衔接(见 §1.1、§6)。不得依赖用户在 Agnet 原生控制台重复手工编排才能跑通 Heicode 叙事。 | +| **团队成员** | 部署配置须 **显式包含团队成员**(至少:`user_id`、组织内角色、是否纳入该 Agnet 团队)。成员关系由 Manager/Agnet 持久化,供 **RBAC、配额与审计**;团队管理员经 **Manager 控制面**维护名单(增删改须审计)。 | +| **成员所用模型** | 须能声明 **各成员默认使用的模型/路由**(如 `default_model_id`、`provider_profile_id` 或与 Manager **模型策略**对齐的引用)。支持「团队缺省 + 成员覆盖」;未授权模型 **不得**在执行路径上静默生效。 | +| **子 agent(Agnet 平台内)与 SK** | 本文所称 **子 Agnet / 子 agent** 均指 **Agnet 平台内部的子智能体/子执行单元**(由 Agnet 编排与实例化),非 Heicode 自研运行时。部署配置须支持为 **指定子 agent** 绑定 **SK 输入源**;运行态下该子 agent **只读**白名单内的 SK 内容。 | +| **SK 与 Git / 上传 MD** | **SK 正文资产以 Git 仓库为统一事实源**(用户指定的远端/连接与分支、路径规则由集成约定)。同时允许用户 **上传 Markdown 等文件** 作为 **补充 SK 源**(租户内对象存储/制品 ID)。Agnet 执行前将两类来源 **解析为不可变快照**(commit SHA / upload version),再注入子 agent 上下文。 | +| **SK 文件仅在 Heicode 中编辑** | Git 侧 SK 的 **创建、修改、删除** 经 **Heicode 客户端**提交到仓库(或 Heicode 发起变更后再同步);**上传类 SK** 的 **新增/替换** 仅通过 **Heicode 提供的入口**(Manager 可做登记与透传,**不提供 SK 正文在线编辑器**)。**Agnet 平台与子 agent 对 SK 均只读**;若 Agnet 控制台出现可直接改 SK 正文的 API/UI,视为 **违背产品边界**。 | + +**部署请求体扩展(示意,可与 §5.1 合并)** + +```json +{ + "project_id": "prj_xxx", + "template": "agnet_team_default", + "correlation_id": "mgr_cor_abc", + "members": [ + { + "user_id": "usr_alice", + "role_in_team": "lead", + "default_model_id": "mdl_claude_sonnet", + "provider_profile_id": "pp_org_default" + }, + { + "user_id": "usr_bob", + "role_in_team": "member", + "default_model_id": "mdl_claude_haiku" + } + ], + "sub_agents": [ + { + "role_template": "sub_reviewer", + "sk_file_refs": ["sk_review_policy.md", "sk_api_bar.yaml"] + } + ], + "parameters": { "unit_overrides": {} } +} +``` + +- **`sk_sources`(推荐显式建模)**:替代或细化纯路径数组 `sk_file_refs`; 每个元素标明来源类型,便于 Agnet 实现拉取与快照。 + +**部署请求体中 SK 绑定扩展示意** + +```json +"sub_agents": [ + { + "role_template": "sub_reviewer", + "sk_sources": [ + { + "type": "git", + "repo_ref": { "connection_id": "gitconn_1", "repo_url": "https://example.com/org/sk-repo.git", "ref": "main", "paths": ["policy/review.md"] } + }, + { + "type": "upload", + "artifact_id": "sk_upl_9f3a", + "mime": "text/markdown" + } + ] + } +] +``` + +#### 5.0.1 对 Agnet 平台的接口与语义要求(含 SK) + +下列为 **Agnet 应向 Heicode/Manager 提供或可观测** 的最小要求;路径可为等价 gRPC。 + +| 类别 | 要求 | +|------|------| +| **部署与编队** | 实现 **`POST /deployments`**(或 **`POST /teams/deployments`**)可接收 **成员、成员模型、子 agent 模板及 `sk_sources`**;返回 **`deployment_id`**、实例/子 agent 标识,供 Callback 与观测关联。 | +| **SK 快照只读** | 对每个 `deployment_id` / `sub_agent_id`,Agnet 须能记录 **已解析的 SK 快照**(Git:`commit_sha` + 路径哈希;Upload:`artifact_id` + 版本)。运行注入 **仅此快照**,不得在执行中「瞒报版本」拉未授权路径。 | +| **Git 拉取** | Agnet 须支持 **按租户注册 Git 凭据/连接**(`connection_id` 或等价),由用户在 **Heicode/Manager 流程**中授权;**Agnet 不提供 Git 写接口用于改 SK**——写操作发生在 Git 远端或经 Heicode 提交后,Agnet 仅 **fetch + checkout 指定 ref**。 | +| **上传制品** | 若支持 `type: "upload"`:Agnet(或与 Manager 分工)须提供 **`artifact_id` 的只读获取**(如 `GET /sk-artifacts/{artifact_id}/content` 或预签名 URL),**无 `PUT` 修改正文**于 Agnet 控制台;上传入口 **仅** Heicode 侧发起、Agnet 存只读副本。 | +| **刷新策略** | 约定 **何时重新解析 SK**(如新 commit、用户触发刷新、部署新版本);须可通过 API 或事件暴露 **`sk_snapshot_refreshed`**,便于 Heicode 提示「已用新版本 SK」。 | +| **禁止项** | **不得**提供面向 SK 正文的 **通用写 API**(与 §3.2 一致);子 agent **只读**绑定列表内的快照。 | + +- **`sk_file_refs`**(若保留简化字段):视为 **相对某默认 Git 根**或 **由 Manager 展开为 `sk_sources`** 前的简写;联合 RFC 须声明展开规则。 +- **验收**:部署完成后,Manager 可展示「团队成员—模型—**Agnet 子 agent**—SK 源(Git ref / 上传件)—快照版本」;Git 更新或 Heicode 重新上传后,按刷新策略在后续运行使用新快照。 + ### 5.1 部署编队 `POST /deployments` @@ -120,6 +203,8 @@ Tenant(租户) "project_id": "prj_xxx", "template": "agile_min", "correlation_id": "mgr_cor_abc", + "members": [], + "sub_agents": [], "parameters": { "unit_overrides": {} } @@ -191,7 +276,7 @@ Tenant(租户) ### 6.4 子 Agnet 输出流(Heicode 编码侧) -面向 **Heicode 客户端**在会话内展示 **子执行单元**的产出(与 §6.1 的「实例心跳/资源占用」互补:此处强调 **内容增量**,而非仅状态字段)。 +面向 **Heicode 客户端**在会话内展示 **Agnet 平台子 agent** 的产出(与 §6.1 的「实例心跳/资源占用」互补:此处强调 **内容增量**,而非仅状态字段)。 **设计意图**(路径可等价映射): diff --git a/docs/milestones/M3-agnet-orchestration-bridge.md b/docs/milestones/M3-agnet-orchestration-bridge.md index 850cebc..fbf6b6f 100644 --- a/docs/milestones/M3-agnet-orchestration-bridge.md +++ b/docs/milestones/M3-agnet-orchestration-bridge.md @@ -6,7 +6,8 @@ ## 完成定义(DoD) -- [ ] Agnet 侧实现集成文档中 **编排控制面** 最小集(部署/伸缩/停止编队或等价操作)。 +- [ ] Agnet 侧实现集成文档中 **编排控制面** 最小集(部署/伸缩/停止编队或等价操作);与 **Heicode Manager 一键部署 Agnet 团队** 能力对齐(**§5.0**:成员、成员模型、子 Agnet 绑定 `sk_file_refs`)。 +- [ ] **SK 边界**:子 Agnet 仅按绑定 **只读** SK;SK 正文编辑 **仅** 经 Heicode,Manager/Agnet 无写入口(集成文档 **§5.0**、**§3.2**)。 - [ ] **回调/Webhook**:执行单元状态变更可推送到 Heicode 可订阅地址(或 Manager 注册 webhook URL)。 - [ ] **幂等与关联 ID**:每次部署生成全局唯一的 `deployment_id`,与 Heicode 侧 `correlation_id` 可互查。 - [ ] **失败语义**:超时、部分就绪、不可调度等状态码与可重试策略文档化。 @@ -16,7 +17,7 @@ - [M1](./M1-contract-identity.md) - [M2](./M2-local-e2e.md)(可用 Mock 缩短并行时间,但上线前需真实联调) -- 阅读 [`../integration/agnet-platform-api-design.md`](../integration/agnet-platform-api-design.md) 第 4~6 节 +- 阅读 [`../integration/agnet-platform-api-design.md`](../integration/agnet-platform-api-design.md) 第 3~6 节(含 **§5.0**) ## 与 Agnet 的衔接