อัปเดต: 26 กันยายน 2026 · สำหรับนักพัฒนา Python และ .NET
บทความนี้อ้างอิงเอกสาร Microsoft Learn ฉบับที่ตรวจสอบ ณ วันที่เขียน ความสามารถของแพ็กเกจและ API อาจเปลี่ยนเมื่ออัปเดตเวอร์ชัน

#Harness คืออะไร

Microsoft Agent Framework Harness คือชุดส่วนประกอบรันไทม์ที่ห่อหุ้ม chat client เพื่อให้โมเดลทำงานเป็น agent ได้ต่อเนื่อง: เรียกเครื่องมือ จัดการบทสนทนาและสถานะ วางแผนงาน ติดตามสิ่งที่ทำแล้ว ขออนุมัติการใช้เครื่องมือ และส่งข้อมูลการทำงานไปยังระบบสังเกตการณ์ได้ Microsoft เปิดตัวแกนหลักของ Harness สำหรับ Python และ .NET เมื่อ 22 กรกฎาคม 2026 [1][2]

นึกภาพงาน “ตรวจสอบ API ที่ทดสอบล้มเหลวและสรุปสาเหตุ” โมเดลหนึ่งครั้งอาจตอบคำถามได้ แต่การทำงานจริงต้องอ่านผลทดสอบ แบ่งงานเป็นขั้นตอน เรียกเครื่องมือ ตรวจหลักฐาน กลับมาทำขั้นต่อไป และเก็บสถานะของรอบสนทนา Harness เตรียมโครงสร้างส่วนนี้ไว้ให้ โดยผู้พัฒนาเลือก chat client กำหนดคำสั่ง และเพิ่มความสามารถตามงาน [1]

คำศัพท์: Harness ในที่นี้หมายถึง รันไทม์ที่ช่วยให้ agent ลงมือทำงาน ไม่ใช่ test harness ที่ใช้รันทดสอบหรือประเมินผลโมเดล

#ภาพรวมสถาปัตยกรรม

flowchart TD
    U["ผู้ใช้ / แอปพลิเคชัน"] --> H["Harness Agent"]
    H --> C["Chat client และโมเดล"]
    H --> P["แผน • todo • session • memory"]
    H --> T["เครื่องมือและ context providers"]
    H --> G["การอนุมัติ • telemetry • compaction"]
    T --> R["ไฟล์ / เว็บ / API ตามที่เปิดใช้"]

ภายใน Harness ประกอบจากองค์ประกอบของ Agent Framework ที่มีอยู่แล้ว ได้แก่ chat pipeline สำหรับการเรียกฟังก์ชันและบันทึกประวัติ, context providers สำหรับสถานะและความจำ, middleware สำหรับการอนุมัติและ observability และชั้น UI ที่แอปของเรารับผิดชอบเอง วัตถุที่ได้ยังเป็น agent ตาม abstraction ปกติของเฟรมเวิร์ก: HarnessAgent ซึ่งสืบทอดจาก AIAgent ใน .NET หรือ Agent ที่ได้จาก create_harness_agent ใน Python [1]

#ความสามารถใดพร้อมใช้งาน

