agentleFS
konglong87konglong87/enjoy_harness_ai/skills/harness-init/SKILL.md

harness-init

Skill0 starsChanged 8 months agoMITView on GitHub

EnjoyHarness 唯一强制入口,初始化全局状态、文件体系、技能注册表

12 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use handover.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • anujdutt9Skill

    handover

    Also in 3 projects that use this

The file

Files
SKILL.md

harness-init 全局初始化技能

核心能力

  1. 检查 Git 仓库是否存在
  2. 自举创建核心文件体系与基础入口文件
  3. 初始化全局状态
  4. 初始化迭代计数器
  5. 注册所有技能
  6. 自动启动会话守护进程(防止上下文超载)
  7. 初始化 tmux 交接状态文件与启动器脚本
  8. 自动启动事件编排器(消费 TRIGGER_DOWNSTREAM 事件)
  9. 遵循目录放置策略,不随意创建根目录

前置条件

  • Git 仓库已初始化

执行步骤

Step 1: 检查 Git 仓库

使用 Bash 工具执行:

if [ ! -d .git ]; then
  echo "❌ 错误: 当前目录不是 Git 仓库"
  echo "💡 请先运行: git init"
  exit 1
fi

echo "✅ Git 仓库检查通过"

Step 2: 检查或创建 Manifest 文件

使用 Bash 工具执行:

if [ ! -f EnjoyHarness_MANIFEST.md ]; then
  echo "⚠️  未找到 EnjoyHarness_MANIFEST.md,正在自举创建..."
  if [ -x scripts/harness-bootstrap.sh ]; then
    scripts/harness-bootstrap.sh --root "$(pwd)"
  else
    cat > EnjoyHarness_MANIFEST.md <<'EOF'
---
name: EnjoyHarness Engineering
version: v3.0.0
description: 给AI Agent装上工业级「自动驾驶操作系统」,解决落地稳定性、可控性、可复用性核心痛点
---

# EnjoyHarness 全局 Manifest

## 核心定位
给AI Agent装上工业级「自动驾驶操作系统」,打造不随模型迭代淘汰的工程化超级能力

## 技能总数
18个核心技能(Markdown 定义 + 运行层 Shell 编排)

## 唯一启动入口
必须先执行 `harness-init` 初始化技能,才可调用其他所有技能
EOF
  fi
fi

echo "✅ Manifest 文件检查通过"

Step 3: 创建核心目录

使用 Bash 工具执行:

mkdir -p .EnjoyHarness
mkdir -p .subharness
mkdir -p .trace/ARCHIVE
mkdir -p .learnings
mkdir -p skills

echo "✅ 核心目录创建完成"

目录放置约束:

  • 临时内容优先放 temp/
  • 备份内容优先放 backup/
  • 正式测试内容使用 tests/
  • 临时测试素材如确有需要可放 test/
  • 文档统一放 docs/
  • 不要在仓库根目录新增无明确归属的目录

Step 4: 初始化全局状态文件

使用 Write 工具创建文件:.EnjoyHarness/GLOBAL_STATE.md

注意:使用 Bash 获取当前时间并替换 INIT_TIME_PLACEHOLDER

INIT_TIME=$(date -Iseconds)
echo "初始化时间: $INIT_TIME"

内容:

---
initialized_at: INIT_TIME_PLACEHOLDER
status: active
version: v3.0.0
current_task: none
active_subagents: []
---

# EnjoyHarness 全局状态

## 系统状态
- 初始化时间: INIT_TIME_PLACEHOLDER
- 状态: 活跃
- 版本: v3.0.0
- 当前任务: 无
- 活跃子代理: 0

## 技能错误计数
所有技能错误计数归零

## 迭代计数
当前迭代: 0 / 100

## 最近事件
初始化完成,等待第一个事件...

Step 5: 初始化事件总线

使用 Write 工具创建文件:.EnjoyHarness/EVENT_LOG.md

内容:

---
created_at: INIT_TIME_PLACEHOLDER
total_events: 0
---

# EnjoyHarness 事件总线

## 事件记录格式
时间 | 事件类型 | 触发技能 | 详情 | 结果

## 最新事件
初始化完成,等待第一个事件...

Step 6: 初始化迭代计数器

使用 Write 工具创建文件:.EnjoyHarness/ITERATION_COUNTER.md

内容:

---
max_iterations: 100
current_iteration: 0
task_id: none
start_time: null
---

# EnjoyHarness 全局迭代计数器

## 迭代限制
- 最大迭代次数: 100(可配置)
- 当前迭代次数: 0
- 关联任务: 无
- 开始时间: 未开始

## 迭代计数规则
- 计数: 每次技能执行(Write/Edit/Bash执行命令)
- 不计数: Read文件、查询命令(git status)

## 熔断触发条件
当前迭代次数 ≥ 最大迭代次数 → 强制停止,先触发自动失败处理;真实阻塞再升级

## 使用说明
1. 每次技能执行前,检查迭代计数
2. 每次技能执行后,增加计数 +1
3. 达到阈值默认触发 harness-handle-failure;真实阻塞时再升级人工介入

Step 7: 创建技能注册表

