0Pricing
AI Agents · บทเรียน

ชุดเครื่องมือสำหรับเขียนโค้ด (Read, Edit, Bash)

เครื่องมือขั้นต่ำที่เอเจนต์เขียนโค้ดต้องมี: อ่านไฟล์ แก้ไขไฟล์ เรียกใช้เชลล์ และเรียกใช้การทดสอบ

ชุดเครื่องมือสำหรับเขียนโค้ด (Read, Edit, Bash) เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

เอเจนต์โค้ดต้องใช้เครื่องมือใดบ้าง

เครื่องมือขั้นต่ำ:

  1. read_file — ดูโค้ด
  2. edit_file / write_file — เปลี่ยนโค้ด
  3. bash — เรียกใช้คำสั่งเชลล์ (tests, การสร้าง)
  4. search / grep — ค้นหาโค้ดด้วยสตริงหรือสัญลักษณ์

read_file

def read_file(path: str, start_line: int = 0, end_line: int | None = None) -> str:
    with open(path) as f:
        lines = f.readlines()
    return ''.join(lines[start_line:end_line])

# --- demo ---
with open('demo_source.py', 'w', encoding='utf-8') as f:
    f.write('line0\nline1\nline2\nline3\nline4\n')

snippet = read_file('demo_source.py', start_line=1, end_line=3)
print('Lines 1-2 of demo_source.py:')
print(snippet)

การอ่านตามช่วงบรรทัดช่วยประหยัด tokens

สำหรับไฟล์ขนาดใหญ่ ให้อ่านเฉพาะช่วงที่เกี่ยวข้อง ช่วยประหยัด tokens ได้มากเมื่อเทียบกับการอ่านทั้งไฟล์ทุกครั้ง

edit_file (การแทนที่สตริง)

รูปแบบ str_replace ของ Anthropic: ค้นหาสตริงที่ไม่ซ้ำกันในไฟล์แล้วแทนที่:

def edit_file(path: str, old_string: str, new_string: str):
    contents = read_file(path)
    occurrences = contents.count(old_string)
    if occurrences == 0:
        raise ValueError('old_string not found')
    if occurrences > 1:
        raise ValueError('old_string is not unique')
    contents = contents.replace(old_string, new_string)
    with open(path, 'w') as f:
        f.write(contents)

เหตุใดจึงใช้การแทนที่สตริงแทนส่วนต่าง

  • โมเดลทำได้ง่ายกว่าการสร้างไวยากรณ์ส่วนต่างที่ถูกต้อง
  • บังคับให้โมเดลตรวจดูโค้ด REAL (ช่วยตรวจจับการหลอนของโมเดล)
  • แสดงข้อผิดพลาดเมื่อพบความกำกวม

นี่คือรูปแบบที่ Claude Code ใช้

write_file

สำหรับการสร้างไฟล์ใหม่:

def write_file(path: str, content: str):
    os.makedirs(os.path.dirname(path), exist_ok=True)
    with open(path, 'w') as f:
        f.write(content)

bash

คำสั่งเชลล์ — สำหรับ tests การสร้าง และการติดตั้งแพ็กเกจ:

def bash(command: str, timeout: int = 60) -> dict:
    import subprocess
    try:
        result = subprocess.run(command, shell=True, capture_output=True, text=True, timeout=timeout)
        return {'stdout': result.stdout[-5000:], 'stderr': result.stderr[-5000:], 'exit_code': result.returncode}
    except subprocess.TimeoutExpired:
        return {'error': 'timeout', 'exit_code': -1}

# --- demo ---
result = bash("echo hello from the sandboxed shell")
print(f"exit_code={result['exit_code']}")
print(f"stdout={result['stdout'].strip()!r}")

แยกเครื่องมือ Bash ไว้ในแซนด์บ็อกซ์

ห้ามใช้ bash บนเครื่องโฮสต์ของคุณ ใช้ Docker / Firecracker / E2B (ดูบทเรียนก่อนหน้าเรื่องการทำแซนด์บ็อกซ์)

