From ee85feed9bd2c90d139163fe0521199508aaaebc Mon Sep 17 00:00:00 2001 From: cfdaily Date: Sat, 16 May 2026 13:44:25 +0800 Subject: [PATCH] auto-sync: 2026-05-16 13:44:25 --- docs/design/topic11-multi-project-proposal.md | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/docs/design/topic11-multi-project-proposal.md b/docs/design/topic11-multi-project-proposal.md index d2da9d2..91fb49e 100644 --- a/docs/design/topic11-multi-project-proposal.md +++ b/docs/design/topic11-multi-project-proposal.md @@ -569,6 +569,23 @@ Agent 不能跨项目读写黑板。这是安全边界——不同项目的数 当前不实现,预留设计空间。 +### 8.4 项目归档/删除时正在运行的任务(v2 新增) + +**归档(archive)**: +1. 检查是否有 working 状态的任务 +2. 有 → 将这些任务标记为 cancelled,等待 Agent 完成回调(超时兜底 5 分钟) +3. 无 → 立即停止该项目的 ProjectSlot 线程 +4. 将 `_registry.yaml` 中状态改为 `archived` + +**删除(delete)**: +1. 必须先 archive +2. 必须无 working 任务(归档时已处理) +3. `--confirm` 确认 +4. `rm -rf projects/{project_id}/` +5. 从 `_registry.yaml` 移除条目 + +**禁止直接删除 active 项目**——必须先归档。 + ## 9. 与其他课题的关系 | 课题 | 关系 | 说明 | @@ -592,13 +609,15 @@ Agent 不能跨项目读写黑板。这是安全边界——不同项目的数 | # | 任务 | 依赖 | |---|------|------| | 1 | 项目目录结构 + _registry.yaml + project.yaml Schema | 无 | -| 2 | ProjectManager(多连接池 + 配置加载 + 项目级 guardrails 覆盖) | 1 | -| 3 | CLI project create/list/default/archive/delete 命令 | 1 | -| 4 | CLI 所有操作增加 --project 参数 + 优先级解析 | 1, 2 | -| 5 | Daemon tick 遍历所有 active 项目 | 2 | -| 6 | L2 prompt_template 注入 project_context | 2, 4 | -| 7 | Daemon 逻辑健康自检(按项目追踪) | 5 | -| 8 | Dashboard 项目切换 + 多项目概览 | 课题9 | +| 2 | ActiveAgentCounter(线程安全计数器 + 全局/per-agent 双重限制) | 无 | +| 3 | ProjectSlot(独立线程 tick + SQLite 独立连接 + spawn 前检查计数器) | 1, 2 | +| 4 | Daemon 主循环(启动/监控/重启 ProjectSlot 线程) | 3 | +| 5 | CLI project create/list/default/archive/delete 命令 | 1 | +| 6 | CLI 所有操作增加 --project 参数 + 优先级解析 | 1, 3 | +| 7 | L2 prompt_template 注入 project_context + session_id 命名规则 | 3, 6 | +| 8 | Daemon 逻辑健康自检(按项目追踪 + 计数器超时兜底) | 4 | +| 9 | 项目归档/删除安全流程(working 任务处理) | 4, 5 | +| 10 | Dashboard 项目切换 + 多项目概览 | 课题9 | ---