Sentō 自带一个 Dockerfile,在容器里给你和 VPS 完全对等的体验:非 root 的 sento 用户、容器内的 @reboot cron 持久化、Guardian 和 Claude Code 一起跑。
前提条件
- Docker 24+
- 一个 Claude Code OAuth token — 由于 Docker 是非交互运行的,浏览器认证流程无法工作。先在本地机器上生成 token:
npm install -g @anthropic-ai/claude-code && claude setup-token。以sk-ant-oat01-…开头。 - 你选的频道的 bot token
构建镜像
git clone https://github.com/sentoagent/sento
cd sento
docker build -t sento .
镜像以非 root 的 sento 用户运行(Claude Code 拒绝以 root 身份使用 --dangerously-skip-permissions),并把 npm 的 global 包放在 ~/.npm-global 下。
用环境变量跑
docker run -d \
--name sento-agent \
-e CLAUDE_CODE_OAUTH_TOKEN="sk-ant-oat01-..." \
-e DISCORD_BOT_TOKEN="你的-bot-token" \
-e AGENT_NAME="kai" \
-e CHANNEL="discord" \
-v sento-data:/home/sento/workspace \
sento
把工作区挂成 volume,这样 CLAUDE.md、记忆和凭证能在容器重启后保留。
Docker Compose(多智能体)
超过一个智能体时用 Compose:
version: "3.9"
services:
kai:
image: sento
environment:
- CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_TOKEN}
- DISCORD_BOT_TOKEN=${KAI_DISCORD_TOKEN}
- AGENT_NAME=kai
- CHANNEL=discord
volumes:
- kai-data:/home/sento/workspace
mira:
image: sento
environment:
- CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_TOKEN}
- TELEGRAM_BOT_TOKEN=${MIRA_TG_TOKEN}
- AGENT_NAME=mira
- CHANNEL=telegram
volumes:
- mira-data:/home/sento/workspace
volumes:
kai-data:
mira-data:
检查健康
docker exec -it sento-agent sento status
docker exec -it sento-agent sento logs -n 40
或者进 shell,像 VPS 一样用:
docker exec -it sento-agent bash
为什么 Docker 对等很重要
在 VPS 上能跑的每个功能在 Docker 里都能跑:Guardian、cron @reboot、tmux、完整的 CLI、智能体互通配对。没有"精简模式"。容器运行方式和 Linux 用户完全一致。