ความสามารถ สถานะตามเอกสารปัจจุบัน ใช้ทำอะไร
Function invocation และจำกัดรอบเรียก เปิดใช้; ตั้งขีดจำกัดได้ ให้โมเดลเรียกเครื่องมือในงานหลายขั้น
Todo และโหมด plan / execute เปิดโดยค่าเริ่มต้น ติดตามแผนและความคืบหน้า
Session file memory เปิดโดยค่าเริ่มต้น เก็บโน้ตในขอบเขต session
ประวัติระหว่างการเรียกโมเดล บันทึกหลังแต่ละ model call รองรับการตรวจงานระหว่างทางและกู้คืนการทำงาน
Context compaction ใช้เมื่อกำหนด token limits หรือ strategy ลดปัญหาบริบทยาวเกินหน้าต่างของโมเดล
Tool approval และ OpenTelemetry เปิดโดยค่าเริ่มต้น ควบคุมการอนุมัติและตรวจร่องรอยการทำงาน
Web search เพิ่มเมื่อ chat client รองรับ ค้นข้อมูลปัจจุบันผ่านผู้ให้บริการโมเดล
Agent Skills .NET เปิดโดยค่าเริ่มต้น; Python ต้อง opt in โหลดความสามารถเฉพาะทาง
File access, background agents, looping opt in; ยังเป็น experimental ทำงานกับไฟล์ มอบหมายงานย่อย หรือวนทำจนถึงเงื่อนไข
Shell execution opt in; เครื่องมือ shell เป็นแพ็กเกจก่อน release รันคำสั่งในสภาพแวดล้อมที่กำหนด

ข้อควรแยกให้ชัดคือ file memory สำหรับบันทึกของ session กับ file access สำหรับอ่านและแก้ไขไฟล์งานเป็นคนละความสามารถ File access ไม่ได้เปิดใช้ทั่วไปโดยอัตโนมัติ ส่วนการมีนโยบายอนุมัติเครื่องมือไม่ได้ทำให้ shell หรือการแก้ไฟล์ปลอดภัยเอง ต้องกำหนดสิทธิ์และขอบเขตงานให้เหมาะสม [1][3]

#ทดลองสร้าง Harness ด้วย Python

ตัวอย่างนี้ใช้ OpenAI chat client ตามเอกสาร Microsoft โดยต้องมี API key ของบริการที่เลือก และติดตั้งแพ็กเกจ provider ซึ่งรวมส่วนพึ่งพาที่จำเป็นสำหรับ framework [1][4]

python -m venv .venv
# macOS / Linux
source .venv/bin/activate
# Windows PowerShell: .venv\Scripts\Activate.ps1
python -m pip install agent-framework-openai

# macOS / Linux; ใช้ค่าของคุณเอง
export OPENAI_API_KEY="<your-api-key>"
export OPENAI_CHAT_MODEL="gpt-4o-mini"
# Windows PowerShell:
# $env:OPENAI_API_KEY="<your-api-key>"
# $env:OPENAI_CHAT_MODEL="gpt-4o-mini"

สร้างไฟล์ harness_demo.py:

import asyncio
import os

from agent_framework import create_harness_agent
from agent_framework.openai import OpenAIChatClient


async def main() -> None:
    client = OpenAIChatClient(
        model=os.getenv("OPENAI_CHAT_MODEL", "gpt-4o-mini")
    )
    agent = create_harness_agent(
        client=client,
        name="ApiTestPlanner",
        agent_instructions=(
            "คุณเป็นผู้ช่วยวางแผนทดสอบ API "
            "แยกสิ่งที่ทราบ ข้อสมมติ และสิ่งที่ต้องตรวจสอบให้ชัดเจน"
        ),
    )

    # ใช้ session เดิมเพื่อรักษาประวัติและสถานะข้ามรอบสนทนา
    session = agent.create_session()
    first = await agent.run(
        "วางแผนทดสอบ API สำหรับการสมัครสมาชิก โดยระบุ positive/negative cases",
        session=session,
    )
    print(first.text)

    second = await agent.run(
        "ต่อจากแผนเดิม ช่วยจัดลำดับกรณีที่ควรรันทดสอบก่อน",
        session=session,
    )
    print(second.text)


if __name__ == "__main__":
    asyncio.run(main())
python harness_demo.py

ตัวอย่างยังไม่มีเครื่องมืออ่านไฟล์หรือรันคำสั่ง จึงเป็นการวางแผนและตอบจากบริบทสนทนา หากต้องการให้ agent ตรวจผลทดสอบจริง ต้องเพิ่มเครื่องมือหรือเปิด file access อย่างตั้งใจ อย่าใส่ API key ลงในซอร์สโค้ดหรือ commit ขึ้น repository [1][4]

