Skip to content

Commit 38c699e

Browse files
committed
fcop 0.4.9: document Solo->Team migration recipe (team constitution in shared/ + per-file archival to log/solo-archive/). protocol doc only; no new tools.
1 parent dc1e8a9 commit 38c699e

4 files changed

Lines changed: 197 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,56 @@
66

77
## [Unreleased]
88

9+
### fcop 0.4.9(MCP 包)- 2026-04-22
10+
11+
#### 改进:Solo → Team 迁移沉淀成协议推荐做法(只改协议解释文件,不加工具)
12+
13+
ADMIN 的一次野外观察:GPT-5.4 Medium 在 Solo→Team 切换时**自发**做了
14+
两件漂亮的事——
15+
16+
1.`docs/agents/shared/` 下落了 `TEAM-ROLES.md`
17+
`TEAM-OPERATING-RULES.md` 两份"团队宪法"
18+
2.`TEAM-OPERATING-RULES.md` 里声明"旧 ME 文件视为历史记录"
19+
20+
第一件事证明了 LLM 在 Solo→Team 这个节点上能自发产出合格分工文档——
21+
值得沉淀,但不值得做成硬模板工具。第二件事暴露了 FCoP 的一个物理短
22+
板:Agent 虽然**规则上**说了不混淆,但旧 Solo 任务和新团队任务**物理
23+
**还堆在同一个 `tasks/` 目录里,`list_tasks()` 输出会混乱。
24+
25+
0.4.9 采用**方向 B(只改文档,不加工具)**
26+
27+
**fcop-protocol.mdc 改动**
28+
- 协议版本 `1.1.0 → 1.2.0`
29+
- 在 "Project Mode & Identity" 大块末尾(`## Core Directories` 之前)
30+
新增一节 **"Solo → Team 迁移推荐做法"**(双语),沉淀三条做法:
31+
1. 团队切换时 leader/主控角色主动在 `shared/` 落两份宪法文件
32+
`TEAM-ROLES.md` 定"谁负责什么",`TEAM-OPERATING-RULES.md`
33+
"什么时候派、怎么回、什么时候升级")
34+
2. ADMIN 一句"归档 Solo 历史"触发,Agent 用现有
35+
`archive_task(path)` **逐份**`TASK-*-to-ME.md` 移到
36+
`log/solo-archive/`(不加批量工具——逐份归档让每次移动都是一次
37+
可见的 Rule 0.a 事件)
38+
3. `fcop.json` 不需要记"切换时间戳"——它是身份快照,切换时间由
39+
`log/solo-archive/` 最新文件和新团队任务最早文件自动框出来
40+
- `shared/` 的 UPPERCASE 前缀表新增 `TEAM-` 前缀,让"团队宪法"成为
41+
协议级一等公民
42+
- "Protocol Version Log" 补上 v1.2 条目,标注来源是野外观察 +
43+
GPT-5.4 的自发产出
44+
45+
**为什么不加新工具**
46+
- `archive_solo_history()` 这种批量工具会掩盖每次归档移动——违背
47+
Rule 0.a 的"每一次操作都应留痕"精神
48+
- `init_team_constitution()` 模板会约束 LLM 的判断——野外证据表明
49+
不需要兜底,协议只需规定结构就够了
50+
- ADMIN 已经明确"工具多了 admin 不会用"——不加工具就是最好的尊重
51+
52+
**文件影响**
53+
- `src/fcop/_data/fcop-protocol.mdc`~120 行新内容,版本号 bump
54+
- 无代码改动
55+
56+
**回归**:不涉及代码路径,`archive_task` 仍按 0.4.7 行为工作;
57+
`log/solo-archive/` 是 ADMIN 建议路径,`archive_task` 默认仍写 `log/`
58+
959
### fcop 0.4.8(MCP 包)- 2026-04-22
1060

1161
#### 改进:ADMIN 只说人话 / Agent 负责翻译(文档 + MCP instructions 同步)

