docs: update runtime data paths and project status to 2026-06
This commit is contained in:
parent
b76708de13
commit
b4080f3880
18
AGENTS.md
18
AGENTS.md
@ -37,28 +37,28 @@
|
||||
|
||||
## 1.5) 运行态数据目录与路径变量(2026-06 更新)
|
||||
|
||||
> 设计目标:运行态数据(对话、用户工作区、日志等)默认存放在用户主目录的 `~/.agents` 下,对齐 `~/.claude`、`~/.codex` 惯例,**不落在源码树内**。配置实现见 `config/paths.py`。
|
||||
> 设计目标:运行态数据(对话、用户工作区、日志等)默认存放在用户主目录的 `~/.agents/agents/` 下,对齐 `~/.claude`、`~/.codex` 惯例,**不落在源码树内**。配置实现见 `config/paths.py`。
|
||||
|
||||
### 1.5.1 默认位置与模式分流
|
||||
|
||||
运行态根目录按运行模式自动分流(由 `TERMINAL_SANDBOX_MODE` 决定):
|
||||
运行态数据根目录(`data_root`)默认为 `~/.agents/agents`,可通过 `AGENTS_DATA_ROOT` 整体搬迁。在该根目录下,按运行模式自动分流(由 `TERMINAL_SANDBOX_MODE` 决定):
|
||||
|
||||
- 宿主机模式(`TERMINAL_SANDBOX_MODE=host`)→ `~/.agents/host`
|
||||
- 其它模式(默认 docker / web)→ `~/.agents/web`
|
||||
- 宿主机模式(`TERMINAL_SANDBOX_MODE=host`)→ `~/.agents/agents/host`
|
||||
- 其它模式(默认 docker / web)→ `~/.agents/agents/web`
|
||||
|
||||
每个模式根下包含:`data/`(对话、用户库、记忆、sub_agents.json、sub_agent_tasks 等)、`users/`(web 多用户工作区)、`api/users/`(API 用户工作区)、`logs/`(日志)。
|
||||
数据根目录下还包含:`settings.json`(唯一配置文件)、`config/`(部署级配置,host/web 共享)。每个模式目录下包含:`data/`(对话、用户库、记忆、sub_agents.json、sub_agent_tasks 等)、`users/`(web 多用户工作区)、`api/users/`(API 用户工作区)、`logs/`(日志)。
|
||||
|
||||
### 1.5.2 路径解析优先级(从高到低)
|
||||
|
||||
1. **具体目录环境变量**:`DATA_DIR` / `LOGS_DIR` / `USER_SPACE_DIR` / `API_USER_SPACE_DIR`(单独覆盖某个目录,最高优先级)
|
||||
2. **模式根目录环境变量**:`AGENTS_HOST_HOME` 或 `AGENTS_WEB_HOME`(整体搬迁该模式下全部运行态数据)
|
||||
3. **兜底默认**:`~/.agents/<mode>`
|
||||
2. **数据根目录环境变量**:`AGENTS_DATA_ROOT`(整体搬迁运行态数据根目录,默认 `~/.agents/agents`)
|
||||
3. **兜底默认**:`~/.agents/agents/<mode>`
|
||||
|
||||
具体目录变量支持相对路径(相对仓库根目录展开)、绝对路径与 `~`。
|
||||
|
||||
> 注意:`config/*.json` 分两类:
|
||||
> - **程序能力**(`docker_risk_markers.json`、`skill_hints.json`):是程序行为的一部分,随版本演进,仍锚定源码树。`prompts/`、`agentskills/` 同理。
|
||||
> - **部署级配置**(`custom_models`、`host_workspaces`、`auto_approval`、`goal_review`、`forbidden_commands`、`host_sandbox_policy`):因部署/机器而异或含密钥,外置到 `~/.agents/<mode>/config/`(即 `DEPLOY_CONFIG_DIR`,可单独用该环境变量覆盖)。读取走 `config.resolve_deploy_config(name)`,回退链:部署目录 → 源码树 `.json` → 源码树 `.json.example`,因此开发环境不必先跑 setup 也能用源码树种子。含密钥/机器特定的 5 个(除 `forbidden_commands`)不纳入 git,仓库仅留 `.example`。
|
||||
> - **部署级配置**(`custom_models`、`host_workspaces`、`auto_approval`、`goal_review`、`forbidden_commands`、`host_sandbox_policy`):因部署/机器而异或含密钥,外置到 `~/.agents/agents/config/`(即 `DEPLOY_CONFIG_DIR`,可单独用该环境变量覆盖,host/web 共享)。读取走 `config.resolve_deploy_config(name)`,回退链:部署目录 → 源码树 `.json` → 源码树 `.json.example`,因此开发环境不必先跑 setup 也能用源码树种子。含密钥/机器特定的 5 个(除 `forbidden_commands`)不纳入 git,仓库仅留 `.example`。
|
||||
|
||||
### 1.5.3 Host / Web 双路径机制(2026-06 新增)
|
||||
|
||||
@ -234,7 +234,7 @@ AI 执行以下流程时,每一步都要向用户说明在做什么:
|
||||
## 7) 安全与仓库卫生
|
||||
|
||||
- 严禁提交真实密钥(`.env`、token、cookie、用户隐私)。
|
||||
- 运行态数据默认在 `~/.agents/<mode>/`(`data/`、`users/`、`logs/`、`api/`),不在源码树内;详见 §1.5。`.gitignore` 仍忽略源码树内的 `logs/`、`data/`、`users/`、`api/`、`project/` 等,以防通过具体变量指回源码树或历史遗留产生污染。分享前需脱敏。
|
||||
- 运行态数据默认在 `~/.agents/agents/<mode>/`(`data/`、`users/`、`logs/`、`api/`),不在源码树内;详见 §1.5。`.gitignore` 仍忽略源码树内的 `logs/`、`data/`、`users/`、`api/`、`project/` 等,以防通过具体变量指回源码树或历史遗留产生污染。分享前需脱敏。
|
||||
- **`_experiments/` 用途**:归档本地实验残留与历史文档(调试记录、旧变更日志、模型测试脚本、翻译资料、旧子智能体文档等)。该目录**不纳入 git**(已在 `.gitignore`)。需要保留但不属于当前主线、又不想直接删的零散文件,统一放这里,不要散落在根目录。
|
||||
- 不要把本地构建产物(如 `static/dist/`、`node_modules/`)纳入提交。
|
||||
|
||||
|
||||
36
CLAUDE.md
36
CLAUDE.md
@ -137,12 +137,12 @@ npm --prefix cli run build
|
||||
# 查看容器状态
|
||||
docker ps -a | grep agent-term
|
||||
|
||||
# 查看调试日志(运行态日志默认在 ~/.agents/<mode>/logs/)
|
||||
tail -f ~/.agents/host/logs/debug_stream.log # host 模式
|
||||
tail -f ~/.agents/web/logs/debug_stream.log # web/docker 模式
|
||||
# 查看调试日志(运行态日志默认在 ~/.agents/agents/<mode>/logs/)
|
||||
tail -f ~/.agents/agents/host/logs/debug_stream.log # host 模式
|
||||
tail -f ~/.agents/agents/web/logs/debug_stream.log # web/docker 模式
|
||||
|
||||
# 查看容器统计
|
||||
tail -f ~/.agents/web/logs/container_stats.log
|
||||
tail -f ~/.agents/agents/web/logs/container_stats.log
|
||||
```
|
||||
|
||||
## Configuration
|
||||
@ -168,12 +168,12 @@ tail -f ~/.agents/web/logs/container_stats.log
|
||||
|
||||
**数据目录与路径变量** (`config/paths.py`,2026-06 更新):
|
||||
|
||||
运行态数据默认存放在 `~/.agents/<mode>`(对齐 `~/.claude`、`~/.codex`),**不落在源码树**。模式由 `TERMINAL_SANDBOX_MODE` 决定:`host` → `~/.agents/host`,其它(默认 docker/web)→ `~/.agents/web`。每个模式根下含 `data/`(对话、用户库、记忆、sub_agents.json、sub_agent_tasks)、`users/`、`api/users/`、`logs/`。
|
||||
运行态数据默认存放在 `~/.agents/agents/<mode>`(对齐 `~/.claude`、`~/.codex`),**不落在源码树**。数据根目录(`data_root`)默认为 `~/.agents/agents`,可通过 `AGENTS_DATA_ROOT` 整体搬迁;模式由 `TERMINAL_SANDBOX_MODE` 决定:`host` → `~/.agents/agents/host`,其它(默认 docker/web)→ `~/.agents/agents/web`。数据根目录下还包含 `settings.json`(唯一配置文件)和 `config/`(部署级配置,host/web 共享)。每个模式目录下含 `data/`(对话、用户库、记忆、sub_agents.json、sub_agent_tasks)、`users/`、`api/users/`、`logs/`。
|
||||
|
||||
路径解析优先级(高→低):
|
||||
1. 具体目录变量 `DATA_DIR` / `LOGS_DIR` / `USER_SPACE_DIR` / `API_USER_SPACE_DIR`(单独覆盖某目录)
|
||||
2. 模式根变量 `AGENTS_HOST_HOME` / `AGENTS_WEB_HOME`(整体搬迁该模式数据)
|
||||
3. 兜底 `~/.agents/<mode>`
|
||||
2. 数据根目录变量 `AGENTS_DATA_ROOT`(整体搬迁运行态数据根目录,默认 `~/.agents/agents`)
|
||||
3. 兜底 `~/.agents/agents/<mode>`
|
||||
|
||||
**Host / Web 双路径机制(2026-06)**:
|
||||
- `paths.py` 新增 `IS_HOST_MODE`、`WEB_DATA_DIR`、`WEB_USER_SPACE_DIR` 三个固定变量
|
||||
@ -181,14 +181,14 @@ tail -f ~/.agents/web/logs/container_stats.log
|
||||
- 已有 web 工作区直接复用(保持旧数据可访问),新工作区写入 host/
|
||||
- web 模式:仅读取 web/ 数据,无变化
|
||||
|
||||
> `config/*.json` 分两类:**程序能力**(`docker_risk_markers.json`、`skill_hints.json`)与 `prompts/`、`agentskills/` 一样锚定源码树;**部署级配置**(`custom_models`、`host_workspaces`、`auto_approval`、`goal_review`、`forbidden_commands`、`host_sandbox_policy`)外置到 `~/.agents/<mode>/config/`(`DEPLOY_CONFIG_DIR`),读取走 `config.resolve_deploy_config(name)`,回退链:部署目录 → 源码树 `.json` → 源码树 `.json.example`。含密钥/机器特定的 5 个不进 git,仓库仅留 `.example`。
|
||||
> `config/*.json` 分两类:**程序能力**(`docker_risk_markers.json`、`skill_hints.json`)与 `prompts/`、`agentskills/` 一样锚定源码树;**部署级配置**(`custom_models`、`host_workspaces`、`auto_approval`、`goal_review`、`forbidden_commands`、`host_sandbox_policy`)外置到 `~/.agents/agents/config/`(`DEPLOY_CONFIG_DIR`,host/web 共享),读取走 `config.resolve_deploy_config(name)`,回退链:部署目录 → 源码树 `.json` → 源码树 `.json.example`。含密钥/机器特定的 5 个不进 git,仓库仅留 `.example`。
|
||||
|
||||
**日志策略**:
|
||||
- API 请求体 dump 默认**关闭**,`AGENT_API_DUMP_ENABLED=1` 开启。
|
||||
- 混合轮转(`utils/log_rotation.py`):追加型单文件按大小轮转(默认 20MB×3 份),dump 目录按份保留(默认 30 个)。阈值变量:`AGENT_LOG_ROTATE_MAX_BYTES` / `AGENT_LOG_ROTATE_BACKUPS` / `AGENT_DUMP_KEEP`。
|
||||
|
||||
**数据迁移**:
|
||||
- `scripts/migrate_runtime_data.py`:源码树 → `~/.agents/<mode>`,复制+备份+可回滚+幂等,`logs/` 丢弃不迁。脚本复用 config 路径解析(模式由 `.env` 决定),执行前先 `--dry-run` 确认目标。
|
||||
- `scripts/migrate_runtime_data.py`:源码树 → `~/.agents/agents/<mode>`,复制+备份+可回滚+幂等,`logs/` 丢弃不迁。脚本复用 config 路径解析(模式由 `.env` 决定),执行前先 `--dry-run` 确认目标。
|
||||
|
||||
## Important Implementation Details
|
||||
|
||||
@ -346,14 +346,20 @@ agents/
|
||||
└── _experiments/ # 本地实验残留与历史文档归档(gitignored,不进仓库)
|
||||
|
||||
运行态数据(不在源码树):
|
||||
~/.agents/<mode>/ # mode = host 或 web,由 TERMINAL_SANDBOX_MODE 决定
|
||||
├── data/ # 对话、用户库、记忆、sub_agent_tasks(运行态)
|
||||
├── users/ # web 多用户工作区
|
||||
├── api/users/ # API 用户工作区
|
||||
└── logs/ # 日志文件
|
||||
~/.agents/agents/ # 数据根目录(可通过 AGENTS_DATA_ROOT 覆盖)
|
||||
├── settings.json # 唯一配置文件
|
||||
├── config/ # 部署级配置(host/web 共享)
|
||||
├── host/ # mode = host,由 TERMINAL_SANDBOX_MODE 决定
|
||||
│ ├── data/ # 对话、用户库、记忆、sub_agent_tasks(运行态)
|
||||
│ └── logs/ # 日志文件
|
||||
└── web/ # mode = web/docker
|
||||
├── data/ # 对话、用户库、记忆、sub_agent_tasks(运行态)
|
||||
├── users/ # web 多用户工作区
|
||||
├── api/users/ # API 用户工作区
|
||||
└── logs/ # 日志文件
|
||||
```
|
||||
|
||||
> 历史说明:`data/`、`users/`、`logs/`、`project/` 等过去曾在源码树内,现已默认迁至 `~/.agents/<mode>/`。详见 Configuration 节「数据目录与路径变量」。
|
||||
> 历史说明:`data/`、`users/`、`logs/`、`project/` 等过去曾在源码树内,现已默认迁至 `~/.agents/agents/<mode>/`。详见 Configuration 节「数据目录与路径变量」。
|
||||
|
||||
## Development Tips
|
||||
|
||||
|
||||
237
README.md
237
README.md
@ -2,12 +2,13 @@
|
||||
|
||||
一个功能完整的 AI 智能体系统,支持多模态交互、子智能体协作、实时终端操作和丰富的工具集成。
|
||||
|
||||
## 当前状态(2026-05)
|
||||
## 当前状态(2026-06)
|
||||
|
||||
- Web 端仍然是主线入口,基于 Flask + Vue 3。
|
||||
- Web 端仍然是主线入口,基于 Flask + Vue 3;聊天/状态/任务接口已拆分为 `server/chat/`、`server/status/`、`server/tasks/` 子包。
|
||||
- 新 CLI 端已开始重写,位于 `cli/`,技术栈为 React 19 + Ink 6 + TypeScript。
|
||||
- 当前 CLI 不是独立后端;它会直接连接本地 `8091` Web API,并复用现有会话、任务、权限、工作区等接口。
|
||||
- CLI 已实现“启动即连接后端并新建会话”的流程,但仍处于持续打磨阶段,输入法、光标、时间线裁剪等终端细节仍在迭代。
|
||||
- 运行态数据(对话、用户库、日志等)默认存放在用户主目录的 `~/.agents/agents/<mode>/` 下,不再落在源码树内;源码树内的 `data/`、`logs/`、`users/` 等仅作为 `.gitignore` 防污染保留。
|
||||
|
||||
## CLI 快速开始
|
||||
|
||||
@ -31,6 +32,12 @@ npm run cli
|
||||
npm --prefix cli run dev
|
||||
```
|
||||
|
||||
### 类型检查
|
||||
|
||||
```bash
|
||||
npm --prefix cli run typecheck
|
||||
```
|
||||
|
||||
### 在目标目录启动 CLI
|
||||
|
||||
```bash
|
||||
@ -85,17 +92,18 @@ python3 -m server.app --path <当前目录> --port 8091 --thinking-mode
|
||||
|
||||
### 🤖 子智能体系统
|
||||
|
||||
支持创建独立的子智能体处理复杂任务:
|
||||
支持创建子智能体处理复杂任务:
|
||||
|
||||
- **并行执行**: 最多同时运行多个子智能体
|
||||
- **独立上下文**: 每个子智能体拥有独立的工作空间和对话历史
|
||||
- **任务隔离**: 子智能体在独立进程中运行,互不干扰
|
||||
- **状态追踪**: 实时监控子智能体的执行状态和进度
|
||||
- **后台运行**: 支持后台模式,主智能体可继续处理其他任务
|
||||
- **实现方式**: 当前子智能体在主进程内以 `asyncio.Task` 运行,工具调用复用主进程链路;旧版 Node.js 子进程实现保留在 `easyagent/` 但已不再使用
|
||||
|
||||
工具接口:
|
||||
- `create_sub_agent`: 创建并启动子智能体
|
||||
- `close_sub_agent`: 终止运行中的子智能体
|
||||
- `terminate_sub_agent`: 强制终止运行中的子智能体
|
||||
|
||||
### 🛠️ 丰富的工具集
|
||||
|
||||
@ -305,35 +313,45 @@ TERMINAL_SANDBOX_MOUNT_PATH=/workspace
|
||||
|
||||
```
|
||||
agents/
|
||||
├── main.py # 程序入口
|
||||
├── core/ # 核心模块
|
||||
│ ├── main_terminal.py # 主终端(CLI模式)
|
||||
│ ├── web_terminal.py # Web终端
|
||||
│ ├── tool_config.py # 工具配置
|
||||
│ └── ...
|
||||
├── server/ # Web服务器
|
||||
│ ├── app.py # Flask应用
|
||||
│ ├── chat_flow_*.py # 对话流程处理
|
||||
├── main.py # 统一启动入口(当前默认走 Web 模式 + thinking_mode=True)
|
||||
├── server/ # Flask 业务主线
|
||||
│ ├── app.py # 推荐的 Web 服务入口(封装并转发到 app_legacy.py)
|
||||
│ ├── app_legacy.py # 原有 Flask 应用主体
|
||||
│ ├── chat/ # 聊天相关接口子包(approval/files/misc/permission/settings/terminal)
|
||||
│ ├── status/ # 状态相关接口子包(app/base/docker/file_open/git/host_workspace)
|
||||
│ ├── tasks/ # 任务相关接口子包(api/helpers/media/models/skills)
|
||||
│ ├── conversation.py # 对话管理
|
||||
│ ├── socket_handlers.py # Socket.IO 连接与兼容事件处理(聊天主链路已迁移到 REST 任务轮询)
|
||||
│ └── ...
|
||||
├── modules/ # 功能模块
|
||||
│ ├── file_manager.py # 文件管理
|
||||
│ ├── terminal_manager.py # 终端管理
|
||||
│ ├── sub_agent_manager.py# 子智能体管理
|
||||
│ └── socket_handlers.py # Socket.IO 兼容通道(聊天主链路已迁移到 REST 任务轮询)
|
||||
├── core/ # 终端与工具编排
|
||||
│ ├── main_terminal.py # 主终端(CLI模式)
|
||||
│ ├── web_terminal.py # Web 终端
|
||||
│ ├── main_terminal_parts/# 终端功能拆分(context/、tools_definition/ 等)
|
||||
│ └── tool_config.py # 工具配置
|
||||
├── modules/ # 可复用能力模块
|
||||
│ ├── file_manager/ # 文件管理(已拆分为子包)
|
||||
│ ├── persistent_terminal/# 持久化终端(已拆分为子包)
|
||||
│ ├── terminal_ops/ # 终端操作(已拆分为子包)
|
||||
│ ├── sub_agent/ # 子智能体执行逻辑(creation/manager/prompts/state/stats/task/toolkit/tools)
|
||||
│ ├── mcp_client_manager/ # MCP 客户端管理(已拆分为子包)
|
||||
│ ├── memory_manager.py # 记忆管理
|
||||
│ ├── search_engine.py # 搜索引擎
|
||||
│ └── ...
|
||||
├── utils/ # 工具函数
|
||||
│ ├── api_client.py # API客户端
|
||||
│ ├── context_manager.py # 上下文管理
|
||||
│ ├── conversation_manager.py # 对话持久化
|
||||
│ ├── api_client/ # API 客户端(已拆分为子包)
|
||||
│ ├── tool_result_formatter/# 工具结果格式化(已拆分为子包)
|
||||
│ ├── context_manager/ # 上下文管理(已拆分为子包)
|
||||
│ ├── conversation_manager/# 对话持久化(已拆分为子包)
|
||||
│ ├── log_rotation.py # 日志轮转
|
||||
│ └── ...
|
||||
└── config/ # 配置文件
|
||||
├── __init__.py # 主配置
|
||||
├── model_profiles.py # 模型配置
|
||||
├── limits.py # 限制配置
|
||||
└── ...
|
||||
├── config/ # 配置拆分
|
||||
│ ├── __init__.py # 主配置(聚合并加载 .env)
|
||||
│ ├── paths.py # 路径解析与运行态目录
|
||||
│ ├── api.py # API 配置
|
||||
│ ├── limits.py # 限制配置
|
||||
│ ├── terminal.py # 终端配置
|
||||
│ └── ...
|
||||
├── easyagent/ # 旧版 Node.js 子智能体实现,暂时保留但已不再使用
|
||||
└── _experiments/ # 本地实验残留与历史文档归档(不纳入 git)
|
||||
```
|
||||
|
||||
### 前端架构
|
||||
@ -377,7 +395,25 @@ static/src/
|
||||
|
||||
### Web 界面
|
||||
|
||||
启动后访问 `http://localhost:8091`(默认端口)
|
||||
安装后端依赖:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
启动 Web 服务:
|
||||
|
||||
```bash
|
||||
python -m server.app
|
||||
```
|
||||
|
||||
或带参数启动:
|
||||
|
||||
```bash
|
||||
python -m server.app --path ./project --port 8091 --debug --thinking-mode
|
||||
```
|
||||
|
||||
启动后访问 `http://localhost:8091`(默认端口 8091)
|
||||
|
||||
#### 基本操作
|
||||
|
||||
@ -452,7 +488,7 @@ static/src/
|
||||
主要配置项(通过环境变量或 `.env` 文件):
|
||||
|
||||
### API 配置
|
||||
- `config/custom_models.json`: 动态模型注册文件
|
||||
- `config/custom_models.json`: 动态模型注册文件(生产环境建议放到 `~/.agents/agents/config/custom_models.json`,host/web 共享)
|
||||
- `AGENT_DEFAULT_MODEL`: 可选,指定默认模型 key;未设置时使用第一个可见动态模型
|
||||
- 模型配置中的 `url` / `apikey` 支持 `${ENV_NAME}`、`env:ENV_NAME`、`$ENV_NAME` 等环境变量引用
|
||||
|
||||
@ -460,12 +496,26 @@ static/src/
|
||||
- `WEB_SERVER_PORT`: Web 服务器端口(默认 8091)
|
||||
- `DEFAULT_PROJECT_PATH`: 默认项目路径
|
||||
|
||||
### 运行态路径配置
|
||||
- `DATA_DIR`: 数据目录(对话、记忆、子智能体等)
|
||||
- `LOGS_DIR`: 日志目录
|
||||
- `USER_SPACE_DIR`: Web 用户工作区目录
|
||||
- `API_USER_SPACE_DIR`: API 用户工作区目录
|
||||
- `AGENTS_DATA_ROOT`: 运行态数据根目录(默认 `~/.agents/agents`,host/web 两个模式共享该根)
|
||||
- `DEPLOY_CONFIG_DIR`: 部署级配置目录(默认 `<AGENTS_DATA_ROOT>/config/`,host/web 共享)
|
||||
|
||||
### 限制配置
|
||||
- `MAX_ITERATIONS_PER_TASK`: 单任务最大迭代次数
|
||||
- `MAX_TOTAL_TOOL_CALLS`: 总工具调用次数限制
|
||||
- `MAX_UPLOAD_SIZE`: 最大上传文件大小
|
||||
- `PROJECT_MAX_STORAGE_MB`: 项目存储限制
|
||||
|
||||
### 日志策略
|
||||
- `AGENT_API_DUMP_ENABLED`: API 请求体落盘开关(`1/true/yes/on` 开启)
|
||||
- `AGENT_LOG_ROTATE_MAX_BYTES`: 单日志文件大小阈值(默认 20MB)
|
||||
- `AGENT_LOG_ROTATE_BACKUPS`: 日志轮转保留份数(默认 3)
|
||||
- `AGENT_DUMP_KEEP`: 按请求落盘的 dump 文件保留数量(默认 30)
|
||||
|
||||
### 运行环境配置
|
||||
|
||||
**宿主机模式**:
|
||||
@ -484,34 +534,84 @@ static/src/
|
||||
|
||||
## 数据存储
|
||||
|
||||
运行态数据默认存放在用户主目录的 `~/.agents/agents/<mode>/` 下(按 `TERMINAL_SANDBOX_MODE` 自动分流):
|
||||
|
||||
- **宿主机模式**(`TERMINAL_SANDBOX_MODE=host`)→ `~/.agents/agents/host`
|
||||
- **其它模式**(默认 docker / web)→ `~/.agents/agents/web`
|
||||
|
||||
### 目录结构
|
||||
|
||||
```
|
||||
data/ # 数据目录
|
||||
├── conversations/ # 对话历史
|
||||
│ └── <conversation_id>.json
|
||||
├── memory/ # 记忆文件
|
||||
│ ├── main_memory.md
|
||||
│ └── task_memory.md
|
||||
└── personalization.json # 个性化配置
|
||||
|
||||
logs/ # 日志目录
|
||||
├── tasks/ # 任务日志
|
||||
├── errors/ # 错误日志
|
||||
└── *.log
|
||||
|
||||
sub_agent/ # 子智能体数据
|
||||
└── tasks/ # 任务目录
|
||||
└── <task_id>/
|
||||
├── task.txt
|
||||
├── output.json
|
||||
└── progress.jsonl
|
||||
|
||||
users/ # 用户数据
|
||||
└── <username>/
|
||||
~/.agents/agents/ # 数据根目录(可通过 AGENTS_DATA_ROOT 覆盖)
|
||||
├── settings.json # 唯一配置文件
|
||||
├── config/ # 部署级配置(custom_models/host_workspaces/auto_approval 等,host/web 共享)
|
||||
├── host/ # 宿主机模式运行态
|
||||
│ ├── data/ # 数据目录
|
||||
│ │ ├── conversations/ # 对话历史
|
||||
│ │ │ └── <conversation_id>.json
|
||||
│ │ ├── memory/ # 记忆文件
|
||||
│ │ │ ├── main_memory.md
|
||||
│ │ │ └── task_memory.md
|
||||
│ │ ├── personalization.json
|
||||
│ │ ├── sub_agents.json # 子智能体注册表
|
||||
│ │ └── sub_agent_tasks/ # 子智能体任务数据
|
||||
│ │ └── <task_id>/
|
||||
│ │ ├── task.txt
|
||||
│ │ ├── output.json
|
||||
│ │ └── progress.jsonl
|
||||
│ └── logs/ # 日志目录
|
||||
│ ├── tasks/
|
||||
│ ├── errors/
|
||||
│ ├── approval_agent/
|
||||
│ └── *.log
|
||||
└── web/ # web/docker 模式运行态
|
||||
├── data/
|
||||
├── project/
|
||||
└── ...
|
||||
├── users/ # Web 多用户工作区
|
||||
│ └── <username>/
|
||||
│ ├── data/
|
||||
│ ├── project/
|
||||
│ └── ...
|
||||
├── api/users/ # API 用户工作区
|
||||
└── logs/
|
||||
```
|
||||
|
||||
### 路径解析优先级(从高到低)
|
||||
|
||||
1. **具体目录环境变量**:`DATA_DIR` / `LOGS_DIR` / `USER_SPACE_DIR` / `API_USER_SPACE_DIR`(单独覆盖某个目录)
|
||||
2. **数据根目录环境变量**:`AGENTS_DATA_ROOT`(整体搬迁运行态数据根目录,默认 `~/.agents/agents`)
|
||||
3. **兜底默认**:`~/.agents/agents/<mode>`
|
||||
|
||||
### Host / Web 双路径机制
|
||||
|
||||
在宿主机模式下,系统同时可读 web 模式数据:
|
||||
|
||||
- `WEB_DATA_DIR` 固定指向 `<data_root>/web/data`
|
||||
- `WEB_USER_SPACE_DIR` 固定指向 `<data_root>/web/users`
|
||||
- 用户列表合并 `host/data/users.json` + `web/data/users.json`
|
||||
- 写操作(创建/删除/重命名)始终走 host 路径
|
||||
|
||||
> 源码树内的 `data/`、`logs/`、`users/`、`api/`、`project/` 等目录已被 `.gitignore` 忽略,仅在通过环境变量显式指回源码树或历史遗留时才会出现,不参与默认数据存放。
|
||||
|
||||
## 测试现状
|
||||
|
||||
当前仓库内可见的自动化冒烟测试:
|
||||
|
||||
- `test/test_server_refactor_smoke.py`(基于 `unittest`)
|
||||
- 运行方式:`python -m unittest test.test_server_refactor_smoke`
|
||||
- `test/test_system_message.py` 依赖外部 `MOONSHOT_API_KEY` 与网络,不属于离线稳定 CI 用例。
|
||||
|
||||
CLI 最小可复现验证:
|
||||
|
||||
```bash
|
||||
npm --prefix cli run typecheck
|
||||
npm --prefix cli run build
|
||||
```
|
||||
|
||||
若改动 `server/chat/`、`server/status/`、`server/tasks/` 等后端接口适配,建议补充:
|
||||
|
||||
```bash
|
||||
python3 -m py_compile server/chat/*.py server/status/*.py server/tasks/*.py
|
||||
python -m unittest test.test_server_refactor_smoke
|
||||
```
|
||||
|
||||
## 扩展开发
|
||||
@ -525,9 +625,9 @@ users/ # 用户数据
|
||||
|
||||
### 添加新模型
|
||||
|
||||
1. 在 `config/model_profiles.py` 添加模型配置
|
||||
2. 在 `utils/api_client.py` 实现 API 调用
|
||||
3. 配置环境变量
|
||||
1. 在 `config/custom_models.json`(生产环境建议放到 `~/.agents/agents/config/custom_models.json`)注册模型配置
|
||||
2. 在 `utils/api_client/` 中实现或复用 API 调用逻辑
|
||||
3. 通过环境变量或 `.env` 注入密钥等敏感信息
|
||||
|
||||
### 创建技能包
|
||||
|
||||
@ -556,22 +656,25 @@ users/ # 用户数据
|
||||
|
||||
### 日志位置
|
||||
|
||||
- 主日志: `logs/main.log`
|
||||
- 错误日志: `logs/errors/`
|
||||
- 任务日志: `logs/tasks/`
|
||||
- Web 服务器: `web_server.log`
|
||||
运行态日志默认位于 `~/.agents/agents/<mode>/logs/`:
|
||||
|
||||
- 主日志: `~/.agents/agents/<mode>/logs/main.log`
|
||||
- 错误日志: `~/.agents/agents/<mode>/logs/errors/`
|
||||
- 任务日志: `~/.agents/agents/<mode>/logs/tasks/`
|
||||
- Web 服务器: `~/.agents/agents/<mode>/logs/web_server.log`
|
||||
- 自动审批智能体调试记录: `~/.agents/agents/<mode>/logs/approval_agent/`
|
||||
|
||||
## 版本信息
|
||||
|
||||
当前版本: 4.1.0
|
||||
|
||||
主要更新:
|
||||
- 完整的对话持久化系统
|
||||
- 子智能体并行执行
|
||||
- 多模型支持
|
||||
- 容器沙箱隔离
|
||||
- 个性化配置
|
||||
- 监控仪表板
|
||||
主要更新(2026-06):
|
||||
- 后端接口拆分为 `server/chat/`、`server/status/`、`server/tasks/` 子包
|
||||
- 运行态数据默认迁移到 `~/.agents/agents/<mode>/`,支持 host/web 双路径读取
|
||||
- 子智能体改为主进程内 `asyncio.Task` 实现,工具调用复用主进程链路
|
||||
- 新增宿主机权限模式(readonly/approval/auto_approval/unrestricted)与执行环境(sandbox/direct)双层控制
|
||||
- 新增日志轮转、API dump 可控、部署级配置外置等运维能力
|
||||
- 完整的对话持久化系统、多模型支持、容器沙箱隔离、个性化配置、监控仪表板
|
||||
|
||||
---
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user