mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-10-21 12:23:49 +08:00
feat(manage-teams): expose complete team repository operations (#210)
团队仓库能力补齐后,manage-teams 的原有说明仍要求用户在 UI 配置远程,并缺少安装、升级与发布重试入口。同步中英文动作和流程、修正 set_member_source 自动解析语义,将技能增版为 1.4.0;最低客户端 10.0.178,旧客户端不应加载新增动作。 Updates the bilingual manage-teams contract for all team repository actions, remote destination configuration, exact release tags and same-version retries, complete archiving and protected member updates. Bumps the Skill to 1.4.0 with a 10.0.178 client floor so older tool ABIs cannot load the new actions. Validation: i18n/schema/catalog checks passed with 105 pre-existing governance/provenance warnings; reviewed human translations and refreshed their source hash. New content uses generic roles and examples. No customer, tenant, credential or runtime fixture data is introduced. Related: desirecore/desirecore#1490. Client implementation: https://github.com/desirecore/desirecore/pull/4362. Do not infer release availability from this Skill PR. The authorized alternative pre-publication check passed: full working tree including hidden files, changed paths, branch and commit metadata, and this PR text were scanned for credential shapes and manually reviewed for customer-neutral content. No private token list was supplied or recorded.
This commit is contained in:
@@ -46,10 +46,15 @@
|
||||
| `set_member_source` | 声明成员 Agent 的来源 | `teamId`、`agentId`、`memberSource`;`git` 必填 `url`(https,将被 clone)与 `ref`(默认 `main`),`registry` 必填 `id`+`version`,`core`/`local` 无附加字段 |
|
||||
| `update` | 部分更新团队配置 | `teamId`;可更新 `name/type/isolation/parentTeamId/description/avatar/avatarImage` |
|
||||
| `promote` | 临时团队升级为持久团队 | `teamId`;单向操作,不得隐式执行 |
|
||||
| `disband` | 解散团队 | `teamId`;若用户未明确要求,先说明影响并确认 |
|
||||
| `disband` | 解散团队 | `teamId`;提交审批;完整归档,恢复需重新绑定目录和核准内容 |
|
||||
| `fork_team` | 从远程仓库安装团队 | `url`;`name?`、`installMembers?`;进入审批闸门 |
|
||||
| `push` | 把本地团队仓库推送到已连接的远程 | `teamId`;进入审批闸门 |
|
||||
| `pull` | 从已连接的远程拉取并校验团队 | `teamId`;进入审批闸门 |
|
||||
| `add_remote` | 配置或更换发布目标 | `teamId`、`url`;`connectionId?`、`branch?`、`isPrivate?`;不创建远程仓库 |
|
||||
| `remove_remote` | 移除远程配置与本机连接绑定 | `teamId`;不删除远程仓库 |
|
||||
| `install_members` | 按现有 lock 补齐成员 | `teamId`;`forceUpdate?`,默认 false |
|
||||
| `upgrade_members` | 解析新 lock 并尝试安全升级 | `teamId`;`forceUpdate?`,默认 true;保留本机修改和提交 |
|
||||
| `release` | 创建本地版本或发布精确版本 | `teamId`;`push?` 默认 false、`changelogEntry?`、`expectedCommit?`;重试已有版本用 `releaseTag` |
|
||||
|
||||
### 3. 创建团队
|
||||
|
||||
@@ -101,7 +106,7 @@
|
||||
|
||||
- 成员增删优先使用批量 action,避免多次调用产生中间状态。
|
||||
- `set_supervisor` 使用 `agentId` 指定新组长;先确认其未担任其他团队组长。
|
||||
- `set_member_source` 声明来源,不搬运文件。名册里只要还留着 `local` 成员,团队就**不可分发**——`members.lock.json` 无法锁定一个只存在于本机的 ID,别处 fork 出来会静默缺员。发布前把每个成员改为 `git` 或 `registry`,再 `resolve` 写锁。它改不了成员的 `role`,换组长用 `set_supervisor`。
|
||||
- `set_member_source` 声明来源,不搬运文件。名册里只要还留着 `local` 成员,团队就**不可分发**——`members.lock.json` 无法锁定一个只存在于本机的 ID,别处 fork 出来会静默缺员。发布前把每个成员改为 `git` 或 `registry`;该动作会自动解析并写 lock,核对解析回执即可。它改不了成员的 `role`,换组长用 `set_supervisor`。
|
||||
- `update` 是部分更新:未传字段保持原值。
|
||||
- `parentTeamId: null` 表示摘除父团队成为顶层团队;空字符串非法。
|
||||
- `type` 只允许 `ephemeral → persistent`。原值幂等更新可以接受;明确升级优先使用 `promote`。
|
||||
@@ -124,7 +129,7 @@
|
||||
|
||||
- 临时团队完成一次项目后应解散,避免组织结构长期堆积。
|
||||
- 只有明确存在长期协作需求时才 `promote`;这是单向升级。
|
||||
- `disband` 会移除团队组织与仓库。用户已明确要求时可直接执行;否则先用 `get` 展示目标并确认,避免解散错团队。
|
||||
- `disband` 完整归档团队目录并结束本机工作目录绑定;不依赖 Git 初始化。归档失败保留原数据并报告失败。该动作提交审批,是否显示真人卡片由调用方的审批模式决定。恢复时先确认 teamId 未被占用,再绑定工作目录、重新核准内容。
|
||||
|
||||
### 6. 团队仓库与远程同步
|
||||
|
||||
@@ -138,11 +143,21 @@
|
||||
|
||||
远程 `fork_team/push/pull` 必须走 `ManageTeam`,原因是工具会执行团队 Schema、名册一致性、核心智能体组长禁令、工作区类型和越界符号链接校验,并进入审批闸门。不要用裸 `git push/pull` 绕过这些治理步骤;这条规则不是基于“Agent 一定拿不到凭据”的假设。
|
||||
|
||||
- `push/pull` 要求团队已在客户端连接远程仓库;未连接时请让用户在团队设置中完成连接或发布。
|
||||
- `push/pull` 要求已有远程配置;未连接时使用 `add_remote` 配置目标和已有连接。客户端团队设置也是可选入口。Agent 可以自主选择配置方式。
|
||||
- `create` 和 `fork_team` 得到的本地团队默认都不继承可直接推送的远程配置。
|
||||
- `fork_team` 默认 `installMembers=true`;本机已偏离锁定版本的同名 Agent 会被跳过保护,不会覆盖。
|
||||
- `pull` 可能覆盖本地团队配置;先查看本地状态并说明审批卡中的目标远程。
|
||||
|
||||
发布与成员版本:
|
||||
|
||||
- `release` 默认只创建本地版本;明确要对外发布时传 `push=true`。审批摘要显示实际目标和版本,只推分支及本次正式 tag,不推 `backup/`、`archive/` 或其他 tag。
|
||||
- 先用 `get` 核对团队;新版本可传 `expectedCommit` 约束 HEAD。返回 `tag/version/commitHash` 与 `branchPushed/tagPushed/pushed`,本地成功和远端发布分别核验。
|
||||
- 网络失败或远端结果未知时,先检查远端;用返回的 `releaseTag` 重试同一版本,不再次运行无 tag 的 release。重试时不得传 `changelogEntry`。
|
||||
- `install_members` 按精确 lock 安装;`upgrade_members` 先解析当前声明,再按新 pin 尝试安全更新。它们不覆盖用户修改、本机提交,不自动回退,也不自动核准内容。
|
||||
- `complete=false` 或成员 `outdated/diverged/failed/unreachable` 表示未对齐;不要把 `success=true`、`skippedCount` 或 `failedCount=0` 当成全员升级完成。读取逐成员回执,确认后选择修复方法。
|
||||
- 同一 Agent 在多个团队有不同 pin 时,不自动覆盖现有分叉;保留数据并报告冲突。
|
||||
- 远程动作、远程来源声明和远程目标配置提交审批;`ask-external` 对这些动作保留审批,`allow-all` 保留用户对执行主体的全量信任。
|
||||
|
||||
### 7. 分派与收尾
|
||||
|
||||
创建团队后,用 `Delegate` 向组长或成员分派任务:
|
||||
@@ -158,6 +173,6 @@
|
||||
- `Agent 不存在`:核对 ID;先创建或安装 Agent,再重试团队操作。
|
||||
- `核心智能体不能担任组长`:显式指定普通 Agent 为 `supervisor`。
|
||||
- `组长已管理其他团队`:先为原团队执行 `set_supervisor`,再重试。
|
||||
- `未配置远程`:让用户在客户端团队设置中连接远程,不要猜测隐藏 API。
|
||||
- `未配置远程`:调用 `add_remote` 配置目标,或使用客户端团队设置;不要猜测隐藏 API。
|
||||
- `本地内容已变化/存在冲突`:先用 `get` 获取目录并检查 Git 状态,保留用户改动后再决定提交、拉取或重试。
|
||||
- Skill 缺失或禁用时,仍可根据 `ManageTeam` 的 action、参数 Schema 和错误提示执行最小操作,不要因此绕过工具直接修改 AgentFS。
|
||||
|
||||
Reference in New Issue
Block a user