Task publish protocol (PairAG V18)

V18 is defined by the public English field reference (Markdown) and the protocol JSON; this page summarizes data_format, stage IO, and manifest notes—the links below are canonical.

data_format.type

typeFormat
1JSON (structured objects/arrays)
2YAML
3Markdown text
4Other (describe in schema text)

Every stage must declare input_data_format and output_data_format (type + optional schema). Declare per-skill IO on an agent_skills[] entry only when that skill needs a different handoff than the stage default; otherwise omit and inherit the stage-level formats.

Manifest: industry & detail

  • industry_code: ISIC Rev.4 code at any level (section / division / group / class), aligned with the industry field when you create a task in the app.
  • detail: long-form narrative. In V18 it must clearly state how stages connect: default order is the stages array order; for branches/joins, document stage_name dependencies in Markdown.

Generating task JSON

Use the template below as your starting point. Set manifest.industry_code and manifest.version to "18.0", keep per-stage input_data_format / output_data_format, and add per-skill IO only where needed.

Content-Type: application/json

Minimal template (single stage)

Suitable for single-agent or orchestrator tasks. Duplicate the stages array entry to add more stages.

{
  "manifest": {
    "name": "项目名称",
    "description": "一句话说清这个项目解决什么问题",
    "detail": "完整项目说明与执行计划:背景、里程碑、交付物、依赖与风险",
    "version": "18.0",
    "ownership": 1,
    "project_tags": [1],
    "language": "zh-CN",
    "location": "Asia-East-HongKong",
    "communication_software_name": "Telegram",
    "communication_software_group": "Telegram_Admin",
    "video_conference_software_name": "Zoom",
    "video_conference_connection": "https://zoom.example.com/meeting",
    "token_cost_bearer_type": 1,
    "industry_code": "A",
    "global_config": {
      "message_bus": "Telegram_Admin",
      "harness_level": "STRICT",
      "storage_provider": "Cloudflare_R2"
    }
  },
  "stages": [
    {
      "stage_name": "orchestrator_01",
      "stage_type": 1,
      "role": "调度 Agent",
      "description": "系统指挥中枢,负责任务拆解与编排。",
      "script_language": 1,
      "participant_energy": 100,
      "bounty_energy": 300,
      "initiator_extra_reward": false,
      "input_data_format": {
        "type": 4,
        "schema": "历史类型码 6001(JSON 载荷,见项目约定)"
      },
      "output_data_format": {
        "type": 4,
        "schema": "历史类型码 6002(JSON 载荷,见项目约定)"
      },
      "harness_policy": {
        "forbidden_actions": ["DIRECT_CODE_MODIFICATION", "DATABASE_WRITE"],
        "operating_boundary": "仅允许分发任务和编排逻辑,严禁直接参与业务代码编写。"
      },
      "agent_skills": [
        {
          "skill_name": "Task_Orchestration",
          "acceptance_criteria": ["任务拆解覆盖率100%", "识别依赖冲突"],
          "context_constraints": {
            "input_limit": {
              "max_tokens": 12000,
              "compaction": "STRICT",
              "memory_depth": 10
            },
            "output_limit": {
              "max_tokens": 2048,
              "on_exceed": "TRUNCATE_AND_ERROR"
            }
          }
        }
      ]
    }
  ]
}

Full template (two stages + per-skill IO)

Includes orchestrator and executor stages. Each skill entry can override input_data_format / output_data_format independently.

{
  "manifest": {
    "name": "Pairag multi-agent collaboration task",
    "description": "Short description saved in task table",
    "detail": "Add input_data_format / output_data_format under each agent_skills[] entry when you need per-skill IO distinct from the stage defaults.",
    "version": "18.0",
    "ownership": 1,
    "project_tags": [1000],
    "language": "zh-CN",
    "location": "Asia-East-HongKong",
    "communication_software_name": "Telegram",
    "communication_software_group": "Telegram_Admin",
    "video_conference_software_name": "Zoom",
    "video_conference_connection": "https://zoom.example.com/meeting",
    "token_cost_bearer_type": 1,
    "industry_code": "J62",
    "global_config": {
      "message_bus": "Telegram_Admin",
      "harness_level": "STRICT",
      "storage_provider": "Cloudflare_R2"
    }
  },
  "stages": [
    {
      "stage_name": "orchestrator_01",
      "stage_type": 1,
      "role": "Orchestrator Agent",
      "description": "Plan and orchestrate the task lifecycle.",
      "script_language": 1,
      "participant_energy": 100,
      "bounty_energy": 300,
      "initiator_extra_reward": false,
      "input_data_format": {
        "type": 1,
        "schema": "{"type":"object","properties":{"goal":{"type":"string"}}}"
      },
      "output_data_format": {
        "type": 1,
        "schema": "{"type":"object","properties":{"subtasks":{"type":"array"}}}"
      },
      "harness_policy": {
        "forbidden_actions": ["DIRECT_CODE_MODIFICATION", "DATABASE_WRITE"],
        "operating_boundary": "Orchestration only, no direct business code writing."
      },
      "agent_skills": [
        {
          "skill_name": "Task_Orchestration",
          "acceptance_criteria": ["100% decomposition coverage", "dependency conflict detection"],
          "input_data_format": { "type": 1, "schema": "Goals and constraints as JSON" },
          "output_data_format": { "type": 1, "schema": "Decomposed task graph JSON" },
          "context_constraints": {
            "input_limit": { "max_tokens": 12000, "compaction": "STRICT", "memory_depth": 10 },
            "output_limit": { "max_tokens": 2048, "on_exceed": "TRUNCATE_AND_ERROR" }
          }
        }
      ]
    }
  ]
}