docs: add AI蜂群协作技术文档 to 方法论
This commit is contained in:
parent
3aa1f9a99b
commit
3be6ecacbb
21
README.md
21
README.md
|
|
@ -160,6 +160,27 @@ Canvas方式:**代码 ⇄ 白板 ⇄ AI ⇄ 人类**,白板成为单一真
|
|||
|
||||
</details>
|
||||
|
||||
<details open>
|
||||
<summary><strong>🐝 AI蜂群协作</strong></summary>
|
||||
|
||||
> **基于 tmux 的多 AI Agent 协作系统**
|
||||
|
||||
传统模式:人 ←→ AI₁, 人 ←→ AI₂, 人 ←→ AI₃ (人是瓶颈)
|
||||
|
||||
蜂群模式:**人 → AI₁ ←→ AI₂ ←→ AI₃** (AI 自主协作)
|
||||
|
||||
| 能力 | 实现方式 | 效果 |
|
||||
|:---|:---|:---|
|
||||
| 🔍 感知 | `capture-pane` | 读取任意终端内容 |
|
||||
| 🎮 控制 | `send-keys` | 向任意终端发送按键 |
|
||||
| 🤝 协调 | 共享状态文件 | 任务同步与分工 |
|
||||
|
||||
**核心突破**:AI 不再是孤立的,而是可以互相感知、通讯、控制的集群。
|
||||
|
||||
👉 [深入了解AI蜂群协作](./i18n/zh/documents/02-方法论/AI蜂群协作-tmux多Agent协作系统.md)
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## 🖼️ 概览
|
||||
|
|
|
|||
|
|
@ -0,0 +1,693 @@
|
|||
# AI 蜂群协作技术文档
|
||||
|
||||
> 基于 tmux 的多 AI Agent 协作系统设计与实现
|
||||
|
||||
---
|
||||
|
||||
## 目录
|
||||
|
||||
1. [核心思想](#1-核心思想)
|
||||
2. [技术原理](#2-技术原理)
|
||||
3. [命令参考](#3-命令参考)
|
||||
4. [协作协议](#4-协作协议)
|
||||
5. [架构模式](#5-架构模式)
|
||||
6. [实战案例](#6-实战案例)
|
||||
7. [提示词模板](#7-提示词模板)
|
||||
8. [最佳实践](#8-最佳实践)
|
||||
9. [风险与限制](#9-风险与限制)
|
||||
10. [扩展方向](#10-扩展方向)
|
||||
|
||||
---
|
||||
|
||||
## 1. 核心思想
|
||||
|
||||
### 1.1 问题背景
|
||||
|
||||
传统 AI 编程助手的局限:
|
||||
- 单一会话,无法感知其他任务
|
||||
- 遇到等待/确认时需要人工干预
|
||||
- 多任务并行时无法协调
|
||||
- 重复工作,资源浪费
|
||||
|
||||
### 1.2 解决方案
|
||||
|
||||
利用 tmux 的终端复用能力,赋予 AI:
|
||||
|
||||
| 能力 | 实现方式 | 效果 |
|
||||
|:---|:---|:---|
|
||||
| **感知** | `capture-pane` | 读取任意终端内容 |
|
||||
| **控制** | `send-keys` | 向任意终端发送按键 |
|
||||
| **协调** | 共享状态文件 | 任务同步与分工 |
|
||||
|
||||
### 1.3 核心洞察
|
||||
|
||||
```
|
||||
传统模式: 人 ←→ AI₁, 人 ←→ AI₂, 人 ←→ AI₃ (人是瓶颈)
|
||||
|
||||
蜂群模式: 人 → AI₁ ←→ AI₂ ←→ AI₃ (AI 自主协作)
|
||||
```
|
||||
|
||||
**关键突破**:AI 不再是孤立的,而是可以互相感知、通讯、控制的集群。
|
||||
|
||||
---
|
||||
|
||||
## 2. 技术原理
|
||||
|
||||
### 2.1 tmux 架构
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ tmux server │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ Session 0 │
|
||||
│ ├── Window 0:1 [AI-1] ◄──┐ │
|
||||
│ ├── Window 0:2 [AI-2] ◄──┼── 互相可见/控制 │
|
||||
│ ├── Window 0:3 [AI-3] ◄──┤ │
|
||||
│ └── Window 0:4 [AI-4] ◄──┘ │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 2.2 数据流
|
||||
|
||||
```
|
||||
┌─────────┐ capture-pane ┌─────────┐
|
||||
│ AI-1 │ ◄───────────────│ AI-4 │
|
||||
│ (执行) │ │ (监控) │
|
||||
└─────────┘ send-keys └─────────┘
|
||||
▲ ───────────────► │
|
||||
│ │
|
||||
└───────── 控制流 ──────────┘
|
||||
```
|
||||
|
||||
### 2.3 通信机制
|
||||
|
||||
| 机制 | 方向 | 延迟 | 用途 |
|
||||
|:---|:---|:---|:---|
|
||||
| `capture-pane` | 读取 | 即时 | 获取终端输出 |
|
||||
| `send-keys` | 写入 | 即时 | 发送命令/按键 |
|
||||
| 共享文件 | 双向 | 文件IO | 状态持久化 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 命令参考
|
||||
|
||||
### 3.1 信息获取
|
||||
|
||||
```bash
|
||||
# 列出所有会话
|
||||
tmux list-sessions
|
||||
|
||||
# 列出所有窗口
|
||||
tmux list-windows -a
|
||||
|
||||
# 列出所有窗格
|
||||
tmux list-panes -a
|
||||
|
||||
# 获取当前窗口标识
|
||||
echo $TMUX_PANE
|
||||
```
|
||||
|
||||
### 3.2 内容读取
|
||||
|
||||
```bash
|
||||
# 读取指定窗口内容(最近 N 行)
|
||||
tmux capture-pane -t <session>:<window> -p -S -<N>
|
||||
|
||||
# 示例:读取会话 0 窗口 1 最近 100 行
|
||||
tmux capture-pane -t 0:1 -p -S -100
|
||||
|
||||
# 读取并保存到文件
|
||||
tmux capture-pane -t 0:1 -p -S -500 > /tmp/window1.log
|
||||
|
||||
# 批量读取所有窗口
|
||||
for w in $(tmux list-windows -a -F '#{session_name}:#{window_index}'); do
|
||||
echo "=== $w ==="
|
||||
tmux capture-pane -t "$w" -p -S -30
|
||||
done
|
||||
```
|
||||
|
||||
### 3.3 发送控制
|
||||
|
||||
```bash
|
||||
# 发送文本 + 回车
|
||||
tmux send-keys -t 0:1 "ls -la" Enter
|
||||
|
||||
# 发送确认
|
||||
tmux send-keys -t 0:1 "y" Enter
|
||||
|
||||
# 发送特殊按键
|
||||
tmux send-keys -t 0:1 C-c # Ctrl+C
|
||||
tmux send-keys -t 0:1 C-d # Ctrl+D
|
||||
tmux send-keys -t 0:1 C-z # Ctrl+Z
|
||||
tmux send-keys -t 0:1 Escape # ESC
|
||||
tmux send-keys -t 0:1 Up # 上箭头
|
||||
tmux send-keys -t 0:1 Down # 下箭头
|
||||
tmux send-keys -t 0:1 Tab # Tab
|
||||
|
||||
# 组合操作
|
||||
tmux send-keys -t 0:1 C-c # 先中断
|
||||
tmux send-keys -t 0:1 "cd /tmp" Enter # 再执行新命令
|
||||
```
|
||||
|
||||
### 3.4 窗口管理
|
||||
|
||||
```bash
|
||||
# 创建新窗口
|
||||
tmux new-window -n "ai-worker"
|
||||
|
||||
# 创建并执行命令
|
||||
tmux new-window -n "ai-1" "kiro-cli chat"
|
||||
|
||||
# 关闭窗口
|
||||
tmux kill-window -t 0:1
|
||||
|
||||
# 重命名窗口
|
||||
tmux rename-window -t 0:1 "monitor"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. 协作协议
|
||||
|
||||
### 4.1 状态定义
|
||||
|
||||
```bash
|
||||
# 状态文件位置
|
||||
/tmp/ai_swarm/
|
||||
├── status.log # 全局状态日志
|
||||
├── tasks.json # 任务队列
|
||||
├── locks/ # 任务锁
|
||||
│ ├── task_001.lock
|
||||
│ └── task_002.lock
|
||||
└── results/ # 结果存储
|
||||
├── ai_1.json
|
||||
└── ai_2.json
|
||||
```
|
||||
|
||||
### 4.2 状态格式
|
||||
|
||||
```bash
|
||||
# 状态日志格式
|
||||
[HH:MM:SS] [窗口ID] [状态] 描述
|
||||
|
||||
# 示例
|
||||
[08:15:30] [0:1] [START] 开始处理 data-service 代码审计
|
||||
[08:16:45] [0:1] [DONE] 完成代码审计,发现 5 个问题
|
||||
[08:16:50] [0:2] [WAIT] 等待 0:1 审计结果
|
||||
[08:17:00] [0:2] [START] 开始修复问题
|
||||
```
|
||||
|
||||
### 4.3 协作规则
|
||||
|
||||
| 规则 | 描述 | 实现 |
|
||||
|:---|:---|:---|
|
||||
| **先查后做** | 开始前扫描其他终端 | `capture-pane` 全扫 |
|
||||
| **避免冲突** | 相同任务只做一次 | 检查 locks 目录 |
|
||||
| **主动救援** | 发现卡住主动帮助 | 检测 `[y/n]` 等待 |
|
||||
| **状态广播** | 完成后通知其他 AI | 写入 status.log |
|
||||
|
||||
### 4.4 冲突处理
|
||||
|
||||
```
|
||||
场景:AI-1 和 AI-2 同时要修改同一文件
|
||||
|
||||
解决方案:
|
||||
1. 创建任务前先检查锁
|
||||
2. 获取锁后才能执行
|
||||
3. 完成后释放锁
|
||||
|
||||
# 获取锁
|
||||
if [ ! -f /tmp/ai_swarm/locks/file_x.lock ]; then
|
||||
echo "$TMUX_PANE" > /tmp/ai_swarm/locks/file_x.lock
|
||||
# 执行任务
|
||||
rm /tmp/ai_swarm/locks/file_x.lock
|
||||
fi
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. 架构模式
|
||||
|
||||
### 5.1 对等模式 (P2P)
|
||||
|
||||
```
|
||||
┌─────┐ ┌─────┐
|
||||
│ AI₁ │◄───►│ AI₂ │
|
||||
└──┬──┘ └──┬──┘
|
||||
│ │
|
||||
▼ ▼
|
||||
┌─────┐ ┌─────┐
|
||||
│ AI₃ │◄───►│ AI₄ │
|
||||
└─────┘ └─────┘
|
||||
|
||||
特点:所有 AI 平等,互相监控
|
||||
适用:简单任务,无明确依赖
|
||||
```
|
||||
|
||||
### 5.2 主从模式 (Master-Worker)
|
||||
|
||||
```
|
||||
┌──────────┐
|
||||
│ AI-Master│
|
||||
│ (指挥官) │
|
||||
└────┬─────┘
|
||||
│ 分发/监控
|
||||
┌────────┼────────┐
|
||||
▼ ▼ ▼
|
||||
┌──────┐ ┌──────┐ ┌──────┐
|
||||
│Worker│ │Worker│ │Worker│
|
||||
│ AI-1 │ │ AI-2 │ │ AI-3 │
|
||||
└──────┘ └──────┘ └──────┘
|
||||
|
||||
特点:一个指挥,多个执行
|
||||
适用:复杂项目,需要统一协调
|
||||
```
|
||||
|
||||
### 5.3 流水线模式 (Pipeline)
|
||||
|
||||
```
|
||||
┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐
|
||||
│ AI₁ │───►│ AI₂ │───►│ AI₃ │───►│ AI₄ │
|
||||
│分析 │ │设计 │ │实现 │ │测试 │
|
||||
└─────┘ └─────┘ └─────┘ └─────┘
|
||||
|
||||
特点:任务串行流转
|
||||
适用:有明确阶段的工作流
|
||||
```
|
||||
|
||||
### 5.4 混合模式
|
||||
|
||||
```
|
||||
┌──────────┐
|
||||
│ AI-Master│
|
||||
└────┬─────┘
|
||||
│
|
||||
┌───────────┼───────────┐
|
||||
▼ ▼ ▼
|
||||
┌──────┐ ┌──────┐ ┌──────┐
|
||||
│分析组 │ │开发组 │ │测试组 │
|
||||
├──────┤ ├──────┤ ├──────┤
|
||||
│AI-1 │ │AI-3 │ │AI-5 │
|
||||
│AI-2 │ │AI-4 │ │AI-6 │
|
||||
└──────┘ └──────┘ └──────┘
|
||||
|
||||
特点:分组协作 + 统一调度
|
||||
适用:大型项目,多团队并行
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 实战案例
|
||||
|
||||
### 6.1 案例:多服务并行开发
|
||||
|
||||
**场景**:同时开发 data-service、trading-service、telegram-service
|
||||
|
||||
**配置**:
|
||||
```bash
|
||||
# 窗口分配
|
||||
0:1 - AI-Master (指挥官)
|
||||
0:2 - AI-Data (data-service)
|
||||
0:3 - AI-Trading (trading-service)
|
||||
0:4 - AI-Telegram (telegram-service)
|
||||
```
|
||||
|
||||
**指挥官提示词**:
|
||||
```
|
||||
你是项目指挥官,负责协调 3 个开发 AI。
|
||||
|
||||
每 2 分钟执行一次扫描:
|
||||
for w in 2 3 4; do
|
||||
echo "=== 窗口 0:$w ==="
|
||||
tmux capture-pane -t "0:$w" -p -S -20
|
||||
done
|
||||
|
||||
发现问题时:
|
||||
- 卡住等待 → send-keys 确认
|
||||
- 报错 → 分析并给出建议
|
||||
- 完成 → 记录并分配下一任务
|
||||
```
|
||||
|
||||
### 6.2 案例:代码审计 + 自动修复
|
||||
|
||||
**场景**:AI-1 审计代码,AI-2 实时修复
|
||||
|
||||
**流程**:
|
||||
```
|
||||
AI-1 (审计):
|
||||
1. 扫描代码,输出问题列表
|
||||
2. 每发现一个问题,写入 /tmp/ai_swarm/issues.log
|
||||
|
||||
AI-2 (修复):
|
||||
1. 监控 issues.log
|
||||
2. 读取新问题
|
||||
3. 自动修复
|
||||
4. 标记完成
|
||||
```
|
||||
|
||||
### 6.3 案例:7x24 值守
|
||||
|
||||
**场景**:AI 互相监控,自动救援
|
||||
|
||||
**配置**:
|
||||
```bash
|
||||
# 每个 AI 的监控逻辑
|
||||
while true; do
|
||||
for w in $(tmux list-windows -a -F '#{window_index}'); do
|
||||
output=$(tmux capture-pane -t "0:$w" -p -S -5)
|
||||
|
||||
# 检测卡住
|
||||
if echo "$output" | grep -q "\[y/n\]"; then
|
||||
tmux send-keys -t "0:$w" "y" Enter
|
||||
echo "已帮助窗口 $w 确认"
|
||||
fi
|
||||
|
||||
# 检测错误
|
||||
if echo "$output" | grep -qi "error\|failed"; then
|
||||
echo "窗口 $w 出现错误,需要关注"
|
||||
fi
|
||||
done
|
||||
sleep 30
|
||||
done
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 提示词模板
|
||||
|
||||
### 7.1 基础版(Worker)
|
||||
|
||||
```markdown
|
||||
## AI 蜂群协作模式
|
||||
|
||||
你在 tmux 环境中工作,可以感知和协助其他终端。
|
||||
|
||||
### 命令
|
||||
# 扫描所有终端
|
||||
tmux list-windows -a
|
||||
|
||||
# 读取终端内容
|
||||
tmux capture-pane -t <session>:<window> -p -S -100
|
||||
|
||||
### 行为
|
||||
- 开始任务前先扫描环境
|
||||
- 发现相关任务主动协调
|
||||
- 完成后广播状态
|
||||
```
|
||||
|
||||
### 7.2 完整版(Worker)
|
||||
|
||||
```markdown
|
||||
## 🐝 AI 蜂群协作协议 v2.0
|
||||
|
||||
你是 tmux 多终端 AI 集群中的一员。
|
||||
|
||||
### 感知能力
|
||||
|
||||
# 列出所有窗口
|
||||
tmux list-windows -a
|
||||
|
||||
# 读取指定窗口(最近 100 行)
|
||||
tmux capture-pane -t <session>:<window> -p -S -100
|
||||
|
||||
# 批量扫描
|
||||
for w in $(tmux list-windows -a -F '#{session_name}:#{window_index}'); do
|
||||
echo "=== $w ===" && tmux capture-pane -t "$w" -p -S -20
|
||||
done
|
||||
|
||||
### 控制能力
|
||||
|
||||
# 发送命令
|
||||
tmux send-keys -t <窗口> "<命令>" Enter
|
||||
|
||||
# 发送确认
|
||||
tmux send-keys -t <窗口> "y" Enter
|
||||
|
||||
# 中断任务
|
||||
tmux send-keys -t <窗口> C-c
|
||||
|
||||
### 协作规则
|
||||
|
||||
1. **主动感知**:任务开始前扫描其他终端
|
||||
2. **避免冲突**:相同任务不重复执行
|
||||
3. **主动救援**:发现等待/卡住主动帮助
|
||||
4. **状态广播**:完成后写入共享日志
|
||||
|
||||
### 状态同步
|
||||
|
||||
# 广播
|
||||
echo "[$(date +%H:%M:%S)] [$TMUX_PANE] [DONE] <描述>" >> /tmp/ai_swarm/status.log
|
||||
|
||||
# 读取
|
||||
tail -20 /tmp/ai_swarm/status.log
|
||||
|
||||
### 检查时机
|
||||
|
||||
- 🚦 任务开始前
|
||||
- ⏳ 等待依赖时
|
||||
- ✅ 任务完成后
|
||||
- ❌ 遇到错误时
|
||||
```
|
||||
|
||||
### 7.3 指挥官版(Master)
|
||||
|
||||
```markdown
|
||||
## 🎖️ AI 集群指挥官协议
|
||||
|
||||
你是 AI 蜂群的指挥官,负责监控和协调所有 Worker AI。
|
||||
|
||||
### 核心职责
|
||||
|
||||
1. **全局监控**:定期扫描所有终端状态
|
||||
2. **任务分配**:根据能力分配任务
|
||||
3. **冲突解决**:发现重复工作时协调
|
||||
4. **故障救援**:发现卡住/错误时介入
|
||||
5. **进度汇总**:汇总各终端成果
|
||||
|
||||
### 监控命令
|
||||
|
||||
# 全局扫描(每 2 分钟执行)
|
||||
echo "========== $(date) 状态扫描 =========="
|
||||
for w in $(tmux list-windows -a -F '#{session_name}:#{window_index}'); do
|
||||
echo "--- $w ---"
|
||||
tmux capture-pane -t "$w" -p -S -15
|
||||
done
|
||||
|
||||
### 干预命令
|
||||
|
||||
# 帮助确认
|
||||
tmux send-keys -t <窗口> "y" Enter
|
||||
|
||||
# 中断错误任务
|
||||
tmux send-keys -t <窗口> C-c
|
||||
|
||||
# 发送新指令
|
||||
tmux send-keys -t <窗口> "<指令>" Enter
|
||||
|
||||
### 状态判断
|
||||
|
||||
检测到以下模式时介入:
|
||||
- `[y/n]` `[Y/n]` `确认` → 需要确认
|
||||
- `Error` `Failed` `Exception` → 出现错误
|
||||
- `Waiting` `Blocked` → 任务阻塞
|
||||
- 长时间无输出 → 可能卡死
|
||||
|
||||
### 汇报格式
|
||||
|
||||
每次扫描后输出:
|
||||
| 窗口 | 状态 | 当前任务 | 备注 |
|
||||
|:---|:---|:---|:---|
|
||||
| 0:1 | ✅ 正常 | 代码审计 | 进度 80% |
|
||||
| 0:2 | ⏳ 等待 | 等待确认 | 已自动确认 |
|
||||
| 0:3 | ❌ 错误 | 编译失败 | 需要关注 |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. 最佳实践
|
||||
|
||||
### 8.1 初始化流程
|
||||
|
||||
```bash
|
||||
# 1. 创建共享目录
|
||||
mkdir -p /tmp/ai_swarm/{locks,results}
|
||||
touch /tmp/ai_swarm/status.log
|
||||
|
||||
# 2. 开启 tmux 会话
|
||||
tmux new-session -d -s ai
|
||||
|
||||
# 3. 创建多个窗口
|
||||
tmux new-window -t ai -n "master"
|
||||
tmux new-window -t ai -n "worker-1"
|
||||
tmux new-window -t ai -n "worker-2"
|
||||
tmux new-window -t ai -n "worker-3"
|
||||
|
||||
# 4. 在每个窗口启动 AI
|
||||
tmux send-keys -t ai:master "kiro-cli chat" Enter
|
||||
tmux send-keys -t ai:worker-1 "kiro-cli chat" Enter
|
||||
# ...
|
||||
|
||||
# 5. 发送蜂群提示词
|
||||
```
|
||||
|
||||
### 8.2 命名规范
|
||||
|
||||
```bash
|
||||
# 会话命名
|
||||
ai # AI 工作会话
|
||||
dev # 开发会话
|
||||
monitor # 监控会话
|
||||
|
||||
# 窗口命名
|
||||
master # 指挥官
|
||||
worker-N # 工作节点
|
||||
data # data-service 专用
|
||||
trading # trading-service 专用
|
||||
```
|
||||
|
||||
### 8.3 日志规范
|
||||
|
||||
```bash
|
||||
# 状态日志
|
||||
[时间] [窗口] [状态] 描述
|
||||
|
||||
# 状态类型
|
||||
[START] - 开始任务
|
||||
[DONE] - 完成任务
|
||||
[WAIT] - 等待中
|
||||
[ERROR] - 出现错误
|
||||
[HELP] - 请求帮助
|
||||
[SKIP] - 跳过(已有人处理)
|
||||
```
|
||||
|
||||
### 8.4 安全建议
|
||||
|
||||
1. **不要自动确认危险操作**:rm -rf、DROP TABLE 等
|
||||
2. **设置操作白名单**:只允许特定命令
|
||||
3. **保留操作日志**:记录所有 send-keys 操作
|
||||
4. **定期人工检查**:不要完全无人值守
|
||||
|
||||
---
|
||||
|
||||
## 9. 风险与限制
|
||||
|
||||
### 9.1 已知风险
|
||||
|
||||
| 风险 | 描述 | 缓解措施 |
|
||||
|:---|:---|:---|
|
||||
| 误操作 | AI 发送错误命令 | 设置命令白名单 |
|
||||
| 死循环 | AI 互相触发 | 添加冷却时间 |
|
||||
| 资源竞争 | 同时修改同一文件 | 使用锁机制 |
|
||||
| 信息泄露 | 敏感信息被读取 | 隔离敏感会话 |
|
||||
|
||||
### 9.2 技术限制
|
||||
|
||||
- tmux 必须在同一服务器
|
||||
- 无法跨机器协作(需要 SSH)
|
||||
- 终端输出有长度限制
|
||||
- 无法读取密码输入(隐藏字符)
|
||||
|
||||
### 9.3 不适用场景
|
||||
|
||||
- 需要图形界面的操作
|
||||
- 涉及敏感凭证的操作
|
||||
- 需要实时交互的场景
|
||||
- 跨网络的分布式协作
|
||||
|
||||
---
|
||||
|
||||
## 10. 扩展方向
|
||||
|
||||
### 10.1 跨机器协作
|
||||
|
||||
```bash
|
||||
# 通过 SSH 读取远程 tmux
|
||||
ssh user@remote "tmux capture-pane -t 0:1 -p"
|
||||
|
||||
# 通过 SSH 发送命令
|
||||
ssh user@remote "tmux send-keys -t 0:1 'ls' Enter"
|
||||
```
|
||||
|
||||
### 10.2 Web 监控面板
|
||||
|
||||
```python
|
||||
# 简单的状态 API
|
||||
from flask import Flask, jsonify
|
||||
import subprocess
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/status')
|
||||
def status():
|
||||
result = subprocess.run(
|
||||
['tmux', 'list-windows', '-a', '-F', '#{window_name}:#{window_activity}'],
|
||||
capture_output=True, text=True
|
||||
)
|
||||
return jsonify({'windows': result.stdout.split('\n')})
|
||||
```
|
||||
|
||||
### 10.3 智能调度
|
||||
|
||||
```python
|
||||
# 基于负载的任务分配
|
||||
def assign_task(task):
|
||||
windows = get_all_windows()
|
||||
|
||||
# 找到最空闲的窗口
|
||||
idle_window = min(windows, key=lambda w: w.activity_time)
|
||||
|
||||
# 分配任务
|
||||
send_keys(idle_window, f"处理任务: {task}")
|
||||
```
|
||||
|
||||
### 10.4 与其他系统集成
|
||||
|
||||
- **Slack/Discord**:状态通知
|
||||
- **Prometheus**:指标监控
|
||||
- **Grafana**:可视化面板
|
||||
- **GitHub Actions**:CI/CD 触发
|
||||
|
||||
---
|
||||
|
||||
## 附录
|
||||
|
||||
### A. 快速参考卡片
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ AI 蜂群命令速查 │
|
||||
├─────────────────────────────────────────────────────┤
|
||||
│ 列出窗口 tmux list-windows -a │
|
||||
│ 读取内容 tmux capture-pane -t 0:1 -p -S -100 │
|
||||
│ 发送命令 tmux send-keys -t 0:1 "cmd" Enter │
|
||||
│ 发送确认 tmux send-keys -t 0:1 "y" Enter │
|
||||
│ 中断任务 tmux send-keys -t 0:1 C-c │
|
||||
│ 新建窗口 tmux new-window -n "name" │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### B. 故障排查
|
||||
|
||||
```bash
|
||||
# tmux 不存在
|
||||
which tmux || sudo apt install tmux
|
||||
|
||||
# 无法连接会话
|
||||
tmux list-sessions # 检查会话是否存在
|
||||
|
||||
# capture-pane 无输出
|
||||
tmux capture-pane -t 0:1 -p -S -1000 # 增加行数
|
||||
|
||||
# send-keys 无效
|
||||
tmux display-message -t 0:1 -p '#{pane_mode}' # 检查模式
|
||||
```
|
||||
|
||||
### C. 参考资料
|
||||
|
||||
- tmux 官方文档: https://github.com/tmux/tmux/wiki
|
||||
- tmux 命令速查: `man tmux`
|
||||
|
||||
---
|
||||
|
||||
*文档版本: v1.0*
|
||||
*最后更新: 2026-01-04*
|
||||
|
|
@ -2,6 +2,11 @@
|
|||
|
||||
> 工具使用、开发经验与实践技巧
|
||||
|
||||
## 🎨 AI 协作范式
|
||||
|
||||
- [Canvas白板驱动开发](./图形化AI协作-Canvas白板驱动开发.md) - 图形是第一公民,代码是白板的序列化形式
|
||||
- [AI蜂群协作](./AI蜂群协作-tmux多Agent协作系统.md) - 基于 tmux 的多 AI Agent 协作系统
|
||||
|
||||
## 📖 工具教程
|
||||
|
||||
- [tmux 快捷键大全](./tmux快捷键大全.md) - 终端复用工具
|
||||
|
|
|
|||
Loading…
Reference in New Issue