diff --git a/Dockerfile b/Dockerfile index 4bb1945b..a01ccb61 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,6 +22,7 @@ # --build-arg PIP_TRUSTED_HOST=mirrors.aliyun.com \ # --build-arg NPM_REGISTRY=https://registry.npmmirror.com \ # --build-arg APT_MIRROR=mirrors.aliyun.com \ +# --build-arg NODE_MAX_OLD_SPACE_SIZE=1024 \ # -t octop:latest . # # 或使用 Compose: @@ -34,6 +35,10 @@ FROM node:20-slim AS frontend-builder ARG NPM_REGISTRY= +# Node heap ceiling for the vite build. Lower this (e.g. 1024) on low-memory +# build hosts (< 4G RAM) to avoid OOM kills — the value only caps the max, +# it is not pre-allocated. +ARG NODE_MAX_OLD_SPACE_SIZE=1536 WORKDIR /build/dashboard COPY dashboard/package.json dashboard/package-lock.json ./ @@ -46,7 +51,7 @@ COPY dashboard/ ./ RUN mkdir -p ../src/octop/dashboard # 镜像构建跳过完整 tsc;生产打包由 vite/esbuild 完成 -RUN NODE_ENV=production NODE_OPTIONS="--max-old-space-size=2048" npx vite build +RUN NODE_ENV=production NODE_OPTIONS="--max-old-space-size=${NODE_MAX_OLD_SPACE_SIZE}" npx vite build # --------------------------------------------------------------------------- diff --git a/README.md b/README.md index d84d9555..9d35ecc4 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ Octop is a self-hosted AI assistant platform for households and small teams. It Octop is built on the Harness stack — a set of focused runtimes that Octop composes into one process: -- **harness-agent** — LangGraph-based agent runtime: model routing, tools, skills, and conversation checkpointing. +- **harness-agent** — Agent runtime: model routing, tools, skills, and conversation checkpointing. - **harness-gateway** — multi-platform IM channel bridge that normalizes incoming messages into a single processing pipeline. - **harness-memory** — hierarchical recall with full-text search, so an agent's memory travels with its workspace. - **harness-browser** — CDP-based browser automation with persistent profiles for web tasks. @@ -364,7 +364,7 @@ OctopServer ├─ UserManager │ └─ HarnessAgentManager (per user) │ └─ AgentRuntime (per agent) - │ ├─ HarnessAgent LangGraph runtime (harness-agent) + │ ├─ HarnessAgent Agent runtime (harness-agent) │ ├─ HarnessProcessor IM / UI / cron entry point │ ├─ ChannelManager IM connections (harness-gateway) │ └─ CronManager APScheduler diff --git a/README_CN.md b/README_CN.md index 3cb057bc..d3d9e528 100644 --- a/README_CN.md +++ b/README_CN.md @@ -206,10 +206,10 @@ octop service start ```bash # 构建并启动 -docker compose -f deploy/docker-compose.yml up -d +docker compose -f docker/docker-compose.yml up -d # 或手动构建 -bash deploy/docker_build.sh +bash docker/docker_build.sh docker run -d \ -p 8088:8088 \ -v octop-data:/data/.octop \ @@ -263,7 +263,7 @@ docker run -d \ | 本地脚本 | macOS / Linux | `bash scripts/install.sh` | | 本地脚本 | Windows | `scripts\install.bat` 或 `install.ps1` | | PyPI | 全平台 | `pip install octop` 或 `pip install "octop[browser]"` | -| Docker | 全平台 | `deploy/docker-compose.yml` | +| Docker | 全平台 | `docker/docker-compose.yml` | 所有安装脚本均在 `~/.octop/venv` 创建隔离环境,并通过 `~/.octop/bin/octop` 包装 CLI,不会影响系统 Python。 @@ -370,7 +370,7 @@ OctopServer ├─ UserManager │ └─ HarnessAgentManager(按用户) │ └─ AgentRuntime(按 Agent) - │ ├─ HarnessAgent LangGraph 运行时(harness-agent) + │ ├─ HarnessAgent Agent 运行时(harness-agent) │ ├─ HarnessProcessor IM / UI / 定时任务入口 │ ├─ ChannelManager IM 连接(harness-gateway) │ └─ CronManager APScheduler @@ -394,7 +394,7 @@ src/octop/ dashboard/ 前端源码(Vite)— 在此编辑,运行 make build-frontend -deploy/ Docker Compose、入口脚本、构建与部署脚本 +docker/ Docker Compose、入口脚本、构建与部署脚本 tests/ unit/ + integration/ ``` diff --git a/dashboard/public/octop-mascot-peek.webm b/dashboard/public/octop-mascot-peek.webm new file mode 100644 index 00000000..05de9348 Binary files /dev/null and b/dashboard/public/octop-mascot-peek.webm differ diff --git a/dashboard/public/octop-mascot-type.webm b/dashboard/public/octop-mascot-type.webm new file mode 100644 index 00000000..71d65af1 Binary files /dev/null and b/dashboard/public/octop-mascot-type.webm differ diff --git a/dashboard/src/components/AgentSelector.module.less b/dashboard/src/components/AgentSelector.module.less index 6661f948..f05b0bc3 100644 --- a/dashboard/src/components/AgentSelector.module.less +++ b/dashboard/src/components/AgentSelector.module.less @@ -114,11 +114,6 @@ width: 100%; max-width: 280px; min-width: 160px; - - :global(.ant-select-selector) { - min-height: 26px !important; - font-size: 12px !important; - } } .optionRow { diff --git a/dashboard/src/components/AgentSelector.tsx b/dashboard/src/components/AgentSelector.tsx index b76c0254..2d9afd95 100644 --- a/dashboard/src/components/AgentSelector.tsx +++ b/dashboard/src/components/AgentSelector.tsx @@ -95,9 +95,9 @@ export default function AgentSelector({ ) : (