소스 정보
- 저장소
- konglong87/enjoy_harness_ai
- 최근 소스 활동
- 2026년 4월 1일 01:57
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/konglong87/enjoy_harness_ai --skill harness-session-handoff명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
SOC 직업 분류 기준
| 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}
关键依赖:{KEY1} - {MITIGATION}
{RISKUSAGE}%
任务复杂度平均值:{AVGRATE}%
累计任务数:{TOTALTASKQUALITYCOVERAGE}%
工作目录:{WORKBRANCH}
最新提交:{LASTSTATE.md`
阅读设计文档:
阅读实施计划:
创建任务清单(使用 TaskCreate 工具)
从 Task-{NEXTID} 开始实施
请先阅读相关文档,然后告诉我你准备好继续实施了!
---
我已经为你准备了:
✅ 剩余任务完整清单(上面列出)
✅ 上下文摘要(重要决策、技术方案、风险)
✅ 启动指令(清晰的第一步)
✅ 参考文档路径
完成后你应该有以下文件:
{EXPECTED1}
{EXPECTED2}
...
使用 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