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
26 changes: 13 additions & 13 deletions .terrain/.meta/freshness.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,28 @@
"project": "cowork-forge",
"repo_path": ".",
"baseline": {
"git_head": "9aa2871fd20d9fdaf383b7ef8830307994572f53",
"git_head_at": "2026-07-15T03:20:27.772498+00:00",
"git_head": "3648988c24af4765ce097bfce94c36802afa799a",
"git_head_at": "2026-07-17T08:50:26.910002+00:00",
"dirty": false
},
"assets": {
"agent_pack": {
"path": "agent/repomix.md",
"synced_at": "2026-07-15T03:19:39.469840+00:00",
"baseline_git_head": "9aa2871fd20d9fdaf383b7ef8830307994572f53",
"synced_at": "2026-07-17T08:47:15.068260+00:00",
"baseline_git_head": "3648988c24af4765ce097bfce94c36802afa799a",
"stale": false,
"freshness_score": 100
},
"agent_context": {
"path": "agent/context.md",
"synced_at": "2026-07-15T03:20:27.383931+00:00",
"baseline_git_head": "9aa2871fd20d9fdaf383b7ef8830307994572f53",
"synced_at": "2026-07-17T08:50:26.623612+00:00",
"baseline_git_head": "3648988c24af4765ce097bfce94c36802afa799a",
"stale": false,
"freshness_score": 90
},
"human_docs": {
"path": "human/",
"synced_at": "2026-07-15T03:19:39.470836+00:00",
"synced_at": "2026-07-17T08:47:15.071298+00:00",
"stale": false,
"freshness_score": 100
}
Expand All @@ -39,10 +39,10 @@
"overall_stale": false,
"commits_since_baseline": 0,
"changed_files_count": 0,
"current_git_head": "9aa2871",
"current_git_head": "3648988",
"working_tree_dirty": false,
"is_git_repo": true,
"last_computed_at": "2026-07-15T03:20:27.772498+00:00",
"last_computed_at": "2026-07-17T08:50:26.910002+00:00",
"agent_pack_score": 100,
"agent_context_score": 90,
"human_docs_score": 100,
Expand All @@ -52,7 +52,7 @@
"id": "baseline_match",
"severity": "info",
"title": "与 baseline 提交一致",
"detail": "源码索引与 Agent 上下文均基于提交 9aa2871fd20d9fdaf383b7ef8830307994572f53 生成,相对 HEAD 无文件漂移。"
"detail": "源码索引与 Agent 上下文均基于提交 3648988c24af4765ce097bfce94c36802afa799a 生成,相对 HEAD 无文件漂移。"
},
{
"id": "context_lineage",
Expand All @@ -68,8 +68,8 @@
"detail": "综合分取三层最低值:源码索引 100、Agent 上下文 90、人类文档 100。"
}
],
"pack_baseline_short": "9aa2871",
"context_baseline_short": "9aa2871"
"pack_baseline_short": "3648988",
"context_baseline_short": "3648988"
},
"last_computed_at": "2026-07-15T03:20:27.772498+00:00"
"last_computed_at": "2026-07-17T08:50:26.910002+00:00"
}
2 changes: 1 addition & 1 deletion .terrain/.meta/sync.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"project": "cowork-forge",
"repo_path": ".",
"synced_at": "2026-07-15T03:19:39.470836+00:00",
"synced_at": "2026-07-17T08:47:15.071298+00:00",
"collectors": [
"git",
"repomix"
Expand Down
6 changes: 3 additions & 3 deletions .terrain/agent/context-meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
"project": "cowork-forge",
"repo_path": ".",
"output_file": "context.md",
"generated_at": "2026-07-15T03:20:27.383931+00:00",
"generated_at": "2026-07-17T08:50:26.623612+00:00",
"section_count": 6,
"char_count": 7514,
"baseline_git_head": "9aa2871fd20d9fdaf383b7ef8830307994572f53"
"char_count": 8068,
"baseline_git_head": "3648988c24af4765ce097bfce94c36802afa799a"
}
163 changes: 84 additions & 79 deletions .terrain/agent/context.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,115 +7,120 @@ source: .

## 项目概览