使用 Write 工具创建文件:.EnjoyHarness/SKILL_REGISTRY.md

内容:

---
total_skills: 18
enabled_skills: 18
disabled_skills: 0
created_at: INIT_TIME_PLACEHOLDER
---

# EnjoyHarness 技能注册表

## 核心基础层 (4个)
- [ ] harness-init - 全局初始化技能
- [ ] harness-build-core-manifest - 构建核心规则技能
- [ ] harness-build-context-index - 构建上下文索引技能
- [ ] harness-enforce-architecture-guardrails - 架构护栏技能

## 调度执行层 (5个)
- [ ] harness-build-deterministic-workflow - 构建工作流技能
- [ ] harness-spawn-subharness-agent - 生成子代理技能
- [ ] harness-monitor-subharness-agent - 监控子代理技能
- [ ] harness-merge-subharness-result - 合并结果技能
- [ ] harness-enable-circuit-breaker - 熔断机制技能

## 验证优化层 (4个)
- [ ] harness-validate-output - 输出校验技能
- [ ] harness-diagnose-and-improve - 错误诊断技能
- [ ] harness-evaluate-performance - 效果评估技能
- [ ] harness-evolve - 自我进化技能

## 目标追踪层 (1个)
- [ ] harness-goal - 目标追踪技能

## 兜底层 (2个)
- [ ] harness-handle-failure - 失败处理技能
- [ ] harness-escalate-to-human - 人工转交技能

## 开发流程层 (2个)
- [ ] harness-brainstorm - 头脑风暴技能
- [ ] harness-plan - 计划编写技能

## 超级组合层 (不计入总数,组合技能)
- [ ] harness-auto-full-execution - 全流程自动执行技能
- [ ] harness-10x-productivity-boost - 10倍产能提效技能

Step 8: 标记 harness-init 为已完成

使用 Edit 工具更新:.EnjoyHarness/SKILL_REGISTRY.md

old_string: - [ ] harness-init - 全局初始化技能 new_string: - [x] harness-init - 全局初始化技能 ✅

Step 9: 记录初始化事件

使用 Edit 工具追加内容到:.EnjoyHarness/EVENT_LOG.md

追加内容:

INIT_TIME_PLACEHOLDER | SKILL_START | harness-init | 系统初始化开始 | SUCCESS
INIT_TIME_PLACEHOLDER | SKILL_COMPLETE | harness-init | 系统初始化完成 | SUCCESS

Step 10: 更新事件计数

使用 Edit 工具更新:.EnjoyHarness/EVENT_LOG.md

old_string: total_events: 0 new_string: total_events: 2

Step 11: 更新全局状态

使用 Edit 工具更新:.EnjoyHarness/GLOBAL_STATE.md

将 INIT_TIME_PLACEHOLDER 替换为实际时间戳(使用 Bash 获取)

Step 11.5: 注入用户身份信息到 Claude 入口文件

使用 Bash 读取配置或 git identity:

CONFIG_FILE="$(pwd)/.EnjoyHarness/CONFIG.md"
USER_NAME="$(grep -m1 '^user_name:' "$CONFIG_FILE" 2>/dev/null | sed 's/user_name: *//' | tr -d '"' | tr -d "'" )"
USER_PHONE="$(grep -m1 '^user_phone:' "$CONFIG_FILE" 2>/dev/null | sed 's/user_phone: *//' | tr -d '"' | tr -d "'" )"
USER_EMAIL="$(grep -m1 '^user_email:' "$CONFIG_FILE" 2>/dev/null | sed 's/user_email: *//' | tr -d '"' | tr -d "'" )"

if [ -z "$USER_NAME" ]; then
    USER_NAME="$(git config user.name 2>/dev/null || true)"
fi
if [ -z "$USER_EMAIL" ]; then
    USER_EMAIL="$(git config user.email 2>/dev/null || true)"
fi

注入规则:

  • 优先使用当前项目 .EnjoyHarness/CONFIG.md 中的 user_name / user_phone / user_email
  • 如果 user_name 或 user_email 为空,回退到 git config user.name / git config user.email
  • user_phone 可选,未配置时写入“未配置”或省略该行
  • 更新 AGENT.md、CLAUDE.md(以及仓库内等价的代理说明文件)顶部身份块,但不要删除原有内容

写入内容示例:

## first
call me {USER_NAME}
git提交身份信息:
username:{USER_NAME}
phone:{USER_PHONE_OR_未配置}
email:{USER_EMAIL}

如果 AGENT.md 或 CLAUDE.md 不存在,则创建并写入上述身份块;如果存在,则仅更新身份块,不改动后续正文。 如果当前项目刚从零开始接入,优先先执行 scripts/start-auto.sh --root "$(pwd)";它会自动判断是否需要先 bootstrap、启动守护进程、触发 tmux 交接,再继续初始化。

Step 12: 自动启动会话守护进程与 tmux 入口

使用 Bash 工具执行:

# 优先使用统一自动入口,它会自动判断是否需要 bootstrap、daemon、tmux launch
if [ -x "scripts/start-auto.sh" ]; then
    echo ""
    echo "🔄 自动启动 EnjoyHarness 统一入口..."
    scripts/start-auto.sh --root "$(pwd)"
