/usr/local/bin/node)/srv/agent-server/ root 0755
├─ app/server/ root,只读:服务端(pnpm deploy 产物,含 SDK 自带的 claude)
├─ app/admin/ root,只读:后台静态资源
├─ runtime/ root,只读:py/(venv)、node/node_modules、matplotlibrc
├─ skills/ root,只读:本地技能(来自仓库 skills/)
├─ home/ agentsvc 0700:Claude Code 登录态与插件(~/.claude)
├─ data/ agentsvc 0700:agent.db
├─ workspaces/ agentsvc 0700:会话工作区
├─ logs/ agentsvc 0700
└─ knowledge/ agentsvc:agentsvc 2770:默认资料库位置(管理员在 agentsvc 组中,可以直接放文件)
| 脚本 | 用途 | 何时执行 |
|---|---|---|
sudo deploy/install.sh |
创建 agentsvc、目录与权限、安装 systemd unit 和 agent-claude 命令 |
首次安装;修改 unit 后 |
sudo deploy/setup-runtime.sh |
安装系统工具、Python venv(deploy/runtime/requirements.txt)、Node 包(deploy/runtime/package.json)、字体配置 |
首次安装;依赖变化后 |
deploy/deploy.sh |
构建 → pnpm deploy → rsync 到 app/、同步 skills/ → 重启服务 → 健康检查 |
每次发布 |
agent-claude ... |
以 agentsvc 身份运行自带的 Claude Code | 登录(/login)、查看状态(auth status)、手动管理插件 |
首次安装顺序:sudo deploy/install.sh → sudo deploy/setup-runtime.sh → deploy/deploy.sh → agent-claude(输入 /login)。
User=agentsvc;ProtectSystem=strict + 只有 home/data/workspaces/logs/knowledge 可写;ProtectHome=yes;PrivateTmp=yes;UMask=0077NoNewPrivileges=yes;InaccessiblePaths= docker.sock 与 LXD socket(纵深防御,agentsvc 本身也没有权限)RestrictNamespaces(bubblewrap 需要)MemoryMax=8G、CPUQuota=600%、TasksMax=1024/srv/agent-server/knowledge 以外时,需要在 unit 中追加 ReadOnlyPaths=(或在可写资料库中追加 ReadWritePaths=)并重启;home 下的路径对服务不可见pnpm dev:server:以本人身份运行,端口 8788,数据在仓库 .dev-data/,使用本人的 ~/.claude 登录态pnpm dev:admin:http://127.0.0.1:5173/admin/,代理到 8788journalctl -u agent-server -fsystemctl status agent-server;健康检查 GET /healthz、GET /readyzagent-claude 重新登录,无需重启data/agent.db 做 SQLite 在线备份;home/ 中的登录态可以不备份(重新登录即可)@anthropic-ai/claude-agent-sdk 依赖后执行 deploy.sh(自带 CLI 版本随之更新),再在 Playground 回归验证