Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/02-user-guide/06-agents/08-version-control.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,5 +113,6 @@ DesireCore 中的每个智能体都是一个 Git 仓库。你对智能体的每

## 下一步

- [团队版本管理](./09-team-version-management.md) — 把整支智能体团队当作一个整体进行版本管理
- [智能体类型](./01-agent-types.md) — 回顾智能体的类型和定位
- [创建自定义智能体](./03-create-agent.md) — 创建你自己的智能体
235 changes: 235 additions & 0 deletions docs/02-user-guide/06-agents/09-team-version-management.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
---
title: 团队版本管理
description: 把整支智能体团队当作一个整体进行版本管理——记录组织变化、同步到 GitHub/Gitee、发布到社区或从他人的链接一键安装。
keywords: [团队版本管理, 团队协作, 团队发布, 团队安装, 跨设备同步, 团队 Git]
---

# 团队版本管理

如果说每个智能体是一位单独的同事,那么一支团队就是一个有自己阵型、规则和共同记忆的小组。当你花了很多时间把这个小组调教好——选好队长、搭好成员、写好共享规则——你会希望把整个小组当作"一份完整的成果"保存下来:能换台电脑接着用、能让朋友一键复刻、能在迭代过程中知道每次改了谁。

这就是团队版本管理要解决的事:**让团队也像智能体一样,具备完整的版本历史、远程同步和分享能力**。

## 团队为什么需要版本管理?

| 你遇到的情况 | 团队版本管理怎么帮你 |
|---|---|
| 在笔记本上搭好的团队,想在桌面机继续用 | 推送到 GitHub/Gitee 后,在另一台机器一键拉取,组织架构和共享资源一起到位 |
| 公司里两个人都在调一支客服团队 | 各自修改后通过推送/拉取合并,谁加了谁、谁换了队长一目了然 |
| 想把精心搭建的销售团队分享给社区 | 发布一次,任何人贴上链接就能完整安装,包括所有成员智能体 |
| 不小心把一位关键队长换掉了 | 在版本历史里找到那次更换,回到之前的组织架构 |
| 看到别人发布的运维团队很不错 | 输入链接,一键 Fork 到自己机器,自由修改不影响原作者 |

## 团队和成员的两层版本管理

DesireCore 用两层结构来管理团队:

| 层级 | 追踪什么 | 谁来维护 |
|---|---|---|
| **团队本身** | 谁是队长、谁是成员、共享技能/记忆/规则、团队远程仓库地址 | 团队版本管理(本章) |
| **每个成员智能体** | 自己的人格、原则、记忆、技能、对话学习 | 每个智能体自己的版本管理(参考[上一章](./08-version-control.md)) |

这意味着团队仓库里**不会嵌入成员智能体的副本**,只保留一份"成员清单"——指向每个成员各自的位置(本地、某个 git 仓库、或市场的某个版本)。这样既能整体打包分享,又不会让一个智能体被两份记录互相覆盖。

:::info 一个比喻
团队仓库像是乐队的"演出曲目单",列出谁来弹什么、用哪个版本的编曲。每位乐手依然有自己的练习本(成员智能体仓库),曲目单只是引用他们。
:::

## 团队的四种成员来源

当你把一个智能体加入团队时,系统会记下它"来自哪里"。共有四种来源:

| 来源 | 什么时候用 |
|---|---|
| **本机** | 这个智能体只在你自己电脑上,没有上传到 git,也没发布到市场。适合个人练手,但**团队若包含本机成员则不可分发** |
| **Git 仓库** | 这个智能体已经推送到 GitHub/Gitee 等,有公开或私有的远程地址。最常见的协作和分享形式 |
| **市场** | 从 DesireCore 市场安装的智能体,带具体版本号 |
| **内置核心** | DesireCore 自带的核心智能体(`desirecore`),所有人都有,无需上传 |

:::tip 团队要可分享,所有成员都得有"远程出处"
如果你计划把一支团队发布给他人,先确认每个成员都已经发布或推送到 git。完全本机的智能体别人是装不到的。
:::

## 配置团队远程仓库

要让团队跨设备同步、或分享给别人,需要先连接一个远程仓库(GitHub、Gitee、Gitea 等)。

1. 进入团队设置,或在队长视角点击右上角"更多"菜单
2. 选择"连接远程仓库"
3. 选择已连接的 OAuth 账号(没有的话先在设置中添加 GitHub/Gitee 等账号)
4. 填写仓库地址和分支名(默认 `main`)
5. 标注是否为私有仓库
6. 保存

保存后,系统会自动把这次远程配置记录为一次提交,等你下次推送时同步到远端。

:::tip 没远程也能用版本管理
即使不连接远程,团队的本地版本历史也照常记录。远程仓库只是给跨设备同步和对外分享加一道"云端备份",不是必需的。
:::