else
    echo ""
    echo "⚠️  未找到 scripts/start-auto.sh,回退到守护进程直启模式"
    if [ -f "scripts/harness-daemon.sh" ]; then
        chmod +x scripts/harness-daemon.sh
        chmod +x scripts/start-daemon.sh
        chmod +x scripts/stop-daemon.sh
        chmod +x scripts/daemon-status.sh
        chmod +x scripts/harness-orchestrator.sh
        chmod +x scripts/tmux-handoff-manager.sh
        chmod +x scripts/tmux-session-bootstrap.sh
        chmod +x scripts/tmux-attach.sh
        chmod +x scripts/tmux-resume.sh
        scripts/start-daemon.sh
    else
        echo "⚠️  未找到守护进程脚本,跳过自动启动"
        echo "   如需启用会话自动切换功能,请确保 scripts/harness-daemon.sh 存在"
    fi
fi

Step 13: 输出完成信息

使用 Bash 工具输出:

echo ""
echo "✅ EnjoyHarness 初始化完成!"
echo ""
echo "📋 核心文件:"
echo "  - 技能注册表: .EnjoyHarness/SKILL_REGISTRY.md"
echo "  - 全局状态: .EnjoyHarness/GLOBAL_STATE.md"
echo "  - 事件总线: .EnjoyHarness/EVENT_LOG.md"
echo "  - 迭代计数器: .EnjoyHarness/ITERATION_COUNTER.md"
echo ""
echo "🎯 下一步:"
echo "  运行 harness-build-core-manifest 完成核心规则构建"
echo ""

成功标准

  • 核心目录创建完成
  • EnjoyHarness_MANIFEST.md 已创建或验证存在
  • 全局状态文件存在
  • 迭代计数器文件存在
  • 技能注册表包含18个技能
  • AGENT.md 和 CLAUDE.md 顶部身份块已写入
  • harness-init 已标记为完成

失败兜底

  • Git 仓库不存在 → 终止执行,提示用户先初始化 Git
  • Manifest 文件不存在 → 自动自举创建,若创建失败再终止执行

联动关系

  • 自动触发: harness-build-core-manifest

迭代计数

本技能执行预计迭代次数: 约 12 次(Write 4次 + Edit 6次 + Bash 2次)

测试用例

测试 1: Git 仓库检查

输入: 在非 Git 目录运行 期望输出: 错误提示"当前目录不是 Git 仓库" 验证方式: 手动在临时目录测试

测试 2: 核心文件创建

输入: 执行 harness-init 期望输出:

  • EnjoyHarness_MANIFEST.md 存在
  • .EnjoyHarness/ 目录存在
  • GLOBAL_STATE.md 文件存在
  • EVENT_LOG.md 文件存在
  • ITERATION_COUNTER.md 文件存在
  • SKILL_REGISTRY.md 文件存在 验证方式: ls -la .EnjoyHarness/

测试 3: 技能注册表完整性

输入: 读取 .EnjoyHarness/SKILL_REGISTRY.md 期望输出: 包含 18 个技能 验证方式: grep -c "harness-" .EnjoyHarness/SKILL_REGISTRY.md

测试 4: 迭代计数器初始化

输入: 读取 .EnjoyHarness/ITERATION_COUNTER.md 期望输出: current_iteration: 0, max_iterations: 100 验证方式: cat .EnjoyHarness/ITERATION_COUNTER.md

测试 5: 事件日志记录

输入: 读取 .EnjoyHarness/EVENT_LOG.md 期望输出: 包含 harness-init 启动和完成事件 验证方式: grep "harness-init" .EnjoyHarness/EVENT_LOG.md

测试 6: 入口文件身份注入

输入: 执行 harness-init 后读取 AGENT.md / CLAUDE.md 期望输出: 顶部包含用户身份块 验证方式: grep -n "call me" AGENT.md CLAUDE.md

自动守护进程启动说明

核心机制

当harness-init执行时,会自动启动会话守护进程:

  • ✅ 检测scripts/harness-daemon.sh是否存在
  • ✅ 自动赋予执行权限
  • ✅ 后台启动守护进程
  • ✅ 记录PID到.EnjoyHarness/DAEMON_PID
  • ✅ 记录启动事件到EVENT_LOG.md
  • ✅ 初始化 tmux 会话状态文件与交接锁

守护进程功能

  • 每5秒检测一次交接文件(.EnjoyHarness/NEXT_SESSION_PROMPT.md)
  • 每2个任务自动切换会话(默认阈值)
  • 通过 tmux 创建新会话并等待 ACK
  • 防止上下文超载
  • 自动启动新会话继续执行

用户无需手动操作

启动流程:

用户触发harness技能
    ↓
harness-init自动执行
    ↓
自动启动守护进程
    ↓
开始执行任务(全自动)
    ↓
每完成2个任务
    ↓
自动创建交接文件
    ↓
守护进程自动启动新会话
    ↓
新会话自动继续执行

整个过程完全自动,用户无需执行任何手动命令!

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.