chuan b9ddb5e21e feat: 支持精简 Docker Compose 部署
- 集中维护 Dockerfile,使用多阶段构建和 Bun 独立可执行文件
- 提供 MCP 浏览器镜像,保留中文与 Emoji 字体并校验下载完整性
- 配置健康检查、非 root 运行、内部网络和持久化数据卷
- 增加容器端到端验证脚本,覆盖模型调用、浏览器启动及数据恢复
- 重组 README,精简部署、配置和开发说明
b9ddb5e21e · 2026-10-25 01:13:47 +08:00
6 Commits
2026-10-24 20:13:01 +08:00
2026-10-24 20:55:08 +08:00
2026-10-24 20:55:08 +08:00
2026-10-24 20:13:01 +08:00
2026-10-24 20:55:08 +08:00
2026-10-24 20:55:08 +08:00
2026-10-24 20:55:08 +08:00

upup

基于 Pi Agent 内核的小红书运营工具。Bun + TypeScript 后端,React + Tailwind CSS + shadcn/ui 前端。

支持模型配置、流式对话、图片输入、MCP 工具调用、网页图表展示,以及历史对话搜索和批量管理。当前为单管理员模式,使用访问 Key 登录。

Docker 部署

需要 Docker Compose v2。小红书 MCP 的内置浏览器目前仅支持 Linux amd64。

git submodule update --init --recursive
docker compose up -d --build --wait
docker compose exec app cat /app/data/admin.key

打开 http://127.0.0.1:3000,输入 Key 登录。在“模型配置”中添加服务商,在“小红书”页面扫码登录。

app 提供网页与 Agent 服务,mcp 运行小红书工具和浏览器。仅网页端口对外映射,MCP 通过容器内部网络访问。

构建文件位于 docker/app.Dockerfile 和 docker/mcp.Dockerfile,使用项目根目录作为构建上下文。

常用命令:

docker compose ps
docker compose logs --tail=100
docker compose up -d --build --wait
docker compose down

连接宿主机的 CPA 时,使用 http://host.docker.internal:8317/v1,CPA 需允许容器访问。

发布本地图片时,将文件放入共享素材卷,并向 Agent 提供 /app/images/example.jpg:

docker compose cp ./example.jpg mcp:/app/images/example.jpg

MCP 镜像保留中文和 Emoji 字体,供内置浏览器显示页面及生成截图。upup 网页使用访问者本机字体。

本地开发

需要 Bun 1.3.14、Go 1.24 或更高版本。

git submodule update --init --recursive
bun install --frozen-lockfile

分别在两个终端运行:

bun run dev:mcp
bun run dev

前端:http://127.0.0.1:5173。后端:127.0.0.1:3000。MCP:127.0.0.1:18060/mcp。

本地登录 Key 位于 data/agent/admin.key,可在“访问 Key”页面更换。

模型配置

  • DeepSeek:填写 API Key,使用预设模型或获取模型列表。
  • CPA / CLIProxyAPI:填写 API 地址和 Key,自动获取模型,默认使用 Responses 协议。
  • 自定义服务商:支持 OpenAI Responses、Chat Completions 和 Anthropic Messages 协议。

API 地址填写服务根路径,例如 https://example.com/v1,不要附加 /responses 或 /chat/completions。Anthropic 可使用 https://api.anthropic.com。

设置默认服务商、模型和思考等级后即可对话。输入框下方可切换本次使用的模型,图片和思考能力自动识别。API Key 留空表示保留已保存的值。

图片支持 PNG、JPEG、WebP、GIF,每次最多 4 张,单张不超过 5MB,总计不超过 15MB。发布素材需要提供 MCP 可访问的文件路径,图片附件用于模型识别。

环境配置

在项目根目录的 .env 中配置,本地开发可参考 .env.example。模型 Key 在网页中管理。

变量 默认值 用途
UPUP_PORT 3000 Docker 网页端口,与本地开发冲突时可改为 3001
UPUP_BIND 127.0.0.1 Docker 监听地址,外部直接访问时设为 0.0.0.0
ADMIN_KEY 自动生成 首次启动的管理员 Key
MCP_AUTH_TOKEN 空 Agent 与 MCP 之间的鉴权 Token
PUBLIC_ORIGIN 请求自身来源 反向代理后的站点地址
COOKIE_SECURE false HTTPS 部署时设为 true
HOST 127.0.0.1 本地后端监听地址
PORT 3000 本地后端端口,修改时需同步调整 Vite 代理
DATA_DIR ./data/agent 本地 Agent 数据目录
MCP_URL http://127.0.0.1:18060/mcp 本地或独立部署时的 MCP 地址

Compose 固定使用容器内的监听地址、数据目录和 MCP 地址;HOST、PORT、DATA_DIR、MCP_URL 不覆盖这些设置。

数据存储

内容 本地开发 Docker 命名卷
对话、模型配置、管理员 Key、加密密钥 data/agent/ upup_agent-data,挂载至 /app/data
小红书登录态与浏览器配置 data/mcp/ upup_mcp-data,挂载至 /app/data
发布素材 data/images/ upup_images,挂载至 /app/images

Docker 与本地开发数据独立。备份需保留完整的 Agent 数据目录,尤其是配置加密密钥 secret.key。docker compose down 保留数据,添加 --volumes 会删除数据卷。

同一个 Key 登录的设备共享模型、对话、小红书登录态和任务;当前同一时间执行一个任务。服务重启会中断任务,已保存的消息保留。

检查与构建

bun run check
bun test
bun run build
bun run start

容器集成检查:先构建镜像,再运行 bun run test:docker。测试使用独立临时项目和模拟模型,结束后清理测试容器与数据卷。

TODO

运营 Skills

  • Skill 加载、启停与按需调用。
  • 竞品调研:账号定位、选题、内容结构和互动表现。
  • 近期分析:发布节奏、内容趋势和互动变化。
  • 回复辅助:结合上下文与账号语气生成回复草稿。

笔记与发布

  • 笔记页:账号资料、已发布笔记、搜索筛选和互动数据。
  • 草稿管理:新建、编辑、自动保存、预览与素材上传。
  • 发布编辑器:图文、视频、标签、发布确认与结果记录。

对话

  • 会话重命名、归档与自动摘要标题。
  • 消息复制、编辑重发与重新生成。
  • 长对话自动压缩与任务刷新恢复。
  • 网页看板、报告等产物的查找、复用与修改。

运营与管理

  • 设置页:运营偏好、账号定位与回复语气。
  • 操作与回复日志:筛选、详情和失败原因。
  • 自动回复:规则、人工审核、启停与重复回复防护。
  • 点赞、收藏、评论和回复的操作面板。
  • 数据快照、账号与竞品对比、趋势分析和复盘。
  • 明确指标来源与计算口径,缺失值不计为零。
  • 素材、任务和自动化规则管理,数据导出与备份恢复。

多用户

  • 独立用户与凭据,保留唯一管理员角色。
  • 模型、对话、草稿、素材、日志和规则按用户隔离。
  • 小红书账号绑定,隔离 MCP、浏览器配置与 Cookie。
  • 用户级权限、任务调度及跨用户访问测试。
  • 现有管理员数据迁移。
S
Description
No description provided
Readme
361 KiB
Languages
TypeScript 96.1%
Dockerfile 2.3%
CSS 1.4%
HTML 0.2%