بنقرة واحدة
harness-session-handoff
自动会话交接机制,在完成N个任务后创建交接文件并通过 tmux 会话接力,防止上下文超载
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
自动会话交接机制,在完成N个任务后创建交接文件并通过 tmux 会话接力,防止上下文超载
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
EnjoyHarness 唯一强制入口,初始化全局状态、文件体系、技能注册表
配置文件读取和验证技能,确保用户配置正确且完整
全流程自动执行超级组合技能,编排所有16个基础技能,从用户需求到完整交付的全自动化流程
头脑风暴技能,在实现前探索用户意图、需求和设计,防止返工
实施计划执行技能,逐任务执行实施计划,支持检查点、错误恢复和进度跟踪
10倍产能提效超级组合技能,通过并行执行、智能调度、优化策略实现10倍开发效率提升
| name | harness-session-handoff |
| description | 自动会话交接机制,在完成N个任务后创建交接文件并通过 tmux 会话接力,防止上下文超载 |
| trigger_words | ["session handoff","会话交接","自动切换会话","prevent context overflow"] |
| priority | HIGHEST |
| dependencies | ["harness-auto-full-execution"] |
| version | v1.0.0 |
# 环境变量配置
TASKS_PER_SESSION=2 # 每N个任务切换会话(默认2)
NEXT_PROMPT_FILE=".EnjoyHarness/NEXT_SESSION_PROMPT.md"
GLOBAL_STATE=".EnjoyHarness/GLOBAL_STATE.md"
TMUX_SESSION_STATE=".EnjoyHarness/TMUX_SESSION_STATE.md"
HANDOFF_ACK=".EnjoyHarness/HANDOFF_ACK.md"
HANDOFF_LOCK=".EnjoyHarness/HANDOFF_LOCK.md"
ERROR_HANDBOOK=".EnjoyHarness/ERROR_HANDBOOK.md"
TMUX_SESSION_PREFIX="eh-loop"
TMUX_ACK_TIMEOUT_SECONDS=60
使用 Read 工具读取:.EnjoyHarness/GLOBAL_STATE.md
提取信息:
completed_taskspending_taskscurrent_phaseproject_goal# 计算是否需要切换会话
COMPLETED=$(grep -c "status: completed" .EnjoyHarness/GLOBAL_STATE.md)
THRESHOLD=${TASKS_PER_SESSION:-2}
if [ $COMPLETED -ge $THRESHOLD ]; then
echo "已达到切换阈值:$COMPLETED >= $THRESHOLD"
# 触发会话交接
fi
使用 Read 工具读取:.EnjoyHarness/GLOBAL_STATE.md
提取剩余任务:
- [ ] Task-051: 实现用户认证模块 (P0)
- [ ] Task-052: 编写API文档 (P1)
- [ ] Task-053: 单元测试 (P0)
...
使用 Read 工具读取:.EnjoyHarness/EVENT_LOG.md
提取关键信息:
使用 Write 工具创建:.EnjoyHarness/NEXT_SESSION_PROMPT.md
交接提示词模板:
---
created: {TIMESTAMP}
previous_session: {SESSION_ID}
completed_tasks: {COMPLETED_COUNT}
remaining_tasks: {REMAINING_COUNT}
---
# 会话续接提示
我们正在为 {PROJECT_NAME} 项目执行 {PROJECT_GOAL}。
## 背景信息
**已完成工作**:
- 已完成任务数:{COMPLETED_COUNT}
- 已完成阶段:{COMPLETED_PHASES}
- 关键成果:{KEY_DELIVERABLES}
**当前进度**:
- 剩余任务数:{REMAINING_COUNT}
- 当前进度:{PROGRESS_PERCENTAGE}%
- 预计剩余时间:{ESTIMATED_TIME}
## 本次会话目标
**质量第一原则**:宁可慢,不可乱。优先保证代码质量和系统稳定性,不追求速度而牺牲质量。
继续执行剩余的 {REMAINING_COUNT} 个任务,从 Task-{NEXT_TASK_ID} 开始,确保每个任务都经过充分测试和验证。
## 接手要求
1. 先读取 `.EnjoyHarness/GLOBAL_STATE.md`、`.EnjoyHarness/EVENT_LOG.md` 和 `.EnjoyHarness/TMUX_SESSION_STATE.md`
2. 确认当前 tmux session 与交接单一致
3. 在 `.EnjoyHarness/HANDOFF_ACK.md` 中写入 `status: accepted`
4. 如果状态不一致或提示过期,写入 `status: failed`,记录错误并先尝试自动恢复
## 剩余任务清单
### P0 优先级(必须完成)
1. **Task-{ID}**: {TITLE}
- 描述:{DESCRIPTION}
- 状态:pending
- 依赖:{DEPENDENCIES}
2. **Task-{ID}**: {TITLE}
...
### P1 优先级(重要)
...
### P2 优先级(可选)
...
## 上下文摘要
### 重要决策
1. {DECISION_1}
2. {DECISION_2}
3. ...
### 技术方案
- 架构选择:{ARCHITECTURE_CHOICE}
- 技术栈:{TECH_STACK}
- 关键依赖:{KEY_DEPENDENCIES}
### 已识别风险
1. {RISK_1} - {MITIGATION}
2. {RISK_2} - {MITIGATION}
### 会话健康状态
- Token 使用率估算:{TOKEN_USAGE}%
- 任务复杂度平均值:{AVG_COMPLEXITY}/10
- 错误率:{ERROR_RATE}%
- 累计任务数:{TOTAL_TASKS}
### 性能指标
- 平均任务完成时间:{AVG_TASK_TIME}分钟
- 代码质量评分:{CODE_QUALITY_SCORE}/10
- 测试覆盖率:{TEST_COVERAGE}%
### 环境信息
- 工作目录:{WORK_DIR}
- Git 分支:{GIT_BRANCH}
- 最新提交:{LAST_COMMIT}
- 系统平台:{PLATFORM}
## 启动指令
**请你首先**:
1. 读取全局状态文件:`.EnjoyHarness/GLOBAL_STATE.md`
2. 阅读设计文档:`docs/plans/{DESIGN_DOC}.md`
3. 阅读实施计划:`docs/plans/{IMPLEMENTATION_PLAN}.md`
4. 创建任务清单(使用 TaskCreate 工具)
5. 从 Task-{NEXT_TASK_ID} 开始实施
**详细实施步骤见实施计划文档第 {CHAPTER} 章"实施路线图"**
请先阅读相关文档,然后告诉我你准备好继续实施了!
---
## 详细实施指南
我已经为你准备了:
1. ✅ 剩余任务完整清单(上面列出)
2. ✅ 上下文摘要(重要决策、技术方案、风险)
3. ✅ 启动指令(清晰的第一步)
4. ✅ 参考文档路径
## 预期产出
完成后你应该有以下文件:
- {EXPECTED_FILE_1}
- {EXPECTED_FILE_2}
- ...
使用 Write 工具写入:.EnjoyHarness/NEXT_SESSION_PROMPT.md
内容:上述模板填充后的完整交接提示词
使用 Write 工具创建:.EnjoyHarness/HANDOFF_ACK.md
内容:
---
created_at: {TIMESTAMP}
status: pending
session_name: null
session_pid: null
tmux_session: null
acknowledged_at: null
---
使用 Edit 工具写入:.EnjoyHarness/EVENT_LOG.md
事件记录:
{TIMESTAMP} | SESSION_HANDOFF | harness-session-handoff | 达到任务阈值,创建交接文件 | SUCCESS
{TIMESTAMP} | SESSION_HANDOFF | harness-session-handoff | 已完成任务:{COMPLETED_COUNT} | INFO
{TIMESTAMP} | SESSION_HANDOFF | harness-session-handoff | 剩余任务:{REMAINING_COUNT} | INFO
{TIMESTAMP} | SESSION_HANDOFF | harness-session-handoff | 交接文件已创建:NEXT_SESSION_PROMPT.md | SUCCESS
使用 Write 工具创建:.EnjoyHarness/HANDOFF_LOCK.md
内容:锁定当前交接周期,防止重复拉起多个 tmux session。
使用 Bash 工具输出:
echo ""
echo "🔄 会话交接触发"
echo ""
echo "📊 当前状态:"
echo " - 已完成任务:{COMPLETED_COUNT}"
echo " - 剩余任务:{REMAINING_COUNT}"
echo " - 当前进度:{PROGRESS}%"
echo ""
echo "📝 交接文件已创建:"
echo " - 文件:.EnjoyHarness/NEXT_SESSION_PROMPT.md"
echo " - 大小:{SIZE} 字节"
echo ""
echo "⏳ 等待守护进程启动新会话..."
echo ""
echo "新会话将继续执行 Task-{NEXT_TASK_ID} 及后续任务。"
echo ""
等待守护进程检测到交接文件并启动新会话(约5-10秒)
当前会话自然结束,所有状态已保存。
digraph session_handoff {
rankdir=TB;
"执行任务" [shape=box, style=filled, fillcolor="#c8e6c9"];
"任务完成" [shape=box];
"检查任务计数" [shape=diamond, style=filled, fillcolor="#bbdefb"];
"继续执行" [shape=box, style=filled, fillcolor="#fff9c4"];
"读取GLOBAL_STATE" [shape=box, style=filled, fillcolor="#f8bbd0"];
"提取剩余任务" [shape=box, style=filled, fillcolor="#f8bbd0"];
"生成上下文摘要" [shape=box, style=filled, fillcolor="#f8bbd0"];
"创建交接文件" [shape=box, style=filled, fillcolor="#e1bee7"];
"记录事件日志" [shape=box, style=filled, fillcolor="#e1bee7"];
"守护进程检测" [shape=diamond, style=filled, fillcolor="#ffccbc"];
"启动新会话" [shape=box, style=filled, fillcolor="#81c784"];
"当前会话结束" [shape=doublecircle, style=filled, fillcolor="#81c784"];
"执行任务" -> "任务完成";
"任务完成" -> "检查任务计数";
"检查任务计数" -> "继续执行" [label="< 阈值"];
"继续执行" -> "执行任务";
"检查任务计数" -> "读取GLOBAL_STATE" [label=">= 阈值"];
"读取GLOBAL_STATE" -> "提取剩余任务";
"提取剩余任务" -> "生成上下文摘要";
"生成上下文摘要" -> "创建交接文件";
"创建交接文件" -> "记录事件日志";
"记录事件日志" -> "守护进程检测";
"守护进程检测" -> "启动新会话" [label="检测到交接文件"];
"启动新会话" -> "当前会话结束";
}
检测:Write 工具返回错误
处理:
使用 Edit 工具写入 ERROR_HANDBOOK.md:
{TIMESTAMP} | ERROR | harness-session-handoff | 交接文件创建失败 | FAILURE
原因:{ERROR_MESSAGE}
建议:检查文件权限,手动创建交接文件
检测:等待10秒后未启动新会话
处理:
echo "⚠️ 守护进程未检测到交接文件"
echo ""
echo "手动启动守护进程:"
echo " ./scripts/start-daemon.sh"
echo ""
echo "或手动启动新会话:"
echo " tmux-handoff-manager.sh launch"
echo ""
检测:Read GLOBAL_STATE.md 失败或数据不完整
处理:
使用 Edit 工具写入 ERROR_HANDBOOK.md:
{TIMESTAMP} | ERROR | harness-session-handoff | GLOBAL_STATE文件损坏 | FAILURE
建议:检查GLOBAL_STATE.md格式,或从备份恢复
# 守护进程每5秒检查一次
while true; do
sleep 5
if [ -f ".EnjoyHarness/NEXT_SESSION_PROMPT.md" ]; then
# 读取交接文件
# 通过 tmux 启动新会话
# 等待 HANDOFF_ACK.md
# ACK 后再归档交接文件
fi
done
.EnjoyHarness/NEXT_SESSION_PROMPT.md.EnjoyHarness/HANDOFF_ACK.md.EnjoyHarness/HANDOFF_LOCK.md.EnjoyHarness/TMUX_SESSION_STATE.md.EnjoyHarness/SESSION_PID.EnjoyHarness/DAEMON_PID.EnjoyHarness/ERROR_HANDBOOK.md在任务执行循环中添加:
# 每完成一个任务后检查
{TIMESTAMP} | TRIGGER_DOWNSTREAM | harness-session-handoff | 检查会话切换 | PENDING
在GLOBAL_STATE.md中添加触发条件:
session_handoff:
enabled: true
tasks_per_session: 2
auto_trigger: true
在CLAUDE.md中添加:
## Hooks
- on_task_complete: trigger harness-session-handoff
当前状态:
触发交接:
检测到已完成任务数:2 >= 阈值:2
创建交接文件...
✅ NEXT_SESSION_PROMPT.md 已创建
剩余任务清单:
- Task-003: 实现用户认证API (P0)
- Task-004: 编写认证测试 (P0)
- ...
守护进程将在5秒内通过 tmux 启动新会话...
新会话启动:
新会话ID:S1235
启动时间:2026-03-29T01:00:00+08:00
继续执行:Task-003
新会话写入 ACK 后,开始实施...
| 场景 | 建议阈值 | 理由 |
|---|---|---|
| 快速测试 | N=2 | 快速验证交接流程 |
| 正常执行 | N=10 | 平衡上下文和交接频率 |
| 大型项目 | N=50 | 避免频繁交接 |
| 简单任务 | N=20 | 任务简单,可多执行 |
| 复杂任务 | N=5 | 任务复杂,上下文增长快 |
如果超过限制:
本技能执行预计迭代次数:约 10-15 次
scripts/harness-daemon.shscripts/tmux-handoff-manager.shscripts/tmux-session-bootstrap.shscripts/start-daemon.shdocs/plans/2026-03-31-tmux-claude-loop-handoff-design.md