Hello folks,我是 Luga,今天我们来聊一下人工智能应用场景 - 构建高效、灵活的计算架构的多智能体工作流。
在 AI 驱动的自动化浪潮中,多智能体(Multi-Agent)系统正成为企业实现高效协作和智能化转型的关键。然而,构建一个多智能体工作流往往需要复杂的开发流程和高昂的成本,让许多团队望而却步。
想象一下,如果我们只需描述一个简单的想法,就能让 AI 在几分钟内生成一个高效的多智能体工作流,自动处理从客户服务到物流协调的各种任务?Rowboat 正是这样一款颠覆性的工具!
Rowboat 不仅能将我们的创意迅速转化为可运行的工作流,还通过智能化的代理协作和灵活的集成方式,为各行各业带来前所未有的效率提升。无论是打造一个食品配送的智能助手,还是优化跨国电商的订单处理,Rowboat 都能让多智能体协作变得简单、高效且触手可及 ……
一、什么是 Rowboat 以及它能够做什么 ?
作为一款革命性的 AI 工具,Rowboat 旨在帮助用户快速构建多智能体(Multi-Agent)工作流,轻松实现复杂的自动化任务。无论我们是希望打造一个智能客服系统,还是需要协调多个代理完成企业级工作流,Rowboat 都能通过其直观的设计和强大的技术支持,让我们的想法在几分钟内变为现实。
Rowboat 的 AI 助手基于先进的自然语言处理(NLP)和多智能体协作技术,能够理解复杂需求并生成高度定制化的工作流。生成的代理不仅功能明确,还能通过动态通信机制(如 HTTP 或消息队列)实现高效协作。
我们以食品配送场景为例,假设作为一家食品配送公司的技术负责人,我们需要一个智能助手来处理配送状态查询和遗漏物品的申诉。我们只需输入需求:“为一家食品配送公司构建一个智能助手,负责处理配送状态和遗漏物品问题,并包含必要的工具。” Rowboat 的 Copilot 将迅速分析需求,自动生成一个多智能体工作流:
- 配送状态代理(Agent 1):通过 API 调用实时查询物流系统,返回配送状态(如“已送达”或“配送中”)。
- 遗漏物品申诉代理(Agent 2):接收客户申诉,调用订单数据库核查物品清单,并生成申诉报告,提交给客服团队。
- 工具支持:Copilot 会自动集成必要的工具,如物流查询 API、订单数据库接口和通知系统,确保工作流的无缝运行。
那么,在上述场景中,配送状态代理可以在 0.5 秒内返回查询结果,申诉代理则能在 1 秒内完成订单核查,整体响应时间远低于人工处理。
二、Rowboat 技术实现解析
作为由 OpenAI 的 Agents SDK 提供技术支持,Rowboat 这一 SDK 为多智能体系统的开发提供了强大的基础。
Agents SDK 包含了智能代理的通信协议、任务调度机制和动态协作工具,确保 Rowboat 能够快速构建和运行多智能体工作流。例如,Agents SDK 的任务调度器可以在 0.1 秒内完成代理间的任务分配,协作效率远超传统系统。
得益于 OpenAI 的技术支持,Rowboat 成为构建多智能体系统的最快工具之一,具体体现在如下几个层面:
- 快速构建:从创意到工作流生成,整个过程仅需 3-5 分钟。例如,构建一个包含 5 个代理的客服系统(如订单查询、退货处理、通知发送)只需 4 分钟。
- 高可靠性:Rowboat 的工作流经过严格测试,运行稳定性达 99.9%,即使在高负载场景下也能保持流畅运行。
- 可扩展性:用户可以随时添加新代理或工具,扩展工作流功能。例如,在食品配送系统中,后期随时可以添加一个“优惠券发放代理”,而无需修改现有工作流。
三、Rowboat 使用场景解析
Rowboat 提供了便捷的集成方式,支持通过 HTTP API 或 Python SDK 将生成的多智能体工作流嵌入到我们所构建的应用程序中:
1. 获取项目 ID 和 API 密钥:
在 Rowboat 的设置页面中,找到所创建的工作流项目,复制其项目 ID 和自动生成的 API 密钥。例如,项目 ID 可能是 proj_123456,API 密钥可能是 sk_abcdef1234567890。
2. API 集成:
使用 HTTP API 调用 Rowboat 的端点,触发多智能体工作流。例如,通过以下 HTTP 请求调用配送状态查询代理:
复制POST https://api.rowboat.ai/v1/projects/proj_123456/execute Authorization: Bearer sk_abcdef1234567890 Content-Type: application/json { "agent": "delivery_status_agent", "input": { "order_id": "ORD12345" } }
上述请求返回结果可能为:
{"status": "delivered", "timestamp": "2025-04-27T10:00:00Z"}。
3. Python SDK 集成:
此外,Rowboat 还提供了 Python SDK,方便开发者在代码中调用工作流。具体实现可参考如下:
复制from rowboat_sdk import RowboatClient client = RowboatClient(project_id="proj_123456", api_key="sk_abcdef1234567890") response = client.execute(agent="delivery_status_agent", input={"order_id": "ORD12345"}) print(response) # 输出:{'status': 'delivered', 'timestamp': '2025-04-27T10:00:00Z'}
Rowboat 的 API 和 SDK 设计注重简单性和高效性,支持高并发调用(每秒处理 1000 次请求)和低延迟响应(平均延迟 0.3 秒)。
此外,Rowboat 提供详细的错误日志和监控工具,帮助开发者快速调试和优化工作流。例如,若 API 调用失败,系统会返回详细的错误信息,如 {"error": "Invalid order_id", "code": 400},便于开发者定位问题。
以下为简单的安装部署,具体可参考如下步骤所示:
复制[lugalee@labs home ]% git clone https://github.com/rowboatlabs/rowboat.git Cloning into 'rowboat'... remote: Enumerating objects: 4582, done. remote: Counting objects: 100% (1503/1503), done. remote: Compressing objects: 100% (493/493), done. remote: Total 4582 (delta 1087), reused 1021 (delta 1010), pack-reused 3079 (from 2) Receiving objects: 100% (4582/4582), 13.86 MiB | 634.00 KiB/s, done. Resolving deltas: 100% (2947/2947), done.复制
[lugalee@labs home ]% cd rowboat [lugalee@labs rowboat] % docker-compose up --build WARN[0000] The "OPENAI_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "AGENTS_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "OPENAI_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "COPILOT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "OPENAI_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "GOOGLE_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "AWS_ACCESS_KEY_ID" variable is not set. Defaulting to a blank string. WARN[0000] The "AWS_SECRET_ACCESS_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "RAG_UPLOADS_S3_BUCKET" variable is not set. Defaulting to a blank string. WARN[0000] The "RAG_UPLOADS_S3_REGION" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "OPENAI_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "FIRECRAWL_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "OPENAI_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "OPENAI_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "USE_AUTH" variable is not set. Defaulting to a blank string. WARN[0000] The "AGENTS_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "COPILOT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "USE_RAG" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "USE_RAG_UPLOADS" variable is not set. Defaulting to a blank string. WARN[0000] The "AWS_ACCESS_KEY_ID" variable is not set. Defaulting to a blank string. WARN[0000] The "AWS_SECRET_ACCESS_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "RAG_UPLOADS_S3_BUCKET" variable is not set. Defaulting to a blank string. WARN[0000] The "RAG_UPLOADS_S3_REGION" variable is not set. Defaulting to a blank string. WARN[0000] The "USE_RAG_SCRAPING" variable is not set. Defaulting to a blank string. WARN[0000] The "FIRECRAWL_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "USE_CHAT_WIDGET" variable is not set. Defaulting to a blank string.复制
[lugalee@labs rowboat ]% docker search python:3.12-slim NAME DESCRIPTION STARS OFFICIAL python Python is an interpreted, interactive, objec… 10078 [OK] circleci/python Python is an interpreted, interactive, objec… 103 cimg/python 23 bitnami/python Bitnami container image for Python 30 demisto/python The Demisto base python image 5 okteto/python 0 ubuntu/python A chiselled Ubuntu rock with the Python runt… 22 paketobuildpacks/python 0 chainguard/python Build, ship and run secure software with Cha… 4 intel/python 0 corpusops/python https://github.com/corpusops/docker-images/ 1 stagex/python High-level scripting language 0 rootpublic/python 0 vulhub/python 1 linuxserver/python 0 clarinpl/python 0 koxudaxi/python Dockerfiles for CPython of lysnikolaou's tag… 0 dtcenter/python Necessary Python3 packages for plotting GRIB… 1 openeuler/python 0 nanozoo/python 0 python/docker-bpo Docker image for local development of http:/… 0 python/bpo-patroni 0 python/bpo-builder 0 appsvc/python 3 saagie/python Repo for python jobs 0 lugalee@labs rowboat % docker pull python:3.12-slim Error response from daemon: Get "https://registry-1.docker.io/v2/library/python/manifests/sha256:85824326bc4ae27a1abb5bc0dd9e08847aa5fe73d8afb593b1b45b7cb4180f57": EOF lugalee@labs rowboat % docker pull python:3.12-slim 3.12-slim: Pulling from library/python 16c9c4a8e9ee: Pull complete a7d9a0ac6293: Pull complete 426290db1573: Pull complete e8b685ab0b21: Pull complete Digest: sha256:85824326bc4ae27a1abb5bc0dd9e08847aa5fe73d8afb593b1b45b7cb4180f57 Status: Downloaded newer image for python:3.12-slim docker.io/library/python:3.12-slim WARN[0000] The "CHAT_WIDGET_SESSION_JWT_SECRET" variable is not set. Defaulting to a blank string. WARN[0000] The "MAX_QUERIES_PER_MINUTE" variable is not set. Defaulting to a blank string. WARN[0000] The "MAX_PROJECTS_PER_USER" variable is not set. Defaulting to a blank string. WARN[0000] The "VOICE_API_URL" variable is not set. Defaulting to a blank string. WARN[0000] /Volumes/home/rowboat/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion [+] Running 1/1 ✘ mongo Error Get "https://registry-1.docker.io/v2/": EOF 5.5s Error response from daemon: Get "https://registry-1.docker.io/v2/": EOF复制
[lugalee@labs rowboat ]% docker-compose up --build WARN[0000] The "OPENAI_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "FIRECRAWL_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "OPENAI_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "OPENAI_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "AGENTS_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "OPENAI_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "COPILOT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "OPENAI_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "GOOGLE_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "AWS_ACCESS_KEY_ID" variable is not set. Defaulting to a blank string. WARN[0000] The "AWS_SECRET_ACCESS_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "RAG_UPLOADS_S3_BUCKET" variable is not set. Defaulting to a blank string. WARN[0000] The "RAG_UPLOADS_S3_REGION" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "OPENAI_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "USE_AUTH" variable is not set. Defaulting to a blank string. WARN[0000] The "AGENTS_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "COPILOT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "USE_RAG" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "USE_RAG_UPLOADS" variable is not set. Defaulting to a blank string. WARN[0000] The "AWS_ACCESS_KEY_ID" variable is not set. Defaulting to a blank string. WARN[0000] The "AWS_SECRET_ACCESS_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "RAG_UPLOADS_S3_BUCKET" variable is not set. Defaulting to a blank string. WARN[0000] The "RAG_UPLOADS_S3_REGION" variable is not set. Defaulting to a blank string. WARN[0000] The "USE_RAG_SCRAPING" variable is not set. Defaulting to a blank string. WARN[0000] The "FIRECRAWL_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] The "USE_CHAT_WIDGET" variable is not set. Defaulting to a blank string. WARN[0000] The "CHAT_WIDGET_SESSION_JWT_SECRET" variable is not set. Defaulting to a blank string. WARN[0000] The "MAX_QUERIES_PER_MINUTE" variable is not set. Defaulting to a blank string. WARN[0000] The "MAX_PROJECTS_PER_USER" variable is not set. Defaulting to a blank string. WARN[0000] The "VOICE_API_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_URL" variable is not set. Defaulting to a blank string. WARN[0000] The "QDRANT_API_KEY" variable is not set. Defaulting to a blank string. WARN[0000] /Volumes/home/rowboat/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion [+] Building 174.6s (40/44) docker:orbstack => => extracting sha256:02bb84e9f3412827f177bc6c020812249b32a8425d2c1858e9d71bd4c015f031 0.0s => [rowboat deps 1/4] RUN apk add --no-cache libc6-compat 5.8s => [rowboat builder 1/4] WORKDIR /app 0.2s => [rowboat runner 2/6] RUN addgroup --system --gid 1001 nodejs 0.1s => [rowboat runner 3/6] RUN adduser --system --uid 1001 nextjs 0.1s => [rowboat deps 2/4] WORKDIR /app 0.0s => [rowboat deps 3/4] COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* ./ 0.0s => [rowboat deps 4/4] RUN if [ -f yarn.lock ]; then yarn --frozen-lockfile; elif [ -f package-lock.json ]; then npm ci; elif [ -f pnpm-lock.yaml ]; th 51.6s => [copilot 5/5] COPY . . 0.1s => [copilot] exporting to image 0.2s => => exporting layers 0.2s => => writing image sha256:94f6406a4784d3c2e338a3e13541ab502d2e4d889b7ec2153de07611aefb7deb 0.0s => => naming to docker.io/library/rowboat-copilot 0.0s => [copilot] resolving provenance for metadata file 0.0s => [rowboat_agents 4/7] COPY pyproject.toml poetry.lock ./ 0.1s => [rowboat_agents 5/7] RUN poetry config virtualenvs.create false 0.6s => [rowboat_agents 6/7] RUN poetry install --no-interaction --no-ansi 17.9s => [rowboat_agents 7/7] COPY . . 0.1s => [rowboat_agents] exporting to image 1.6s => => exporting layers 1.5s => => writing image sha256:df19ea78b110fd388424f26f07fe266e96ce7fb6165d4f7d7a3b7a2c0fead36a 0.0s => => naming to docker.io/library/rowboat-rowboat_agents 0.0s => [rowboat_agents] resolving provenance for metadata file 0.0s => [rowboat builder 2/4] COPY --from=deps /app/node_modules ./node_modules 4.2s => [rowboat builder 3/4] COPY . . 0.1s => [rowboat builder 4/4] RUN if [ -f yarn.lock ]; then yarn run build; elif [ -f package-lock.json ]; then npm run build; elif [ -f pnpm-lock.yaml ]; 89.2s => => # code: 'ECONNREFUSED', => => # syscall: 'connect', => => # address: '::1', => => # port: 6379 => => # } => => # Generating static pages (0/10) ...复制
=> => sha256:c4a5a5511f6e3abf8b4ac5e4a4396919e0409c4a31014c0c92b9d0b7098458aa 250B / 250B 1.9s => => sha256:82c07f2f6e35255b92eb16f38dbd22679d5e8fb523064138d7c6468e7bf0c15b 9.13kB / 9.13kB 0.0s => => sha256:108c90d07162a1dd892e1a19775220dbfaaeb91cb376bab64e09cdb8a46ea012 1.75kB / 1.75kB 0.0s => => extracting sha256:67e2e38f574308b54710381fc37a28a5addd050b2c6ed3ebbce9fd0c7b3bf234 0.4s => => extracting sha256:c4a5a5511f6e3abf8b4ac5e4a4396919e0409c4a31014c0c92b9d0b7098458aa 0.0s => [rowboat internal] load metadata for docker.io/library/node:18-alpine 6.0s => [copilot 2/5] WORKDIR /app 0.2s => [copilot 3/5] COPY requirements.txt . 0.0s => [copilot 4/5] RUN pip install --no-cache-dir -r requirements.txt 25.4s => [rowboat internal] load .dockerignore 0.0s => => transferring context: 118B 0.0s => [rowboat internal] load build context 0.1s => => transferring context: 3.28MB 0.0s => [rowboat base 1/1] FROM docker.io/library/node:18-alpine@sha256:8d6421d663b4c28fd3ebc498332f249011d118945588d0a35cb9bc4b8ca09d9e 3.8s => => resolve docker.io/library/node:18-alpine@sha256:8d6421d663b4c28fd3ebc498332f249011d118945588d0a35cb9bc4b8ca09d9e 0.0s => => sha256:c2281c62c4aadf92ea71a6c05e6c8e640634b6a99dc52a6e54575f9cb298a037 1.72kB / 1.72kB 0.0s => => sha256:c5914b9dd279c0f596933e65906cb3c6d2da5aae71e863e819e9b963997b1c17 6.20kB / 6.20kB 0.0s => => sha256:d84c815451acbca96b6e6bdb479929222bec57121dfe10cc5b128c5c2dbaf10a 39.66MB / 39.66MB 2.9s => => sha256:8bfa36aa66ce614f6da68a16fb71f875da8d623310f0cb80ae1ecfa092f587f6 1.26MB / 1.26MB 1.3s => => sha256:02bb84e9f3412827f177bc6c020812249b32a8425d2c1858e9d71bd4c015f031 443B / 443B 2.3s => => sha256:8d6421d663b4c28fd3ebc498332f249011d118945588d0a35cb9bc4b8ca09d9e 7.67kB / 7.67kB 0.0s => => extracting sha256:d84c815451acbca96b6e6bdb479929222bec57121dfe10cc5b128c5c2dbaf10a 0.6s => => extracting sha256:8bfa36aa66ce614f6da68a16fb71f875da8d623310f0cb80ae1ecfa092f587f6 0.0s => => extracting sha256:02bb84e9f3412827f177bc6c020812249b32a8425d2c1858e9d71bd4c015f031 0.0s => [rowboat deps 1/4] RUN apk add --no-cache libc6-compat 5.8s => [rowboat builder 1/4] WORKDIR /app 0.2s => [rowboat runner 2/6] RUN addgroup --system --gid 1001 nodejs 0.1s => [rowboat runner 3/6] RUN adduser --system --uid 1001 nextjs 0.1s => [rowboat deps 2/4] WORKDIR /app 0.0s => [rowboat deps 3/4] COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* ./ 0.0s => [rowboat deps 4/4] RUN if [ -f yarn.lock ]; then yarn --frozen-lockfile; elif [ -f package-lock.json ]; then npm ci; elif [ -f pnpm-lock.yaml ]; th 51.6s => [copilot 5/5] COPY . . 0.1s => [copilot] exporting to image 0.2s => => exporting layers 0.2s => => writing image sha256:94f6406a4784d3c2e338a3e13541ab502d2e4d889b7ec2153de07611aefb7deb 0.0s => => naming to docker.io/library/rowboat-copilot 0.0s => [copilot] resolving provenance for metadata file 0.0s => [rowboat_agents 4/7] COPY pyproject.toml poetry.lock ./ 0.1s => [rowboat_agents 5/7] RUN poetry config virtualenvs.create false 0.6s => [rowboat_agents 6/7] RUN poetry install --no-interaction --no-ansi 17.9s => [rowboat_agents 7/7] COPY . . 0.1s => [rowboat_agents] exporting to image 1.6s => => exporting layers 1.5s => => writing image sha256:df19ea78b110fd388424f26f07fe266e96ce7fb6165d4f7d7a3b7a2c0fead36a 0.0s => => naming to docker.io/library/rowboat-rowboat_agents 0.0s => [rowboat_agents] resolving provenance for metadata file 0.0s => [rowboat builder 2/4] COPY --from=deps /app/node_modules ./node_modules 4.2s => [rowboat builder 3/4] COPY . . 0.1s => [rowboat builder 4/4] RUN if [ -f yarn.lock ]; then yarn run build; elif [ -f package-lock.json ]; then npm run build; elif [ -f pnpm-lock.yaml ]; 100.6s => [rowboat runner 4/6] COPY --from=builder /app/public ./public 0.1s => [rowboat runner 5/6] COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ 0.2s => [rowboat runner 6/6] COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static 0.0s => [rowboat] exporting to image 0.2s => => exporting layers 0.2s => => writing image sha256:ea51a8a9b433eeb0fb8b99250204da9cf3f1b5ef00c13c4764ecc8f123fb19ed 0.0s => => naming to docker.io/library/rowboat-rowboat 0.0s => [rowboat] resolving provenance for metadata file 0.0s [+] Running 9/9 ✔ copilot Built 0.0s ✔ rowboat Built 0.0s ✔ rowboat_agents Built 0.0s ✔ Network rowboat_default Created 0.0s ✔ Container rowboat-copilot-1 Created 0.2s ✔ Container rowboat-mongo-1 Created 0.2s ✔ Container rowboat-redis-1 Created 0.2s ✔ Container rowboat-rowboat_agents-1 Created 0.2s ✔ Container rowboat-rowboat-1 Created 0.2s Attaching to copilot-1, redis-1, rowboat-1, rowboat_agents-1
安装完成后,直接本地访问:http://localhost:3000/projects/select
今天的解析就到这里,欲了解更多关于 Rowboat 相关技术的深入剖析,最佳实践以及相关技术前沿,敬请关注我们的微信公众号:架构驿站,获取更多独家技术洞察!
Happy Coding ~
Reference :[1] https://github.com/rowboatlabs/rowboat
Adiós !