- 集中维护 Dockerfile,使用多阶段构建和 Bun 独立可执行文件 - 提供 MCP 浏览器镜像,保留中文与 Emoji 字体并校验下载完整性 - 配置健康检查、非 root 运行、内部网络和持久化数据卷 - 增加容器端到端验证脚本,覆盖模型调用、浏览器启动及数据恢复 - 重组 README,精简部署、配置和开发说明
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。
- 用户级权限、任务调度及跨用户访问测试。
- 现有管理员数据迁移。