Skip to main content

CLI tool to initialize Harness Engineering projects

Project description

harness-init

PyPI version Python Version License: MIT Ruff

一个 CLI 工具,用于快速初始化符合 Harness Engineering 规范的完整 Python 项目。生成的项目不是空壳,而是包含可运行的 Harness 核心引擎、Agent 骨架、测试套件和验证流水线,生成后即可 make verify 通过

核心特性

  • 一键生成完整项目:包结构、CLI、测试、Harness 运行时、Git 初始化,全部自动完成
  • 生成即验证:每个生成的项目都内置 make verify(ruff + pytest,覆盖率 ≥ 85%)
  • 对 Agent 友好:生成的项目自带增强版 AGENTS.md(含 Planner / Generator / Evaluator 三角色强制工作流)、标准计划模板 .harness/templates/plan_template.md、状态追踪 .harness/progress.json,以及 docs/context.mdopencode.yaml,外部智能体可以直接理解项目结构和工作流
  • 安全健壮:项目名校验、路径遍历防护、Git 失败自动回滚、State 原子写入
  • 双语文档:生成的项目包含中英文 README,便于国际化协作
  • 模块化设计:生成的 harness 核心引擎包含 runnerevaluatorstateworkflow 等组件,开箱即用

安装

pip install harness-init

或者从源码安装:

git clone https://github.com/renjianguojinqianfan/Project-Bootstrap-Harness.git
cd Project-Bootstrap-Harness
pip install -e ".[dev]"

快速开始

# 创建新项目
harness-init my-project

# 进入并验证
cd my-project
pip install -e ".[dev]"
make verify

执行后会在当前目录创建 my-project/,包含:

  • 完整的 Python 包结构(src/my_project/
  • Harness 核心引擎:runner.py(任务执行)、evaluator.py(结果评估)、state.py(状态持久化)、workflow.py(工作流定义)
  • Agent stubs:planner.pygenerator.pyevaluator.py
  • 运行时目录:.harness/plans/.harness/eval_feedback/.harness/state/.harness/templates/plan_template.md.harness/progress.json
  • 多命令 CLI:runevaluatestatus
  • configs/(dev/test/prod)、docs/context.mddocs/decisions/AGENTS.md(含三角色工作流指令)、opencode.yaml
  • pyproject.tomlMakefile.gitignoreREADME.mdREADME.en.md
  • 自动初始化的 Git 仓库和初始提交

生成的项目结构

my-project/
├── .harness/                 # Harness 运行时目录
│   ├── plans/                # 执行计划
│   ├── eval_feedback/        # 评估反馈
│   ├── state/                # 状态持久化
│   ├── templates/            # 模板文件
│   │   └── plan_template.md  # Agent 标准计划模板
│   ├── logs/                 # 运行日志
│   └── progress.json         # 任务进度(含 current_stage、plans、last_updated)
├── configs/                  # 多环境配置 (dev/test/prod)
├── docs/                     # 文档
│   ├── context.md            # Agent 上下文
│   └── decisions/            # 架构决策记录
├── src/my_project/           # 主包
│   ├── __init__.py
│   ├── cli.py                # CLI 入口
│   ├── harness/              # 核心引擎
│   │   ├── runner.py
│   │   ├── evaluator.py
│   │   ├── state.py
│   │   └── workflow.py
│   ├── agents/               # Agent 骨架
│   │   ├── planner.py
│   │   ├── generator.py
│   │   └── evaluator.py
│   ├── tools/                # 工具函数
│   └── utils/                # 通用辅助
├── tests/                    # 测试
├── .gitignore
├── AGENTS.md                 # Agent 操作指南
├── opencode.yaml             # 工作流配置
├── Makefile
├── pyproject.toml
├── README.md                 # 中文说明
└── README.en.md              # 英文说明

CLI 选项

harness-init [OPTIONS] PROJECT_NAME
选项 简写 说明
--force -f 强制覆盖已存在的目录(旧目录自动备份)
--no-git 跳过 Git 初始化
--yes -y 跳过所有交互提示,使用默认值
--version -v 显示版本号

项目名规则

为了生成合法的 Python 包,项目名必须:

  • 以字母或下划线开头
  • 只包含字母、数字、连字符(-)和下划线(_
  • 不能为空,不能包含空格、路径分隔符或 ..

合法示例my-projectmy_projectharness_v2
非法示例123project(数字开头)、my project(含空格)、foo/../bar(路径遍历)

开发命令(针对 harness-init 本身)

命令 说明
make verify 运行 ruff + pytest(覆盖率 ≥ 85%)
make test 运行 pytest
make lint 运行 ruff
make install pip install -e .

为什么生成的项目对 Agent 友好

生成的项目专为外部智能体设计:

  • AGENTS.md:快速地图,含 Planner / Generator / Evaluator 三角色强制工作流,agent 第一眼就能理解自己该扮演什么角色
  • docs/context.md:深层上下文,包含架构细节、命名规范、常见任务示例
  • opencode.yaml:显式声明七阶段工作流配置
  • .harness/templates/plan_template.md:标准 Markdown 计划模板,Agent 创建计划时直接复制填写
  • .harness/progress.json:任务进度追踪(current_stage、plans、last_updated),支持多轮对话断点续传
  • make verify:统一验证入口,agent 修改后立即获得质量反馈

架构

  • src/harness_init/cli.py — CLI 入口(参数解析)
  • src/harness_init/core.py — 项目生成核心逻辑(校验、复制、渲染、Git 初始化、回滚)
  • src/harness_init/_utils.py — 名称验证、模板渲染等辅助函数
  • src/harness_init/_git.py — Git 初始化与回滚辅助函数
  • src/harness_init/templates/ — 目标项目的模板文件

许可证

MIT License


English Version

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

harness_init-0.3.0.tar.gz (31.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

harness_init-0.3.0-py3-none-any.whl (30.3 kB view details)

Uploaded Python 3

File details

Details for the file harness_init-0.3.0.tar.gz.

File metadata

  • Download URL: harness_init-0.3.0.tar.gz
  • Upload date:
  • Size: 31.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for harness_init-0.3.0.tar.gz
Algorithm Hash digest
SHA256 715f817198ed414480f99b98a3bb00c6db75ada476b26b5b8fb8a586513f0822
MD5 095fee4d2c38c9df1c9655c66c54dbcd
BLAKE2b-256 fdefd13bd15c021886cfbc8c7ecc799e94e82dc539cfb49dde533c3a0d05f559

See more details on using hashes here.

File details

Details for the file harness_init-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: harness_init-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 30.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for harness_init-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 93e310e007cca402b8bc349cf6fb86b70631fdd4b1ba779af5e2dbc942fcb117
MD5 84a5fc1dc189feba2ac64852aba364af
BLAKE2b-256 ff4fa61e5e693a4c6b8bc47ec97acff7441ac2f98ec8bcdfee49ec780f37af0f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page