codeflow-plugin/.cursor-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "fcop",
3-
"version": "0.4.8",
3+
"version": "0.4.9",
44
"description": "FCoP — File-based Coordination Protocol for multi-AI-agent collaboration. Supports Solo mode, preset teams (dev / media / mvp), and custom teams with role-code validation.",
55
"author": {
66
"name": "FCoP Maintainers",

codeflow-plugin/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "fcop"
7-
version = "0.4.8"
7+
version = "0.4.9"
88
description = "MCP toolbox for FCoP — the File-based Coordination Protocol for multi-agent collaboration."
99
readme = "README.md"
1010
requires-python = ">=3.10"

codeflow-plugin/src/fcop/_data/fcop-protocol.mdc

Lines changed: 145 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
description: FCoP Protocol — the protocol commentary on the rules defined in fcop-rules.mdc. Covers file naming, YAML frontmatter, directory layout, patrol triggers, and other practical conventions. Auto-deployed by the fcop MCP. FCoP 协议解释:fcop-rules.mdc 中协议规则的具体适用说明——文件命名、YAML 元数据、目录结构、巡检触发等落地细节,由 fcop MCP 自动部署。
33
alwaysApply: true
4-
fcop_protocol_version: 1.1.0
4+
fcop_protocol_version: 1.2.0
55
---
66

77
<!--
@@ -355,6 +355,137 @@ Without the file in step 1 and the file in step 3, there is no "reviewer"
355355
role — only one voice approving itself, which is exactly what Rule 0.b
356356
forbids.
357357

358+
### Solo → Team 迁移推荐做法 / Migrating Solo to Team (recommended recipe)
359+
360+
当项目从 `mode: solo` 切到 `mode: team`(或自定义团队)时,`fcop.json`
361+
只记录了"谁在"(角色和 leader),**没有记录"谁干啥"**。推荐做法如下
362+
——这不是硬规则,是对 Rule 0.a(落文件)在"团队分工"场景的自然应用。
363+
364+
When a project switches from `mode: solo` to `mode: team` (or a custom
365+
team), `fcop.json` only records **who is on the team** (roles and
366+
leader) — it does **not** record **who does what**. The recipe below
367+
is a recommended (not mandatory) practice; it is a natural application
368+
of Rule 0.a (land it as a file) to the "team job split" scenario.
369+
370+
#### 1. 在 `shared/` 落两份团队宪法 / Land a two-file "team constitution" under `shared/`
371+
372+
切到团队模式的 Agent(通常是 leader 或主控角色)应当**主动**在
373+
`docs/agents/shared/` 下落两份文件:
374+
375+
The agent responsible for the handoff (typically the leader / main
376+
role) should **proactively** create two files under
377+
`docs/agents/shared/`:
378+
379+
| 文件名 / File | 回答的问题 / Answers |
380+
|---|---|
381+
| `TEAM-ROLES.md` | 每个角色的边界:`AGENT1` 和 `BGENT2` 各自负责什么? / What is each role responsible for? |
382+
| `TEAM-OPERATING-RULES.md` | 团队的运行规则:什么时候 leader 直接做,什么时候派给副手,副手怎么回执,什么时候升级给 ADMIN? / When does the leader act directly, when does it delegate, how do sub-roles reply, when to escalate to ADMIN? |
383+
384+
两份分工:`TEAM-ROLES.md` 规定"谁负责什么",`TEAM-OPERATING-RULES.md`
385+
规定"什么时候派、怎么回、什么时候升级"。文件必须符合 FCoP frontmatter
386+
(`protocol / version / sender / recipient`)要求,`sender` 是 leader
387+
角色、`recipient` 是 `ADMIN`。
388+
389+
The two files are complementary: `TEAM-ROLES.md` defines **who owns
390+
what**, `TEAM-OPERATING-RULES.md` defines **when to dispatch, how to
391+
reply, when to escalate**. Both files must follow the FCoP frontmatter
392+
(`protocol / version / sender / recipient`), with `sender` being the
393+
leader role and `recipient` being `ADMIN`.
394+
395+
**为什么不做成工具?** 不同项目的职责细节不同,模板会限制 Agent 的
396+
判断力。LLM 在 Solo→Team 切换这个节点上已经能自发产出合格的分工
397+
文档——协议把"推荐结构"说清楚就够了,内容交给 Agent 针对具体项目写。
398+
399+
**Why not a tool?** Job-split details vary by project, and a template
400+
would constrain agent judgment. LLMs can already produce reasonable
401+
job-split docs at the Solo→Team transition — the protocol only needs
402+
to specify **structure**, not **content**.
403+
404+
#### 2. 归档旧 Solo 历史 / Archive the old Solo history
405+
406+
Solo 阶段产生的 `TASK-*-to-ME.md` / `TASK-*-ME-to-*.md` 切团队后仍然
407+
物理上堆在 `tasks/` 里,会:
408+
409+
- 让 `list_tasks()` 输出混杂,新 Agent 一眼看不清"当前待办"
410+
- 让 `AGENT1 / BGENT2` 错把 `ME` 的历史任务当成自己的待执行事项
411+
412+
推荐做法是**物理移动**到专用归档目录,不是只在规则文件里口头声明
413+
"旧 ME 文件视为历史记录":
414+
415+
After switching to a team, Solo-era `TASK-*-to-ME.md` files still sit
416+
in `tasks/` alongside the new team tasks. This causes:
417+
418+
- `list_tasks()` output becomes noisy; new agents can't see "what's
419+
actually pending"
420+
- `AGENT1 / BGENT2` may mistake `ME`-era historical tasks as their
421+
own pending work
422+
423+
The recommended practice is to **physically move** Solo history to a
424+
dedicated archive directory, not merely to declare "treat old `ME`
425+
files as historical" in a rules file:
426+
427+
```
428+
docs/agents/
429+
├── tasks/ # 新团队任务(AGENT1/BGENT2)
430+
│ ├── TASK-20260422-008-ADMIN-to-AGENT1.md
431+
│ ├── TASK-20260422-009-AGENT1-to-BGENT2.md
432+
│ └── ...
433+
└── log/
434+
└── solo-archive/ # 旧 Solo 阶段历史
435+
├── TASK-20260421-001-SYSTEM-to-ME.md
436+
├── TASK-20260421-002-ADMIN-to-ME.md
437+
└── ...
438+
```
439+
440+
**迁移触发时机 / When to archive**:在团队宪法(上面两份 `shared/`
441+
文件)落盘**之后**、团队开始接第一个新任务**之前**。ADMIN 可以用一
442+
句自然语言触发,例如:
443+
444+
- "把 Solo 历史归档" / "archive the solo history"
445+
- "ME 的旧任务搬到 log/solo-archive/"
446+
447+
Agent 收到这类指令时,用现有的 `archive_task(task_id)` 工具**逐份
448+
归档**——每次传一个形如 `TASK-20260421-001` 的前缀,工具会把 `tasks/`
449+
和 `reports/` 里匹配的文件一起搬到 `log/`(FCoP 不提供批量归档工具
450+
——逐份归档让每一次移动都是一次可见的记账事件,符合 Rule 0.a 的精神)。
451+
452+
`archive_task` 当前默认目标是扁平的 `log/`(所有归档文件平铺)。如果
453+
想进一步物理隔离 Solo 阶段的产物,把这批文件从 `log/` 再挪到子目录
454+
`log/solo-archive/` 是合理的——这一步目前仍是手工 `mv`,协议不另外
455+
提供工具。
456+
457+
**Who triggers it**: ADMIN, after the team constitution files are in
458+
place and before the team picks up its first new task. A one-liner
459+
like "archive the solo history" is enough. The agent then uses
460+
`archive_task(task_id)` **one file at a time** — passing a prefix like
461+
`TASK-20260421-001`; the tool moves matching files from `tasks/` and
462+
`reports/` into `log/` (FCoP deliberately ships no bulk-archive tool
463+
— per-file moves keep each move a visible accounting event,
464+
consistent with Rule 0.a).
465+
466+
`archive_task` currently targets flat `log/`. If further physical
467+
isolation of the Solo era is wanted, moving that batch of files from
468+
`log/` into the subfolder `log/solo-archive/` is a reasonable extra
469+
step — this last step is manual `mv` today; the protocol does not
470+
provide a dedicated tool.
471+
472+
**不要删除 / Do not delete**:Solo 历史是这个项目的历史记录,归档
473+
意味着"从视野里移走",不是"从硬盘上抹掉"。
474+
475+
**Do not delete**: Solo history is project history. Archiving means
476+
"move it out of daily view", not "erase it from disk".
477+
478+
#### 3. `fcop.json` 不需要记"切换时间戳" / No need to timestamp the switch
479+
480+
`fcop.json` 是**当前身份的快照**,不是事件日志。Solo→Team 的切换
481+
时间由 `log/solo-archive/` 里最新一份文件 + 新团队任务的最早一份
482+
文件自动框出来,不需要在 `fcop.json` 里额外记字段。
483+
484+
`fcop.json` is a **snapshot of current identity**, not an event log.
485+
The Solo→Team transition time is implicitly bracketed by the latest
486+
file in `log/solo-archive/` and the earliest file among the new team
487+
tasks. No extra fields needed in `fcop.json`.
488+
358489
## Core Directories / 核心目录
359490

360491
Two layouts — pick by whether the project has one team or several.
@@ -531,6 +662,7 @@ live in `shared/`. Use UPPERCASE prefixes:
531662
| `DECISION-` | Decision records (append-only) / 决策记录(只追加) |
532663
| `RETRO-` | Retrospectives (append-only) / 复盘记录(只追加) |
533664
| `SPEC-` | Specifications / 需求或规格说明 |
665+
| `TEAM-` | Team constitution (roles + operating rules, see "Solo → Team 迁移推荐做法") / 团队宪法(分工 + 运行规则,见"Solo → Team 迁移推荐做法") |
534666

535667
If you need a kind not listed above, coin a new UPPERCASE prefix and keep it memorable.
536668
`shared/` files MAY be updated in place (unlike tasks/reports, which are append-only).
@@ -706,6 +838,18 @@ Three things the protocol explicitly grants you:
706838
addresses for cross-scope messages.
707839
`fcop://` URI 路由(可选),跨作用域时用的完全限定地址。
708840

841+
- **v1.2** (2026-04-22) — **Solo → Team migration recipe** added under
842+
"Project Mode & Identity". Documents the "team constitution" pattern
843+
(`shared/TEAM-ROLES.md` + `shared/TEAM-OPERATING-RULES.md`) first
844+
observed in the wild when a GPT-5.4 agent self-organized the
845+
Solo→Team handoff, and formalizes per-file archival of Solo history
846+
into `log/solo-archive/` using the existing `archive_task()` tool.
847+
No new tools; protocol-commentary-only change.
848+
新增「Solo → Team 迁移推荐做法」一节:把野外观察到的"团队宪法"做法
849+
(`shared/TEAM-ROLES.md` + `shared/TEAM-OPERATING-RULES.md`)写进协议
850+
解释,并明确用现有 `archive_task()` 逐份把 Solo 历史归档到
851+
`log/solo-archive/`。不加新工具。
852+
709853
---
710854

711855
## Auto-Patrol / 自动巡检

0 commit comments

Comments
 (0)