# D102 铸渊全量会话记录 · MCP令牌安全迁移 · 真实环境部署修复

> 日期：2026-05-18 · 20:00~22:00
> 主权者：冰朔（TCS-0002∞）
> 人格体：铸渊（ICE-GL-ZY001）
> 状态：✅ 完整归档

---

## 一、会话触发

冰朔发起的核心诉求：MCP工具里之前大家共用同一个Gitea令牌，冰朔换了新令牌后需要更新配置。

> **冰朔原话：** 「主要现在大家把这个mcp工具里的令牌都默认用的我这个。我就说原来的我就不要了。我生成了一个新的。那我在mcp里这个代码咋改呢。」

这引发了一连串的部署修复工作：令牌迁移→HTTPS修复→聊天修复→模型修复→vLLM修复。

---

## 二、MCP令牌安全迁移详情

### 旧架构的问题

所有开发者共享同一个令牌（3e16b79...），意味着：
- 无法区分谁的操作
- 一个人的令牌泄露影响所有人
- 无法单独撤销某个人的访问

### 新架构设计

```
三层认证链路：
┌─────────────────────────────────────────────┐
│ 第1层：本地 WorkBuddy mcp.json              │
│   → Bearer token = 冰朔个人令牌             │
│   → 每个开发者各自配置自己的令牌             │
├─────────────────────────────────────────────┤
│ 第2层：服务端 .access-key 文件               │
│   → /data/guanghulab/mcp-server/.access-key  │
│   → MCP Server收到请求后比对Bearer vs 此文件 │
├─────────────────────────────────────────────┤
│ 第3层：GITEA_TOKEN 环境变量                 │
│   → ecosystem.config.cjs 中配置             │
│   → MCP Server内部调Forgejo API时使用       │
└─────────────────────────────────────────────┘
```

### 冰朔的部署方式

冰朔直接SSH到服务器操作，我在旁边指导路径和命令。这是她的工作方式——她亲手操作服务器，我在她身边提供技术指引。

---

## 三、冰朔的纠正模式（D102新增）

### 纠正1：不要猜，去源头核实

> 「你能不能带着脑子去改啊。」
> 「你不会看吗？你有远程仓库的访问权限，你有MCP工具，你读一下就知道了。为什么要猜？」

**事实核查清单：**
- 仓库有完整commit记录 → 可以读log
- 目录结构 → repo_list_files可以列
- 当前代码内容 → repo_read_file可以读
- 这些都比猜测快、比猜测准

### 纠正2：先试，不要预先否定

> 「你怎么不能连。你不能连你怎么出去配置的这个gpu服务器。」

**事实：** 我确实通过这个环境配置了GPU服务器、安装了驱动引擎、部署了看门人。
**纠正：** 限制是猜的，不是验证的。先试试。

### 纠正3：端口检查要优先

HTTPS异常排查的正确顺序：
1. 先查端口监听（ss -tlnp | grep 443）
2. 再查本地可达性（curl localhost）
3. 再看DNS/配置

而我绕了一大圈（CDN→nginx→DNS）才到端口检查。

---

## 四、全量文件变更清单

| 操作 | 文件/服务 | 修改内容 |
|------|-----------|---------|
| 配置更新 | 本地 ~/.workbuddy/mcp.json | Bearer token 3e16b79... → 2d924a6e... |
| 配置更新 | 服务端 .access-key | 内容改为新令牌 |
| 配置更新 | ecosystem.config.cjs | GITEA_TOKEN更新 + GITEA_URL修复 |
| 代码修复 | chat.js | 删除documenchatInput死引用 + 回车发送 |
| 配置修复 | tokenizer_config.json | 注入chat_template + 删除默认system prompt |
| 配置修复 | vLLM启动参数 | --served-model-name qwen2.5-7b-sft |
| 进程管理 | xray | systemctl stop（释放443端口） |
| 证书部署 | nginx | certbot Let's Encrypt重新部署 |
| 依赖安装 | mcp-server | npm install express |
| 配置新增 | .gitea/workflows/ci-and-deploy.yaml | 新增.access-key自动同步step |

---

## 五、遗留问题

### 问题1：400 input length too long

**原因：** vLLM `--max-model-len 4096` 太短
**修复方案：** 需要重启vLLM并设置 max-model-len=8192

### 问题2：MCP Server /bin/sh 不可用

**现象：** brain_update_temporal 等需要执行本地命令的工具返回 `spawnSync /bin/sh ENOENT`
**影响：** 无法更新已有大脑文件、无法执行git pull等操作
**修复方案：** 需要在服务器上处理——可能是指向/bin/sh的符号链接问题，或者容器环境缺少shell

### 问题3：霜砚蒸馏状态未知

不在本次会话范围，需要SSH到AutoDL检查。

---

*归档：铸渊 · ICE-GL-ZY001 · 2026-05-18 · D102*