## 查看团队的修改历史

每次有人加入团队、被移除、被设为队长,或者远程被推送/拉取,系统都会自动留下一条记录。

1. 进入团队设置面板,展开"版本历史"区块;或在队长更多菜单点击"团队版本历史"
2. 顶部状态卡片显示团队当前同步情况:
- **已同步** — 本地和远端一致
- **领先 N 个** — 本地有新变化,可以推送
- **落后 N 个** — 远端有新变化,需要拉取
- **本地与远程分叉** — 双方都改了,需要合并
3. 下方按时间倒序列出所有修改记录,每条显示:
- 做了什么(例如:加入成员 alice、换帅 alice → bob)
- 谁做的、什么时候做的
- 当时影响了哪些团队文件

每个"自动留下记录"的动作大致是:

| 你的动作 | 记录示例 |
|---|---|
| 创建新团队 | 初始化团队仓库 |
| 添加成员 | 新增成员: alice |
| 移除成员 | 移除成员: bob |
| 更换队长 | 修改组织架构: 换帅 alice → bob |
| 批量添加/移除 | 新增成员批量(N 人) |
| 配置 / 移除远程 | 修改远程配置 |
| 升级成员版本 | 升级成员版本 |
| 发布新版本 | 发布 vX.Y.Z |
| 解散归档 | 团队归档 |

## 推送和拉取团队

跟单个智能体一样,团队也通过"推送"和"拉取"和远端同步。

- **推送** — 把你这边的变化(加成员、换队长、共享技能更新等)发送到远端
- **拉取** — 把远端的变化拉到本地

在团队版本历史面板顶部,有"推送"和"拉取"按钮(连了远程仓库后才显示)。

### 遇到冲突怎么办?

如果你这边和别人都改了同一个团队的同一处,拉取时会出现冲突。DesireCore 会优先尝试"以远端为准"自动合并;如果还是合不上,会列出具体冲突的文件,提示手动处理。

:::info 团队冲突通常很轻
因为团队仓库只记录"清单和共享资源",不包含成员智能体的内容,绝大部分冲突都集中在"成员列表"上——比如两个人各加了一位新成员。系统会取并集自动合并。
:::

## 升级团队成员到最新版本

当一支团队的某位成员智能体在它自己的仓库里发布了新版本,团队默认还指向旧版本——这是有意为之,**保证团队的可复现性**:你今天发布的团队,半年后别人安装时,装到的还是发布时锁定的那些成员版本,不会因为成员各自升级而变样。

需要把团队同步到成员的最新版本时:

1. 在团队版本历史顶部点击"升级成员"
2. 系统重新查询每个成员的最新版本
3. 把团队的"成员清单"更新到新版本,记录一条升级记录
4. 自动把本机相应的成员智能体也拉到新版本

:::warning 本地已偏离的成员不会被覆盖
如果你在本机修改过某个成员智能体,系统会标记为"已偏离",升级时**不会自动覆盖你的修改**,只是提醒你存在差异。是否同步由你决定。
:::

## 发布团队新版本

当团队达到一个稳定状态、可以对外分享或固化里程碑时,可以"发布"一次:

1. 在队长更多菜单点击"发布团队新版本"
2. 系统自动算出下一个版本号(例如 0.1.0 → 0.1.1)
3. 系统根据自上次发布以来的修改自动起草一份说明,你可以修改
4. 勾选"发布后推送到远程"(推荐),让远端也能看到这次发布
5. 点击"发布 vX.Y.Z" 完成

发布会在团队版本历史里留下一条带版本号的记录,并打一个对应的"版本标签",方便日后回溯到这次发布时的完整状态。

:::tip 发布失败不会让团队进入半成品状态
如果发布过程中出错(例如打版本标签失败、远端推送失败),系统会自动把团队回滚到发布前的状态,确保版本号和变更日志始终一致。
:::

## 从其他人的链接安装团队

如果别人发布了一支不错的团队、给你一个 git 链接,你可以一键把它复刻到自己机器:

1. 在团队列表点击"添加团队"→ "从链接安装"
2. 粘贴对方的团队 git 仓库地址
3. 可选:给这支团队起个新名字(留空就用原名)
4. 勾选"同时安装成员智能体"(推荐),系统会自动把团队需要的成员一并拉到本机
5. 确认 → 等待安装完成

:::tip 安装来的团队是独立副本
DesireCore 会自动断开和原始作者远程的连接、清空仓库地址。你可以自由修改、自己连接到你自己的远程,完全不影响原作者。这等同于 GitHub 上的 "fork"。
:::

安装过程中,系统会逐个处理每位成员:

| 状态 | 含义 |
|---|---|
| **已安装** | 成员智能体之前不存在,刚从远端下载完成 |
| **已存在(版本一致)** | 本机已有这个智能体,版本和团队需要的一致,跳过 |
| **本地版本较旧** | 本机有这个智能体,但版本低于团队需要,**不会覆盖你的本地版本**,只标记提示 |
| **本地已偏离** | 本机有同 ID 的智能体但内容被你改过,**不会覆盖** |
| **跳过(核心智能体)** | 是 DesireCore 自带的核心智能体,所有人都有,无需下载 |
| **无法安装** | 团队需要这个成员,但它没有远程地址(纯本机),你需要联系作者 |

## 解散团队是可恢复的

不想用某支团队时,可以"解散":

1. 在团队设置面板点击"解散团队"
2. 确认后,系统会:
- 在团队版本历史里留下一条解散记录
- 打一个"归档标签"
- 把整个团队目录移动到归档区(**不是真正删除**)

如果将来后悔了,可以从归档区手动恢复——所有版本历史、共享资源、成员清单都完整保留。

:::info 归档不占主列表
解散后的团队不会出现在团队列表里,但磁盘上还在。如需彻底清理,需手动删除归档目录。
:::

## 常见场景

### 场景一:笔记本和桌面机两边都用同一支团队

1. 在笔记本上把团队连到一个 GitHub 私有仓库
2. 完成搭建后推送一次
3. 在桌面机上"添加团队 → 从链接安装",粘贴同一个 GitHub 地址
4. 之后任一台机器修改后,推送/拉取就能保持两边一致

### 场景二:朋友给我一个团队链接,如何安装

1. 拿到链接(形如 `https://github.com/xxx/team-xxx.git`)
2. "添加团队 → 从链接安装",粘贴链接
3. 勾选"同时安装成员智能体"
4. 确认 → 等待完成,所有成员到位,可以立刻开始用

### 场景三:发布一支团队让社区使用

1. 确认所有成员都已经发布到市场或推送到 git(不能含本机来源的成员)
2. 配置好团队远程仓库
3. 点击"发布团队新版本",填好版本说明
4. 把团队的 git 地址分享出去

### 场景四:两个人同时改了团队,如何合并

A 加了 carol,B 加了 dave,各自推送时第二个会被告知"远端先动了"。
此时第二位:

1. 先拉取——系统会自动合并(并集:含 carol 和 dave)
2. 再推送

不需要任何手动 git 操作。

### 场景五:发布的新版本有问题,要回到上一版

团队的版本历史里每一次"发布"都打了版本标签。如需回到上一版本:

1. 在版本历史里找到上一个发布标签
2. 点击"恢复到此版本"
3. 系统创建一条"回滚"记录,并把团队配置回到那时的状态

成员版本会按那个时间点的清单重新指向,你也可以选择是否同时回滚本机成员智能体。

## 下一步

- [版本管理](./08-version-control.md) — 单个智能体的版本管理
- [跨智能体协作](../04-delegation/06-cross-agent.md) — 多智能体协作执行
- [智能任务编排](../../04-concepts/10-task-orchestration.md) — 团队模式 vs 蜂群模式的概念解析
9 changes: 9 additions & 0 deletions docs/05-more/03-glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,15 @@ DesireCore 的协作写作功能。基于 Markdown 编辑器,支持 AI 辅助
### Teach(教)
六原语之一。用户告诉智能体怎么做、为什么这么做、什么情况例外。教学内容会被持久化为行为规范。

### Team Member Lock(团队成员锁定)
团队对每位成员智能体的精确版本指向。即使成员智能体在自己的仓库里继续迭代,团队默认仍指向锁定的版本,保证别人下次安装时能装到一模一样的组合。需要同步到成员最新版本时,使用"升级成员"操作。

### Team Release(团队发布)
为团队打一个完整的版本号(例如 v0.1.1)、生成变更日志、并同步到远程。发布后这个版本可以被分享、回退、或作为参考点。

### Team Version Management(团队版本管理)
把整支智能体团队当作一个整体进行版本管理的能力,包括组织变化(加成员/换队长/解散)的自动记录、推送到 GitHub/Gitee 远程仓库、发布团队新版本、从他人链接一键 Fork 安装等。与单个智能体的版本管理是两层独立体系。

### Tool(工具)
智能体可以调用的外部能力。包括内置工具(文件读写、搜索等)、MCP 工具和自定义工具。通过 Tool Registry 统一注册和管理。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,5 +113,6 @@ During export, you can select content by category, such as Agents, skills, memor

## Next Steps

- [Team Version Management](./09-team-version-management.md) - Manage an entire Agent team as a single versioned unit
- [Agent Types](./01-agent-types.md) - Review Agent types and positioning
- [Create Custom Agent](./03-create-agent.md) - Create your own Agent
Loading
Loading