Cowork Forge 是 **AI 原生的多 Agent 软件开发平台**:内置 PM、架构师、项目经理、工程师等角色,经 **7 阶段流水线**(Idea→PRD→Design→Plan→Coding→Check→Delivery)将想法变为可交付软件。面向独立开发者(CLI 自动化)、团队(跨迭代记忆与继承)、探索型用户(GUI + HITL)。核心约束:**本地优先**(数据驻留用户机器)、**六边形架构**(`cowork-core` 纯域逻辑)、**Actor-Critic 自优化**(adk-rust `LoopAgent`)、**人在回路门**(关键阶段确认)、**工作区沙箱**(路径与命令校验)
Cowork Forge 是 **AI 原生的多 Agent 软件开发平台**:内置 PM、架构师、项目经理、工程师等 10+ 角色 Agent,通过 **7 阶段流水线**(Idea→PRD→Design→Plan→Coding→Check→Delivery)将自然语言想法转化为可交付软件。消费方包括独立开发者(CLI 自动化)、技术团队(标准化迭代与记忆继承)、以及偏好可视化监督的 GUI 用户

## 架构设计
核心约束:**本地优先**(数据驻留本机)、**人在回路(HITL)** 关键门控、**Actor-Critic** 自优化、工作区沙箱与路径校验、LLM 全局限流(30 req/min)。双入口(CLI/GUI)共享 `cowork-core` 域逻辑,配置驱动 Agent/Stage/Flow。

| 容器 | 职责 | 主要依赖 |
|------|------|----------|
| **cowork-core** | 域模型、流水线编排、Agent/工具、持久化、LLM 适配 | adk-rust、Tokio、serde |
| **cowork-cli** | CLI 入站适配器(命令解析、终端 HITL) | clap、dialoguer → `InteractiveBackend` |
| **cowork-gui** | 桌面 GUI:React 前端 + Tauri 后端 | Tauri invoke/emit → `InteractiveBackend` |
## 架构设计

**分层(core 内部)**
**六边形架构(端口-适配器)**:`cowork-core` 为纯域核心;`cowork-cli` 与 `cowork-gui` 为入站适配器;LLM、文件系统、Shell、外部 Agent 为出站适配器。

- **Domain**:`Project` / `Iteration` / `ProjectMemory` 聚合与值对象
- **Pipeline**:`Stage` trait + `StageExecutor` + `PipelineExecutor` 编排
- **Agents & Tools**:adk-rust `LlmAgent` / `LoopAgent` + 40+ `Tool` 实现
- **Interaction**:`InteractiveBackend` 端口(消息、流式、HITL 确认)
- **Persistence**:`ProjectStore` / `IterationStore` / `MemoryStore`(JSON)
- **Config**:JSON 驱动的 agents / stages / flows 注册表
| 容器/层 | 职责 | 主要路径 |
|---------|------|----------|
| **cowork-core** | 域模型、流水线编排、ADK Agent、工具、持久化 | `crates/cowork-core/src/` |
| **cowork-cli** | clap 命令入口、终端 HITL | `crates/cowork-cli/src/` |
| **cowork-gui 前端** | React 交互、状态、流式展示 | `crates/cowork-gui/src/` |
| **cowork-gui 后端** | Tauri 命令/事件桥接、进程管理 | `crates/cowork-gui/src-tauri/src/` |
| **配置层** | JSON 驱动的 Agent/Stage/Flow 定义 | `crates/cowork-core/src/config_definition/` |
| **交互端口** | `InteractiveBackend` trait 抽象 CLI/GUI | `crates/cowork-core/src/interaction/` |

**关键模式**:六边形(端口/适配器)、DDD 聚合、Actor-Critic(Actor=`IncludeContents::Default`,Critic=`None`+artifact 工具加载)、Repository、LLM 限流装饰器(并发=1,~30 req/min)
**依赖流向**:CLI/GUI → Pipeline Controller → StageExecutor → adk-rust(LoopAgent + LlmAgent)→ Tools → LLM/FS/Shell。GUI 采用 **invoke 请求 + emit 事件** 非对称通信

## 模块地图