#ฝั่ง .NET ใช้อย่างไร

ติดตั้งแพ็กเกจ Harness จาก NuGet แล้วส่ง IChatClient ที่กำหนดผู้ให้บริการและข้อมูลรับรองเรียบร้อยเข้า extension method:

dotnet add package Microsoft.Agents.AI.Harness
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;

// chatClient คือ IChatClient ที่เชื่อมต่อโมเดลไว้แล้ว
AIAgent agent = chatClient.AsHarnessAgent();
AgentSession session = await agent.CreateSessionAsync();

AgentResponse response = await agent.RunAsync(
    "วางแผนตรวจสอบผลทดสอบ API ที่ล้มเหลว",
    session);
Console.WriteLine(response.Text);

ส่วนการสร้าง chatClient ขึ้นอยู่กับผู้ให้บริการโมเดลและแพ็กเกจ integration ที่เลือก ตัวอย่างข้างต้นแสดงเฉพาะการประกอบ Harness; ตัวอย่าง interactive และการสตรีมดูได้จากบทเรียน Microsoft Learn [1][5]

#Harness เทียบกับ Agent และ Workflow

ทางเลือก เหมาะกับ
Agent แบบพื้นฐาน งานสนทนาหรือเรียกเครื่องมือไม่ซับซ้อน ต้องการประกอบส่วนต่าง ๆ เอง
Harness Agent งานปลายเปิดและหลายขั้นตอนที่ต้องการแผน สถานะ การอนุมัติ และ observability พร้อมใช้
Workflow ลำดับขั้นและเส้นทางการทำงานที่ผู้พัฒนาต้องกำหนดแน่ชัด รวมถึงการประสานหลาย agent

Harness เป็นการประกอบความสามารถลงใน agent หนึ่งตัว ส่วน Workflow ระบุเส้นทางการประมวลผลชัดเจน ทั้งสองอยู่ใน Agent Framework เดียวกัน และเลือกใช้ตามรูปแบบของงาน [1][6]

#แนวทางนำไปใช้กับงาน Software Testing

เริ่มจาก agent ที่ อ่านรายงานทดสอบและเสนอแผนวิเคราะห์ โดยให้เครื่องมืออ่านข้อมูลแบบจำกัดสิทธิ์ เก็บรายการกรณีที่ต้องตรวจซ้ำไว้ใน todo และให้ผู้ใช้อนุมัติก่อนการแก้ไฟล์หรือสั่งรันทดสอบ จากนั้นบันทึก telemetry เพื่อดูว่า agent เรียกเครื่องมือใด ใช้เวลาที่ขั้นไหน และสรุปตามหลักฐานหรือไม่ นี่เป็น รูปแบบการออกแบบที่เสนอ สำหรับงาน testing ไม่ใช่ชุดเครื่องมือทดสอบที่ Harness ติดตั้งไว้เอง [1][3]

เมื่อมีผู้ใช้หลายคนและเปิด file access ใน Python ให้พิจารณา file_access_session_scoped=True พร้อม file store ที่กำหนด เพราะเอกสารระบุว่าการเปิด file access ด้วย store เพียงอย่างเดียวใช้ workspace ร่วมกันโดยค่าเริ่มต้น นอกจากนี้ให้กำหนดขอบเขตไฟล์และคำสั่งที่อนุญาต ตรวจผลลัพธ์ก่อนนำไปใช้ และเพิ่มเงื่อนไขอนุมัติสำหรับการกระทำที่แก้ระบบจริง [1]

#แหล่งอ้างอิง

  1. Microsoft Learn — Agent Harness
  2. Microsoft Agent Framework Blog — The Microsoft Agent Framework Harness is now released (22 กรกฎาคม 2026)
  3. Microsoft Learn — Shell tools
  4. Microsoft Learn — OpenAI provider
  5. Microsoft Learn — Step 6: Agent Harness
  6. Microsoft Learn — Microsoft Agent Framework overview