Files
server-ops/智能体交接手册.md

392 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 栖云数字城堡 · 智能体交接手册
> 本手册专为**新接手智能体**编写,读完本手册应能独立完成日常运维和故障排查。
> 冯先生(用户)—— 90后四级副职培训班学员严肃交易者西安。
> 最后更新2026-06-25
---
## 一、核心身份信息
| 信息 | 内容 |
|:---|:---|
| 称呼 | 冯先生 |
| 城市 | 西安 |
| 教育 | 上海交通大学 MEM非全日制在读 |
| 职业 | 国网陕西电力(工会+安全相关) |
| 交易风格 | 价格行为学ETH/USDT 永续1x 杠杆,中低频,趋势+波段 |
| 培训 | 90后四级副职培训班6周分段式非"浙大培训" |
### 冯先生的铁律(不可违反)
1. **Token 头号杀手** — 所有下载/安装/批量操作必须重定向 stdout/stderr禁止进度条、安装日志、大文件输出进入对话
2. **本地大模型只在 D 盘** — 不碰 C 盘,不移动模型文件
3. **删除任何文件前必须请示**
4. **不碰防火墙/安全组**
---
## 二、服务器清单与访问
### 东京服务器(主力)
| 项目 | 值 |
|:---|:---|
| 公网 IP | 43.163.225.30 |
| 内网 IP (Tailscale) | 100.111.102.100 |
| 用户 | ubuntu |
| SSH 密钥 | `C:\Users\32779\Desktop\保险箱\ssh_new.pem` |
| SSH 命令 | `ssh -i "密钥路径" ubuntu@43.163.225.30` |
| 规格 | 2C/4G |
| 角色 | Caddy 网关、Gitea、Memos、freqtrade、audiobookshelf、WebDAV、SS 代理 |
| 主机名 | vm-4-13-ubuntu |
### 北京服务器(知识库+备份)
| 项目 | 值 |
|:---|:---|
| 公网 IP | 81.70.93.78 |
| 内网 IP (Tailscale) | 100.104.225.62 |
| 用户 | ubuntu |
| SSH 密钥 | `C:\Users\32779\Desktop\保险箱\BJ.pem` |
| 规格 | 2C/4G |
| 角色 | Meilisearch7700、QA API8100、备份存储 |
| SSH 到东京密钥 | `~/.ssh/tokyo_key.pem`(放在北京服务器上) |
### 本机Windows
| 项目 | 值 |
|:---|:---|
| Tailscale IP | 100.99.151.78 |
| 主机名 | fxy |
| Python | `C:\Users\32779\.workbuddy\binaries\python\envs\default\Scripts\python.exe` |
| Git Bash | `/c/Users/32779/.workbuddy/binaries/python/envs/default/Scripts/python.exe` |
---
## 三、Gitea 仓库清单
所有仓库在 **fxy** 用户下,访问:`gitea.xybkwd.top`
**Git Push URL 格式**
```
http://beast:bb731ed7d0d267b98a1c7d082de6c8fc0329ac21@localhost:3000/fxy/<repo名>.git
```
*注:`localhost:3000` 指东京服务器内网的 Gitea 端口,本地机不可直连,需通过 SSH 到东京操作。*
### 仓库列表
| 仓库名 | 说明 | 关键词 |
|:---|:---|:---|
| `server-ops` | 服务器运维、配置归档、**全景架构手册**、CHANGELOG | **新智能体首先阅读** |
| `nav-page` | 导航页前端(`nav.xybkwd.top` | 知识库搜索/问答界面 |
| `dashboard` | 控制面板(`dashboard.xybkwd.top` | freqtrade 状态、策略切换 |
| `qiyun-portal` | 栖云个人门户 |
| `todo-system` | 待办系统 |
| `daily-brief` | **新闻管线**(国内/国际/政策/研报/行情) |
| `inspiration-collector` | 灵感收集器、AI 日报/周报、Memos 同步 |
| `weread-notes` | 微信读书笔记、阅读日报 |
| `work-docs` | 冯先生的工作文档归档 |
| `qa-archive` | 知识库问答记录归档(自动同步) |
| `freqtrade-strategies` | 交易策略 |
| `beast-trader-strategies` | Beast Trader 策略 |
| `boox-notes` | BOOX 阅读笔记 |
| `ebook-library` | 电子书库 |
| `obsidian-vault` | Obsidian 笔记库 |
| `culture-sports` | 文体部 |
| `qa-archive` | 问答记录归档 |
---
## 四、域名与服务
所有服务统一域名 `*.xybkwd.top`,经 **Caddy**(东京 `/etc/caddy/Caddyfile`)反向代理。
需要认证的域名由 `auth.xybkwd.top`(端口 9002统一管理。
### 4.1 核心服务
| 域名 | 服务 | 端口 | 后端 | 需认证 |
|:---|:---|:---:|:---|:---:|
| nav.xybkwd.top | 导航页 + 知识库搜索/问答 | 静态 | `nav-page` 前端 | ✅ |
| auth.xybkwd.top | 统一登录 | 9002 | Tokyo auth_proxy | — |
| gitea.xybkwd.top | Git 仓库 | 3000 | Docker gitea | ✅ |
| dashboard.xybkwd.top | 控制面板 | 9000 | `dashboard` 前端 | ✅ |
| memo.xybkwd.top | 备忘录 | 5230 | Docker memos | — |
| search.xybkwd.top | 搜索 | →8100 | → Beijing:8100 | ✅ |
### 4.2 内容服务
| 域名 | 服务 | 端口 |
|:---|:---|:---:|
| brief.xybkwd.top | 每日简报 | 静态文件 |
| books.xybkwd.top | 在线阅读Calibre-Web | Docker 8083 |
| podcast.xybkwd.top | 播客Audiobookshelf | Docker 13378 |
| www.xybkwd.top | 主站Halo | Docker 8090 |
### 4.3 同步/存储/工具
| 域名 | 服务 | 端口 |
|:---|:---|:---:|
| dav.xybkwd.top | WebDAV 日记同步 | Docker 8766 |
| vault.xybkwd.top | 密码管理Vaultwarden | Docker 8088仅 127.0.0.1 |
| ss.xybkwd.top | Shadowsocks 代理订阅 | 静态文件 |
### 4.4 本机 Docker 服务(通过 Tailscale 访问)
| 服务 | 端口 | 位置 |
|:---|:---:|:---|
| Immich照片管理 | 2283 | `D:\immich\`Docker |
| Ollama 本地模型 | 11434 | 本机服务 |
---
## 五、数据流
### 5.1 知识库备份(东京 → 北京)
```
东京 /home/ubuntu/ 下的 repos + configs
↓ 每天凌晨 3:00 rsync由北京 backup_tokyo_to_beijing.sh 触发)
北京 /home/ubuntu/backups/tokyo/
├── repos/ ← 最新的裸仓库
├── repos_working/ ← 工作副本
├── gitea_data/ ← 7轮滚动备份
└── configs/
```
### 5.2 知识库索引(北京)
```
北京 /home/ubuntu/backups/tokyo/repos/
├── inspiration-collector/ai-insights/daily/
├── weread-notes/notes/
├── weread-notes/daily/
└── work-docs/
↓ 每天凌晨 4:10indexer.py
Meilisearch北京:7700
```
### 5.3 问答归档(北京 → 东京 Gitea
```
用户提问 → kb_server.py北京:8100
↓ 实时
.md 文件写入北京 /home/ubuntu/kb/qa-archive/
↓ 每 30 分钟
Tokyo rsync 拉取 → git commit → git push → Gitea fxy/qa-archive
```
### 5.4 新闻管线(东京)
| 时间 | 脚本 | 内容 |
|:---:|:---|:---|
| 每天 2/8/14/20 点 | `fetch_tencent_news.py` | 腾讯新闻 |
| 每天 2/8/14/20 点 | `fetch_domestic_politics.py` | 国内时政 |
| 每天 3/9/15/21 点 | `fetch_news.py` | 国际新闻 |
| 每天 3/9/15/21 点 | `fetch_policy.py` | 政策 |
| 每天 3/9/15/21 点 | `fetch_research.py` | 研报 |
| 每小时 | `fetch_market.py` | 行情 |
| 3/9/15/21 点+5分 | `cn_merge.py` | 汇总精选 80 条 |
| 22:40 | `archive_daily_brief.py` | 归档到 Gitea |
| 23:50 | `fetch_market_daily.py` | 指数/汇率/数字货币 |
| 22:00 | `run_daily_digest.sh` | 灵感日报 |
| 22:00 | `run_daily_work_report.sh` | 工作日报 |
| 周日 8:30 | `run_weekly_reading_report.sh` | 阅读周报 |
| 周日 9:00 | `run_weekly_work_report.sh` | 工作周报 |
---
## 六、知识库 RAG 问答
### 架构
```
浏览器 nav.xybkwd.top/search.html
├─ 搜索 → /search-api/* → Caddy东京→ Beijing:7700Meilisearch
└─ 问答 → /api/ask → Caddy东京→ Beijing:8100kb_server.py
├─ Meilisearch 检索3 搜索词 × 6 篇,去重得 top 12
└─ DeepSeek API → 基于资料回答
```
### 关键参数
| 参数 | 值 |
|:---|:---|
| Meilisearch API | `http://localhost:7700`(北京) |
| 索引名 | `knowledge` |
| API Key | `m42-s8k-xybkwd-search-2026` |
| DeepSeek Key | `sk-bbca4a0380d549389f0d27cdea0b5228` |
| 模型 | `deepseek-v4-flash` |
| 单次成本 | ≈ ¥0.02 |
| 服务名 | `kb-qa`systemd端口 8100 |
| 北京安全组 | 需开放 7700、8100 给东京 IP |
**铁律**AI 仅从 Meilisearch 索引内容回答,不访问互联网。不知道说不知道。
---
## 七、Tailscale VPN
| 节点 | IP | 系统 |
|:---|:---|:---:|
| 东京 vm-4-13-ubuntu | 100.111.102.100 | Linux |
| 北京 vm-0-12-ubuntu | 100.104.225.62 | Linux |
| 本机 fxy | 100.99.151.78 | Windows与北京 direct 连接) |
- 版本1.98.4
- 用户fengxy07@
---
## 八、本机本地工具
### Ollama
| 项目 | 值 |
|:---|:---|
| API | `http://localhost:11434` |
| 模型 | `qwen3.5:9b`6.3GBIQ4_NL 量化) |
| 模型路径 | `D:\ollama\model_data\models\` |
| 调用 | `ollama run qwen3.5:9b` |
| API 调用 | `curl http://localhost:11434/api/generate -d '{"model":"qwen3.5:9b","prompt":"...","stream":false}'` |
| 上下文 | 65536 tokens |
**踩坑**Ollama pull 需清除代理 `HTTP_PROXY=""`;桌面端和 CLI 抢端口 11434路径用 Windows 反斜杠。
### Word/PDF → Markdown 工具
- `DocFormatter.exe`桌面11MB独立 exe无需 Python
- 功能doc2md 转换 + Ollama 去水印/规整排版
- 输出目录可选,保留子目录结构
### A股数据工具
| 数据 | 方法 |
|:---|:---|
| K线/财务 | mootdx TCP 7709首选不限速 |
| 龙虎榜/解禁/融资融券/大宗 | `datacenter-web.eastmoney.com`(本机可直连) |
| 东财其他 | `push2.eastmoney.com` ❌ TLS 失败,走 WebFetch |
| 实时行情 | `qt.gtimg.cn`(腾讯) |
---
## 九、Docker 服务(东京)
| 容器 | 端口 | 状态 |
|:---|:---:|:---:|
| memos | 5230 | 运行 13 天 |
| halo | 8090 | 运行 13 天 |
| vaultwarden | 8088仅本机 | 健康运行 11 天 |
| calibre-web | 8083 | 运行 10 天 |
| webdav | 8766 | 运行 8 天 |
| freqtrade | 8081 | 运行 6 天 |
| freqtrade-swing | 8082 | 运行 6 天 |
| audiobookshelf | 13378 | 运行 4 天 |
**重启顺序**数据依赖的服务postgres/redis→ 应用服务。重启请用 `docker restart <容器名>`
---
## 十、故障排查速查
### 如果用户说"网站打不开"
1. 查 Caddy`ssh 东京 && sudo systemctl status caddy`
2. 查对应 Docker 容器是否运行:`docker ps | grep <服务名>`
3. 查端口监听:`ss -tlnp | grep <端口>`
4. 最严重情况:**检查是否有人误开防火墙/安全组**。UFW 绝对禁用。
### 如果用户说"知识库搜不到"
1. 查北京索引器:`ssh 北京 && ls /home/ubuntu/backups/tokyo/repos/work-docs/`
2. 手动触发索引:`ssh 北京 && cd /home/ubuntu/kb && python3 indexer.py`
3. 查 Meilisearch`curl http://localhost:7700/health`
### 如果用户说"问答不回复"
1. 查北京 QA 服务:`ssh 北京 && sudo systemctl status kb-qa`
2. 查日志:`ssh 北京 && sudo journalctl -u kb-qa --no-pager -n 20`
3. 查 DeepSeek API Key 是否有效
### 如果用户说"问答没归档"
1. 查北京归档文件:`ssh 北京 && ls /home/ubuntu/kb/qa-archive/2026-06/`
2. 查东京同步:`ssh 东京 && ls /tmp/qa-archive/2026-06/`
3. 手动同步:`ssh 东京 && /home/ubuntu/scripts/sync_qa.sh`
### 如果 Ollama 不工作
1. 查服务:`curl http://localhost:11434/api/tags`
2. 查模型列表:`ollama list`
3. 常见原因:桌面版抢占端口 11434退出桌面版重试
---
## 十一、踩坑汇总(新智能体必读)
| # | 坑 | 症状 | 修复 |
|:---:|:---|:---|:---|
| 1 | Caddy `handle_path` | API 代理路径不对 | 用 `@matcher` + `handle @matcher` |
| 2 | Caddy 规则顺序 | `/api/ask``/api/*` 拦截 | 精确匹配放前面 |
| 3 | 服务监听 127.0.0.1 | 跨服务器连不上 | 改 `0.0.0.0` |
| 4 | `rsync --delete` | 删掉 .git 目录 | 同步到 Git 仓库时去掉 `--delete` |
| 5 | Ollama pull 被代理阻断 | 下载失败 | `HTTP_PROXY=""` 清除后再 pull |
| 6 | 模型默认上下文 4096 | 长文本被无声截断 | 设 `OLLAMA_CONTEXT_LENGTH=65536` |
| 7 | Windows Python 编码 | 中文输出乱码 | 加 `PYTHONIOENCODING=utf-8` |
| 8 | Git Bash 路径 | Windows 下路径不识别 | 用绝对路径调用 Python |
| 9 | UFW 防火墙 | 启用后所有服务崩溃 | **绝对不碰防火墙**,通过云控制台安全组管理 |
| 10 | 助理模式覆盖 | 已有功能被助理模式覆盖 | 涉及 `search.html` 等前端文件时做好备份 |
---
## 十二、关键路径与凭证位置
| 资源 | 位置 |
|:---|:---|
| 东京 SSH 密钥 | `C:\Users\32779\Desktop\保险箱\ssh_new.pem` |
| 北京 SSH 密钥 | `C:\Users\32779\Desktop\保险箱\BJ.pem` |
| Gitea 访问 | `gitea.xybkwd.top`(需认证) |
| Gitea API | `http://beast:bb731e...@localhost:3000/api/v1/`(东京内网) |
| Caddy 配置 | 东京 `/etc/caddy/Caddyfile` |
| 北京备份脚本 | `backup_tokyo_to_beijing.sh` |
| 知识库索引器 | 北京 `/home/ubuntu/kb/indexer.py` |
| QA API 服务 | 北京 `/home/ubuntu/kb/kb_server.py` / systemd `kb-qa` |
| 新闻管线脚本 | 东京 `/home/ubuntu/scripts/` |
| cron 任务 | 东京 `crontab -l -u ubuntu` |
| 北京→东京 SSH 密钥 | 北京 `~/.ssh/tokyo_key.pem` |
| 全景架构手册 | Gitea `fxy/server-ops/栖云数字城堡_全景架构手册.md` |
| 智能体交接手册 | Gitea `fxy/server-ops/智能体交接手册.md` |
| 播客系统手册 | 文体部工作区 `Audiobookshelf-全生命周期手册.md` |
| 工作空间记忆 | 本机 `C:\Users\32779\.workbuddy\MEMORY.md` |
| 本机项目目录 | `C:\Users\32779\WorkBuddy\2026-06-20-00-28-14\` |
---
## 十四、服务凭证速查
> ⚠️ 敏感信息,仅在必要时使用。所有凭证可查阅对应仓库的 credentials/ 目录。
| 服务 | URL | 账号 | 密码 / 密钥位置 |
|:---|:---|:---|:---|
| **播客 (Audiobookshelf)** | `podcast.xybkwd.top` | `root` | Vaultwarden 生成,查 vault.xybkwd.top |
| **WebDAV 日记** | `dav.xybkwd.top` | — | `server-ops/credentials/diary-webdav.md` |
| **Telegram 机器人** | — | — | `server-ops/credentials/telegram-bots.md` |
| **Gitea API** | `localhost:3000` | `beast` | `bb731ed7d0d267b98a1c7d082de6c8fc0329ac21` |
| **东京 SSH** | 43.163.225.30 | ubuntu | 桌面 `保险箱/ssh_new.pem` |
| **北京 SSH** | 81.70.93.78 | ubuntu | 桌面 `保险箱/BJ.pem` |
---
## 十三、关于冯先生的重要背景
- 正在参加 **90后四级副职培训班**(不是"浙大培训"),六周分段式:
1. 渭南党校
2. 延安干部学院
3. 清华大学
4. 太行春天
5. 浙江大学
6. 渭南党校(即将)
- 交易品种ETH/USDT 永续合约1x 杠杆
- 交易平台freqtrade + Binance
- 写作中不准笼统称"浙大培训",要称"90后四级副职培训班"或标注具体地点
---
*本手册由 WorkBuddy 于 2026-06-25 生成,内容基于全景架构手册 + 工作空间记忆 + 服务器实时状态。*
*建议每次基础设施变更后同步更新。*