| 模块 | 职责 | 主要路径 |
|------|------|----------|
| Domain | 项目/迭代/记忆聚合、继承模式 | `crates/cowork-core/src/domain/` |
| Pipeline | 7 阶段编排、阶段执行、工作区管理 | `crates/cowork-core/src/pipeline/` |
| StageExecutor | 连接 Pipeline 与 adk-rust,Actor-Critic 循环 | `crates/cowork-core/src/pipeline/stage_executor.rs` |
| Tools | 文件/制品/验证/控制/知识等 ADK 工具 | `crates/cowork-core/src/tools/` |
| Agents | PM、摘要、知识生成、外部编码 Agent 封装 | `crates/cowork-core/src/agents/` |
| Instructions | 各阶段 Agent 提示词库 | `crates/cowork-core/src/instructions/` |
| ConfigDefinition | Agent/Stage/Flow JSON 配置与注册 | `crates/cowork-core/src/config_definition/` |
| Interaction | `InteractiveBackend` trait 与 CLI 实现 | `crates/cowork-core/src/interaction/` |
| Persistence | JSON 存储:项目、迭代、记忆 | `crates/cowork-core/src/persistence/` |
| CLI | 命令入口:init/iter/import/config 等 | `crates/cowork-cli/src/` |
| GUI Frontend | React 面板、聊天、配置、预览 | `crates/cowork-gui/src/` |
| GUI Backend | Tauri 命令、事件流、进程/预览服务 | `crates/cowork-gui/src-tauri/src/` |
| **Domain** | Project/Iteration/Memory 聚合、继承模式、状态机 | `crates/cowork-core/src/domain/` |
| **Pipeline** | 7 阶段编排、Stage trait、StageExecutor | `crates/cowork-core/src/pipeline/` |
| **Tools** | 40+ ADK 工具(文件/工件/验证/控制/HITL) | `crates/cowork-core/src/tools/` |
| **Agents** | 外部编码 Agent、迭代助手、遗留分析器 | `crates/cowork-core/src/agents/` |
| **Instructions** | 各阶段 Actor/Critic 提示词库 | `crates/cowork-core/src/instructions/` |
| **Config Definition** | Agent/Stage/Flow 注册表与校验 | `crates/cowork-core/src/config_definition/` |
| **Persistence** | JSON 文件存储(项目/迭代/记忆) | `crates/cowork-core/src/persistence/` |
| **Interaction** | HITL 抽象(消息/确认/流式) | `crates/cowork-core/src/interaction/`、`cli.rs` |
| **ACP** | Agent Client Protocol 外部 Agent 集成 | `crates/cowork-core/src/acp/` |
| **Importer** | 遗留项目导入与分析 | `crates/cowork-core/src/importer/` |
| **Skills** | agentskills.io 标准技能管理 | `crates/cowork-core/src/skills/` |
| **GUI** | 桌面 UI、Runner、预览、配置面板 | `crates/cowork-gui/src/`、`src-tauri/` |

## 核心流程

### 1. Genesis 迭代(首次开发
### 1. 创世迭代(Genesis

1. 用户通过 CLI/GUI 创建项目并启动迭代(`cowork iter` 或 GUI Runner)
2. `PipelineExecutor` 按 flow 配置依次执行 7 阶段(`default.json` 或 `rapid-prototype.json`)
3. 每阶段 `StageExecutor` 构建 Actor-Critic `LoopAgent`,流式调用 LLM 并执行工具
4. 关键阶段触发 HITL:用户通过/编辑/反馈 → 可能 `execute_with_feedback` 重试
5. 制品写入 `.cowork-v2/iterations/{id}/artifacts/`,迭代完成后生成知识快照
1. 用户通过 CLI/GUI 创建项目并提交想法
2. Pipeline Controller 初始化 `PipelineContext`,IterationStore 创建 Draft 迭代
3. 按 Flow 配置顺序执行 7 阶段:StageExecutor 构建 adk-rust Agent(Actor-Critic LoopAgent)
4. 每阶段产出工件(markdown/代码)写入 `.cowork-v2/iterations/{id}/`
5. HITL 门(Idea/PRD/Design/Plan/Coding)经 `InteractiveBackend` 等待用户通过/编辑/反馈
6. 完成后更新迭代状态,Knowledge Gen 提取跨迭代记忆

### 2. Evolution 迭代(增量演进
### 2. 演进迭代(Evolution

