---
id: FEAT-0012
type: feature
status: closed
stage: done
title: 增强 CLI 与 Server 的多工作区支持 (Enhance Workspace Support)
created_at: '2026-01-11T10:48:04.794675'
opened_at: '2026-01-11T10:48:04.794675'
updated_at: '2026-01-11T11:12:49.776854'
closed_at: '2026-01-11T11:12:49.776886'
parent: EPIC-0001
solution: implemented
dependencies: []
related: []
domains: []
tags:
- '#EPIC-0001'
- '#FEAT-0012'
- cli
- server
- workspace
uid: 1dc88c
---

## FEAT-0012: 增强 CLI 与 Server 的多工作区支持 (Enhance Workspace Support)

## 背景 (Context)

当前 Monoco 生态中存在 "Single Project" (单项目) 与 "Workspace" (多项目工作区) 两种层级结构。
经过代码调研 (`daemon/services.py` vs `features/issue/commands.py`)，发现 CLI 和 Server 对此的支持存在不一致:

1. **`monoco serve`**:
   - 已支持 `--root` 参数指定 Workspace 根目录。
   - 能够自动扫描一级子目录下的项目（依据 `monoco.yaml`, `.monoco/` 或 `Issues/`）。
   - 将目录名作为 `project_id`。
2. **`monoco issue`**:
   - `--root` 参数目前的实现是直接将其视为 `Issues/` 目录的物理路径 (`_resolve_issues_root` 直接返回 resolve 路径)。
   - 缺乏对 "Project Root" (包含 `Issues/` 的目录) 的智能识别。
   - 缺乏工作区感知能力（无法在 Workspace 根目录操作子项目的 Issue）。

## 目标 (Objective)

统一 `monoco` 工具链对工作区和项目的处理逻辑，提升多项目环境下的开发者体验。

## 验收标准 (Acceptance Criteria)

### 1. `monoco serve` 增强

- [x] 确保 `monoco serve` 在未指定 `--root` 时，默认将当前目录作为 Workspace Root 进行扫描。
- [x] 确保扫描逻辑能正确处理嵌套结构（如 `current_dir` 本身是一个 Project，同时包含子 Project 的情况）。

### 2. `monoco issue` 智能路径识别

- [x] 增强 `--root` 参数解析逻辑:
  - 优先检查 `<PATH>/Issues` 是否存在，若存在则自动定位。
  - 否则才回退到将 `<PATH>` 视为 Issues 目录。
  - 对用户更加宽容，允许 `monoco issue list --root ./MyProject` 而非必须 `monoco issue list --root ./MyProject/Issues`。

### 3. 工作区感知 (Workspace Awareness)

- [x] 当在 Workspace 根目录运行 `monoco issue` 时（该目录无 `Issues/` 但子目录有）:
  - 提示用户发现多个项目，并列出可用项目 ID。
  - 支持通过 `--project <ID>` 或 `-P <ID>` 参数指定操作的项目。
  - 或（MVP 阶段）仅报错并提示用户使用 `--root <PROJECT_PATH>`。

## 技术任务 (Technical Tasks)

- [x] **重构 `monoco/daemon/services.py`**:
  - [x] 复查 `ProjectManager.scan` 逻辑，确保对 CWD 的处理符合预期。
- [x] **重构 `monoco/features/issue/commands.py`**:
  - [x] 修改 `_resolve_issues_root` 函数，实现路径探测（智能路径解析）。
  - [x] 引入 `find_projects_in_workspace` 逻辑（可复用 `daemon` 中的逻辑，或抽取共享工具函数）。
- [x] **CLI UX 更新**:
  - [x] 更新 `monoco issue --help` 文档，说明 `--root` 的智能行为。

## Review Comments

- [x] Self-Review