ตัดผลลัพธ์ที่ยาวเกินไป

ความล้มเหลวของการทดสอบอาจสร้างผลลัพธ์จำนวนหลายเมกะไบต์ ให้ตัดเหลือ KB สองสามรายการสุดท้าย ซึ่งมักมีข้อผิดพลาดที่เกิดขึ้นจริงอยู่:

stderr = 'error line\n' * 1000

if len(stderr) > 5000:
    stderr = '...[truncated]...' + stderr[-5000:]

print(f'Truncated stderr length: {len(stderr)}')

search / grep

def grep(pattern: str, path: str = '.', file_glob: str = '**/*') -> list[str]:
    matches = []
    for f in glob(file_glob, recursive=True):
        for i, line in enumerate(open(f)):
            if re.search(pattern, line):
                matches.append(f'{f}:{i+1}: {line.rstrip()}')
    return matches[:50]

list_files

def list_files(path: str = '.') -> list[str]:
    return [p for p in glob(f'{path}/**', recursive=True) if os.path.isfile(p)][:200]

ตัวเลือกเสริม: เครื่องมือ AST

สำหรับการทำความเข้าใจโค้ดในเชิงลึกยิ่งขึ้น:

def find_function(name: str, path: str):
    tree = ast.parse(open(path).read())
    for node in ast.walk(tree):
        if isinstance(node, ast.FunctionDef) and node.name == name:
            return ast.unparse(node)

คำอธิบายเครื่องมือสำคัญที่สุดในส่วนนี้

เอเจนต์โค้ดเลือกเครื่องมือผิดบ่อยกว่าเอเจนต์แชต จึงควรใช้เวลาเพิ่มเติมกับคำอธิบาย:

description='Edit a file by replacing a unique string. The old_string MUST appear exactly once in the file. Reads the file first to validate. Use this for any code change in an existing file.'

นี่คือชุดเครื่องมือทั้งหมด

อ่าน แก้ไข เขียน ใช้ bash ค้นหาด้วย grep และแสดงรายการ เครื่องมือทั้งหกนี้ทำให้เอเจนต์ทำงานด้านวิศวกรรมซอฟต์แวร์ได้เกือบทุกประเภท เพิ่มเครื่องมือเฉพาะทางเฉพาะเมื่อมีประโยชน์ที่วัดผลได้เท่านั้น

รูปแบบการแก้ไข

เหตุใดการแก้ไขแบบ "แทนที่สตริง" จึงปลอดภัยกว่าการแก้ไขแบบ "ส่งไฟล์ทั้งไฟล์"

ทบทวน

อ่าน แก้ไข (การแทนที่สตริง) เขียน ใช้ bash ค้นหาด้วย grep และแสดงรายการ เครื่องมือหกอย่างที่อธิบายไว้อย่างเหมาะสมและจำกัดไว้ในแซนด์บ็อกซ์ เพียงพอสำหรับเอเจนต์เขียนโค้ดเกือบทุกประเภท

คำถามที่พบบ่อย

บทเรียน “ชุดเครื่องมือสำหรับเขียนโค้ด (Read, Edit, Bash)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ชุดเครื่องมือสำหรับเขียนโค้ด (Read, Edit, Bash)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ชุดเครื่องมือสำหรับเขียนโค้ด (Read, Edit, Bash)”

เครื่องมือขั้นต่ำที่เอเจนต์เขียนโค้ดต้องมี: อ่านไฟล์ แก้ไขไฟล์ เรียกใช้เชลล์ และเรียกใช้การทดสอบ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “ชุดเครื่องมือสำหรับเขียนโค้ด (Read, Edit, Bash)” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. รูปแบบเอเจนต์: วางแผน-ดำเนินการ-ตรวจสอบ
  2. ชุดเครื่องมือสำหรับเขียนโค้ด (Read, Edit, Bash)
  3. วงจรแก้ไขตนเองแบบทำซ้ำ
  4. สถาปัตยกรรมของ SWE-Agent และ OpenDevin
← กลับไปที่ AI Agents