1. 用户描述变更,系统分析关键词确定继承模式(None / Partial / Full)
2. 按变更范围选择起始阶段(Idea/PRD/Design/Plan)
3. 从前序迭代加载代码与/或制品,注入 `PipelineContext`
4. 执行剩余阶段,记忆系统跨迭代累积决策
1. 基于已完成迭代创建 Evolution 迭代,选择继承模式(None/Full/Partial
2. 变更范围分析决定工件/代码继承范围
3. 流水线从指定阶段继续,Actor 可见前序 Critic 反馈(`IncludeContents::Default`)
4. Critic 通过工具加载 artifact 审查(`IncludeContents::None`),调用 `exit_loop` 或 `provide_feedback` 控制循环

### 3. 遗留项目导入

1. `cowork import` 或 GUI Import 触发 `importer` 模块
2. `project_analyzer` 检测技术栈与结构,`artifact_generator` 反向生成文档
3. 注册为 Cowork 项目,后续可走 Evolution 流程
1. CLI/GUI 触发 import 命令
2. `legacy_project_analyzer` Agent 扫描代码库、检测技术栈
3. ArtifactGenerator 反向生成 PRD/Design 等文档
4. 注册为 Cowork 项目,纳入迭代管理体系

### 4. 编码阶段外部 Agent(可选
### 4. 外部编码 Agent(ACP

1. Coding 阶段可通过 ACP 协议调用外部编码 Agent(OpenCode、Claude CLI 等)
2. `acp/client.rs` 管理子进程通信;核心域通过 `external_coding_agent.rs` 集成
1. Coding 阶段可选启用 `ExternalCodingAgent`(配置 `coding_agent.enabled`)
2. 通过 ACP 协议调用外部 CLI Agent(OpenCode、Claude CLI、Gemini CLI 等)
3. `CoworkClient` 实现 ACP 服务端,约束工作区路径
4. 流式消息经 `AgentMessage` 通道回传 GUI/CLI

## 技术选型

- **语言/运行时**:Rust 2024 edition、Tokio 全特性异步
- **AI 编排**:adk-rust 1.0(`adk-core` / `adk-agent` / `adk-model` / `adk-tool` / `adk-runner` / `adk-session` / `adk-skill`
- **LLM**:OpenAI 兼容 API(`adk-model` openai feature),全局限流装饰器
- **CLI**:clap 4、dialoguer、console
- **GUI**:Tauri 2、React 18、Ant Design、Vite
- **持久化**:JSON + serde(项目元数据、迭代状态、记忆条目)
- **配置**:TOML 用户配置 + JSON 内置 Agent/Flow 定义
- **Skills**:agentskills.io 标准(`skills/manager.rs`)
- **集成**:MCP 远程工具、ACP 外部 Agent、Hook 系统(`integration/`)
- **安全**:`runtime_security.rs` 路径校验、命令白名单、工作区边界
- **语言/运行时**:Rust 2024 edition、Tokio 异步
- **AI 编排**:adk-rust 1.0(LoopAgent、LlmAgentBuilder、Tool trait、EventActions
- **LLM**:OpenAI 兼容 API(adk-model openai feature)、自定义 RateLimiter(信号量 + 2s 延迟)
- **外部 Agent**:agent-client-protocol 0.9(ACP)
- **CLI**:clap 4、dialoguer、colored
- **GUI**:Tauri 2、React 18、Ant Design、Vite、Zustand hooks
- **持久化**:JSON + serde 文件存储(无数据库)
- **配置**:TOML(`config.toml`)+ JSON 数据驱动 Agent/Flow
- **安全**:路径校验、命令白名单、工作区沙箱、`runtime_security.rs`
- **文档**:Litho docs(`litho.docs/`)、Terrain 知识资产(`.terrain/`)

## 系统边界

| 边界 | 交互方式 | 信任/约束 |
|------|----------|-----------|
| **LLM 提供商** | OpenAI 兼容 HTTP API | API Key 来自 config/env;30 req/min 限流 |
| **本地文件系统** | 读写项目工作区、`.cowork-v2/` 元数据 | `validate_path()` 防路径穿越 |
| **Shell/子进程** | 构建、测试、lint、开发服务器 | 命令白名单;项目目录内执行 |
| **MCP 服务器** | Tavily、DeepWiki 等远程工具 | 可选集成;经 adk 工具层调用 |
| **ACP 外部 Agent** | 子进程 stdio 协议 | Coding 阶段可选;用户配置启用 |
| **系统编辑器** | 外部编辑器打开制品 | HITL 编辑路径 |
| **用户配置目录** | `~/Library/Application Support/CoworkCreative/` 等 | 平台相关路径;不入库 |
| 边界 | 类型 | 说明 |
|------|------|------|
| **LLM Provider API** | 外部出站 | OpenAI 兼容端点;30 req/min 限流;API Key 来自 config/env |
| **本地文件系统** | 信任域内 | 项目工作区、`.cowork-v2/` 迭代数据、用户 config 目录 |
| **Shell/子进程** | 受限出站 | 构建/测试/开发服务器;命令清理与白名单 |
| **MCP 服务器** | 可选出站 | Tavily 搜索、DeepWiki 文档等第三方能力扩展 |
| **外部编码 Agent** | 可选出站 | ACP 协议;工作区路径强制校验 |
| **Tauri 系统 API** | 平台集成 | 托盘、文件对话框、进程管理、静态预览服务器 |
| **用户** | 入站 | CLI 命令或 GUI 交互;HITL 确认/编辑/反馈 |

**信任边界**:`cowork-core` 不直接依赖 UI;所有用户交互经 `InteractiveBackend`。文件工具禁止访问工作区外路径。

**数据布局**:项目根下 `.cowork-v2/iterations/{id}/` 存放 artifacts、session_history、workspace 代码
**配置路径**:macOS `~/Library/Application Support/CoworkCreative/config.toml`;GUI 配置 `com.cowork-forge.app/config/`

## 代码映射索引

| 概念 | 位置 | 备注 |
|------|------|------|
| 工作区入口 | `Cargo.toml` | 三 crate:core、cli、gui-tauri |
| 域聚合根 | `crates/cowork-core/src/domain/project.rs` | Project + IterationSummary |
| 迭代实体 | `crates/cowork-core/src/domain/iteration.rs` | 状态机、继承模式 |
| 记忆系统 | `crates/cowork-core/src/domain/memory.rs` | 三范围查询(项目/迭代/Smart) |
| Stage trait | `crates/cowork-core/src/pipeline/stages/mod.rs` | 各阶段 `execute()` |
| 流水线执行器 | `crates/cowork-core/src/pipeline/executor/mod.rs` | 阶段转换、上下文 |
| 默认 7 阶段流 | `crates/cowork-core/src/config_definition/default_configs/flows/default.json` | idea→…→delivery |
| 内置 Agent 配置 | `crates/cowork-core/src/config_definition/default_configs/agents/built-in/` | actor/critic JSON |
| InteractiveBackend | `crates/cowork-core/src/interaction/mod.rs` | CLI/GUI 统一端口 |
| GUI Tauri 适配 | `crates/cowork-gui/src-tauri/src/lib.rs` | emit agent_event/streaming |
| CLI 命令 | `crates/cowork-cli/src/commands/` | iter/init/import 等 |
| ACP 客户端 | `crates/cowork-core/src/acp/client.rs` | 外部编码 Agent |
| 遗留导入 | `crates/cowork-core/src/importer/` | 分析与制品生成 |
| 运行时检测 | `crates/cowork-core/src/runtime_analyzer.rs` | 技术栈/预览类型 |
| 安全边界 | `crates/cowork-core/src/runtime_security.rs` | 路径与命令校验 |
| 项目/迭代聚合 | `crates/cowork-core/src/domain/` | Project、Iteration、Memory、InheritanceMode |
| 流水线控制器 | `crates/cowork-core/src/pipeline/mod.rs` | PipelineContext、阶段转换 |
| 阶段执行器 | `crates/cowork-core/src/pipeline/stage_executor.rs` | 连接 Stage 与 adk-rust |
| 7 阶段实现 | `crates/cowork-core/src/pipeline/stages/` | idea/prd/design/plan/coding/check/delivery |
| 默认 Flow | `crates/cowork-core/src/config_definition/default_configs/flows/default.json` | 7 阶段顺序定义 |
| 内置 Agent 配置 | `crates/cowork-core/src/config_definition/default_configs/agents/built-in/` | Actor/Critic JSON |
| ADK 工具集 | `crates/cowork-core/src/tools/` | artifact/control/file/validation 等 |
| Actor-Critic 指令 | `crates/cowork-core/src/instructions/` | 各阶段 prompt 库 |
| HITL 交互端口 | `crates/cowork-core/src/interaction/cli.rs` | InteractiveBackend 实现 |
| 外部 Agent ACP | `crates/cowork-core/src/acp/client.rs` | CoworkClient、路径校验 |
| 外部编码封装 | `crates/cowork-core/src/agents/external_coding_agent.rs` | ACP 流式任务 |
| JSON 持久化 | `crates/cowork-core/src/persistence/` | ProjectStore、IterationStore、MemoryStore |
| CLI 命令 | `crates/cowork-cli/src/commands/` | init/iter/import/config 等 |
| GUI Tauri 命令 | `crates/cowork-gui/src-tauri/src/commands/` | runner/pm/preview/file 等 |
| GUI 前端组件 | `crates/cowork-gui/src/components/` | 项目/迭代/聊天/配置面板 |
| 运行时检测 | `crates/cowork-core/src/project_runtime.rs` | 技术栈/预览类型识别 |
2 changes: 1 addition & 1 deletion .terrain/agent/meta-inputs-manifest.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"collected_at": "2026-07-15T03:19:39.576303+00:00",
"collected_at": "2026-07-17T08:47:15.165773+00:00",
"meta_files": [],
"input_count": 2,
"sources": [
Expand Down
Loading
Loading