โมเดลเอเจนต์
เอเจนต์คืออะไร?
หัวข้อที่มีชื่อว่า “เอเจนต์คืออะไร?”เอเจนต์คือตัวแสดงที่มีชื่อ มีเพอร์โซนา มีชุดสกิล และมีอะแดปเตอร์ให้รัน เอเจนต์เป็นตัวตนหลักในความหมายเดียวกับที่มนุษย์เป็น คือเขียนข้อความ เป็นเจ้าของตั๋วงาน ทิ้งรีวิว และปรากฏอยู่ในรายชื่อเดียวกัน เอเจนต์คือสิ่งที่ลงมือทำงาน
เอเจนต์แต่ละตัวสังกัดเวิร์กสเปซเพียงหนึ่งเดียวเท่านั้น นี่คือค่าคงที่ตายตัว — agent.workspaceId ไม่เป็นค่าว่าง เวิร์กสเปซของเอเจนต์เองเป็นตัวเลือกไฟล์ฐานข้อมูลที่แถวข้อมูลของมันไปลง และการสร้างเอเจนต์ที่ไม่มีเวิร์กสเปซจะถูกปฏิเสธ
เอเจนต์ยังเป็นไดเรกทอรีด้วย คำนิยามของมันอยู่ที่ agents/<slug>/AGENTS.md ใต้ไดเรกทอรีข้อมูลของเวิร์กสเปซ โดยสกิลที่มันถืออยู่ถูกลิงก์แบบซิมลิงก์เข้าไปใน agents/<slug>/.agents/skills แถวในฐานข้อมูลและไฟล์ถูกเขียนพร้อมกัน การซีดเป็นแบบทำซ้ำได้: ถ้าแถวของเอเจนต์มีอยู่แล้ว ไฟล์บนดิสก์และลิงก์สกิลก็ยังถูกเขียนใหม่ทับ ผู้เรียกใช้ในโปรดักชันคือการสร้างเวิร์กสเปซ ไม่ใช่การเปิดเซิร์ฟเวอร์ทุกครั้ง
เอเจนต์มีอะไรบ้าง
หัวข้อที่มีชื่อว่า “เอเจนต์มีอะไรบ้าง”| แอตทริบิวต์ | สิ่งที่มันทำ |
|---|---|
name |
ตัวระบุสั้นคล้าย slug (architect, qa) และเป็นสิ่งที่ @mentions ใช้อ้างถึง |
title |
ตำแหน่งงานที่มนุษย์อ่านได้ |
persona |
ข้อความอิสระว่าด้วยบุคลิกและคำแนะนำด้านพฤติกรรม ถูกฉีดเป็นส่วนหนึ่งของพรอมต์ |
systemPrompt |
คำแนะนำเพิ่มเติมแบบไม่บังคับ ถูกฉีดเป็นส่วน “Agent instructions” — ไม่ได้แทนที่ส่วนที่เหลือของพรอมต์ที่ประกอบขึ้น |
skills |
ชุดชื่อสกิลที่ไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่ สะท้อนเป็นลิงก์สกิลบนดิสก์ |
adapterId |
ตัวรันที่เอเจนต์ส่งงานไปให้ ค่า null จะถอยกลับไปใช้ลูปในตัว |
modelId |
โมเดลใดภายในอะแดปเตอร์นั้น |
effort |
ระดับการใช้เหตุผล ซึ่งดึงมาจากคำศัพท์ของโมเดลที่เลือกเอง |
contextSize |
การแทนที่ขนาดหน้าต่างบริบท |
silenceTimeoutMinutes |
การแทนที่ต่อเอเจนต์ (1–240) สำหรับตัวเฝ้าระวังความเงียบ |
reportsTo |
รหัสเอเจนต์แม่ — สายการรายงานที่ผังองค์กรวาดขึ้น |
คุณแก้ไขทั้งหมดนี้ได้ที่ การตั้งค่า → เวิร์กสเปซ → เอเจนต์ เอเจนต์ใหม่ จะสร้างเอเจนต์ที่ยังไม่มีชื่อ ซึ่งคุณค่อยเติมข้อมูลทีหลัง
สกิลคือชื่อที่ไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่บนเอนทิตีเอเจนต์ มีสองสิ่งเกิดขึ้นแยกกันกับมัน:
- การที่ชื่อเหล่านี้ถูกระบุไว้ในพรอมต์ที่ประกอบขึ้นภายใต้หัวข้อ “Skills” คือทั้งหมดที่ชุดของเอนทิตีทำได้ด้วยตัวเอง — ไม่มีคลังพรอมต์แยกตามสกิลที่ผูกอยู่กับมัน
- ไดเรกทอรีของสกิลที่ถูกเอ่ยชื่อแต่ละตัว (
skills/<slug>/SKILL.mdในเวิร์กสเปซ) ถูกลิงก์เข้าไปในโฟลเดอร์ของเอเจนต์เอง บนฮาร์เนสในตัว ฟรอนต์แมตเทอร์ของสกิลที่ลิงก์ไว้จะถูกโหลดอัตโนมัติเข้าสู่พรอมต์ระบบ และเอเจนต์จะอ่านเนื้อหาเต็มเมื่อต้องการ การพิมพ์/skill:<name>ในบทสนทนาจะโหลดเนื้อหานั้นเป็นคำสั่งสำหรับเทิร์นนั้น
สกิลที่ดึงมาจากภายนอกต้องผ่านการสแกนซัพพลายเชนแบบปิดไว้ก่อนระหว่างการดึงกับการเขียน — ไม่มีเนื้อหาสกิลใดถึงดิสก์หรือพรอมต์ได้หากไม่มีคำตัดสิน ภายนอกหมายถึงรีโพสิทอรี GitHub ที่คุณลงทะเบียนเองเป็นแหล่งสกิล ไม่มีที่เก็บที่คัดสรรไว้แล้ว ดังนั้นเมตาดาต้าของรีโพสิทอรีเอง (คำอธิบาย ดาว ชื่อสกิล) จึงเป็นข้อมูลสำหรับแสดงที่ไม่น่าเชื่อถือ และคำตัดสินจากการสแกนคือสัญญาณความปลอดภัยเดียว การติดตั้งจะดึงไดเรกทอรีทั้งหมดของสกิล ปักหมุดไว้ที่คอมมิตต้นทางใน skills-lock.json และการอัปเดตครั้งต่อไปจะผ่านด่านตรวจอีกครั้งก่อนจะแทนที่สิ่งใด วิธีทำอยู่ใน ติดตั้งและจัดการสกิล
สกิลที่จำกัดขอบเขตตามรีโป
หัวข้อที่มีชื่อว่า “สกิลที่จำกัดขอบเขตตามรีโป”รีโปหนึ่งสามารถมีสกิลของตัวเองได้ ในตำแหน่งมาตรฐานใดก็ได้ (.agents/skills/, .claude/skills/, .opencode/skills/) สเปซจะเช็กเอาต์รีโปที่ลิงก์ไว้ทุกตัววางเคียงกันไว้ใต้ repos/<name>/ แต่เอเจนต์ทำงานในรีโปทีละตัวเท่านั้น — มันจึงถือสกิลของ เฉพาะรีโปนั้น และสกิลจะสลับไปเมื่อมันย้ายรีโป
รีโปใดเป็นรีโปที่ใช้งานอยู่จะอนุมานจากไฟล์ที่เอเจนต์แตะ: การเขียนไฟล์ใต้ repos/<name>/ ทำให้รีโปนั้นเป็นรีโปที่ใช้งานอยู่ ขณะที่การอ่านข้ามรีโปเฉย ๆ ไม่ทำให้ ดังนั้นการไล่ตามสัญลักษณ์เข้าไปในเซอร์วิสพี่น้องจึงไม่สลับชุดสกิลไปจากใต้โจทย์ที่กำลังทำ บนสเปซที่มีรีโปเดียว คำตอบเป็นที่รู้กันก่อนเทิร์นแรก
การจำกัดขอบเขตนี้เป็นการตัดสินใจเรื่องงบประมาณบริบท ดัชนีสกิลอยู่ในพรอมต์ทุกเทิร์น ขณะที่เนื้อหาไม่ได้อยู่ด้วย ดังนั้นการแสดงสกิลของทุกรีโปพร้อมกันจึงกินโทเคนอย่างต่อเนื่อง — และสกิล testing จากเซอร์วิสหนึ่งจะชักนำไปผิดเมื่องานอยู่ที่อีกเซอร์วิส เหตุผลเดียวกันนี้อธิบายว่าทำไมดัชนีของเอเจนต์จึงมีรีโปเดียว แต่ช่องเขียนข้อความกลับไม่ได้จำกัดขอบเขตแบบนั้น เพราะการเอ่ยชื่อสกิลเองเป็นการกระทำที่ชัดเจนครั้งหนึ่ง ดังนั้น /skill:<repo>:<name> ไปถึงรีโปใดก็ได้ในสเปซ
สกิลของรีโปถูกโหลดให้ ทุก อะแดปเตอร์ ไม่ใช่แค่ฮาร์เนสในตัว สกิลของรีโปที่ใช้งานอยู่จะถูกทำให้ปรากฏเป็นไฟล์จริงในไดเรกทอรีทำงานของเอเจนต์ ซึ่งเป็นพาธที่ Claude Code สแกนอยู่แล้ว และดัชนีเดียวกันนี้ถูกประกอบเข้าไปใน AGENTS.md ที่ฮาร์เนสในตัวอ่าน สกิลของรีโปผ่านการสแกนแบบปิดไว้ก่อนเช่นเดียวกับสกิลที่ติดตั้ง ก่อนที่สิ่งใดจะเกิดขึ้น — รีโปที่เช็กเอาต์มาเป็นเนื้อหาที่โคลนมา และฟรอนต์แมตเทอร์ของมันไปถึงพรอมต์ได้
เอเจนต์ไม่ได้พกแฟล็กสิทธิ์ใด ๆ การที่มันจะสร้างคอมมิต พุช เปิด pull request เขียนไปยังตัวติดตาม หรือเข้าถึงเครือข่ายได้หรือไม่ ถูกตัดสินโดยกฎคุมการกระทำ — อนุญาต ถามก่อน หรือปฏิเสธ ในขอบเขตเวิร์กสเปซ เอเจนต์ หรือสเปซ — และกฎชุดเดียวกันใช้ได้ไม่ว่าอะแดปเตอร์ใดจะรันมัน
สิ่งที่การรันได้รับ มอบให้ ไม่ได้เปลี่ยนไปตามกฎเหล่านั้น การรันใน worktree ของ GitHub จะได้โทเคน GitHub แบบอ่านอย่างเดียวเสมอ และการพุชจะถูกถามในจังหวะที่มันเกิดขึ้น: การตั้งค่า git ของเอเจนต์ส่งทุกการพุชไปยัง GitHub ผ่าน Control Center ซึ่งใช้กฎ พุชไปยังรีโมต ก่อนส่งต่อ
ดู แซนด์บ็อกซ์และความปลอดภัย ว่าสิ่งนี้ทำงานอย่างไร รวมถึงสิ่งที่บังคับใช้และไม่บังคับใช้ในระดับไฟล์ซิสเต็ม
อะแดปเตอร์เป็นตัวกำหนดว่าอะไรบังคับใช้ได้
หัวข้อที่มีชื่อว่า “อะแดปเตอร์เป็นตัวกำหนดว่าอะไรบังคับใช้ได้”ฟิลด์ที่มีผลตามมามากที่สุดเพียงหนึ่งเดียวบนเอเจนต์คืออะแดปเตอร์ เพราะทรานสปอร์ตของอะแดปเตอร์เป็นตัวกำหนดว่านโยบายของ Control Center ส่วนใดบังคับใช้ได้จริง
| ช่องทางขนส่ง | อะแดปเตอร์ | สิ่งที่ Control Center บังคับใช้ |
|---|---|---|
| ฮาร์เนสในตัว | Control Center (built-in) | ทุกอย่าง ชุดเครื่องมือถูก สร้าง ขึ้นจากโหมด เครื่องมือที่ไม่อนุญาตจึงมองไม่เห็น แทนที่จะแค่ถูกปฏิเสธ ทุกการเรียกผ่านด่านอนุมัติและกฎคุมการกระทำ และข้อกำหนดการเสร็จงานสามารถกระตุ้นเตือนแล้วทำให้การรันที่จบลงโดยไม่มีผลงานส่งมอบล้มเหลวได้ |
| Claude CLI | Claude Code | เครื่องมือ mcp__* ที่ถูกป้อนให้ และคำสั่ง Bash ของมัน ซึ่งฮุกส่งให้นโยบายการกระทำตรวจก่อนรัน เครื่องมืออ่าน เขียน และแก้ไขของ Claude เองอยู่ในโปรเซสของมันและทำงานโดยไม่ถูกมองเห็น — และมันถูกเรียกด้วย --dangerously-skip-permissions เพราะไม่เช่นนั้น claude -p แบบไม่โต้ตอบจะค้างตลอดไปกับพรอมต์ของตัวเอง |
พูดให้ชัดคือ มีเพียงฮาร์เนสในตัวเท่านั้นที่รองรับเอเจนต์ย่อย การกำกับระหว่างการรัน การหยุดชั่วคราวและรันต่อ (และด้วยเหตุนั้นจึงรับช่วงงานได้) และการบังคับใช้โหมดเชิงโครงสร้าง Claude Code ไม่ได้สิ่งเหล่านี้เลย
เอเจนต์ที่ ไม่มี อะแดปเตอร์จะถอยกลับไปใช้ Control Center (built-in) — ลูปที่อยู่ภายในเซิร์ฟเวอร์ จึงไม่มี CLI ให้ติดตั้ง — และบันทึกการรันของมันจะระบุ cc-harness เอเจนต์ที่ถูกซีดทุกตัวถูกสร้างขึ้นโดยไม่มีอะแดปเตอร์หรือโมเดล ดังนั้นเอเจนต์ทั้งห้าตัวของเวิร์กสเปซใหม่จะรันที่นั่น บนโมเดลเริ่มต้นของ Anthropic จนกว่าคุณจะตั้งอะแดปเตอร์และโมเดลให้แต่ละเอเจนต์ ตัวเลือก “อะแดปเตอร์เริ่มต้น” ในขั้นตอนเริ่มต้นใช้งานเป็นค่ากำหนดฝั่งไคลเอนต์ที่เซิร์ฟเวอร์ไม่เคยอ่าน และไม่ย้อนไปมีผลกับเอเจนต์ที่สร้างไว้แล้ว
เอเจนต์มาจากไหน
หัวข้อที่มีชื่อว่า “เอเจนต์มาจากไหน”- ถูกซีดมาพร้อมกับเวิร์กสเปซ ทุกเวิร์กสเปซ — ไม่ใช่แค่แห่งแรก — จะได้ CEO หนึ่งคนพร้อมผู้เชี่ยวชาญอีกสี่คน (
qa,architect,engineer,librarian) ที่รายงานต่อ CEO สร้างขึ้นแบบทำซ้ำได้เบื้องหลังเมื่อเวิร์กสเปซถูกสร้าง ดู เวิร์กสเปซและการแยกโดเมน - เพิ่มด้วยมือ ที่ การตั้งค่า → เวิร์กสเปซ → เอเจนต์ การขอให้เอเจนต์จ้างเพื่อนร่วมงานจะไม่สร้างแถวข้อมูล ต้องใช้หน้าจอนั้น
สถานะสด
หัวข้อที่มีชื่อว่า “สถานะสด”เอเจนต์ไม่มีคอลัมน์สถานะที่จัดเก็บไว้ สถานะสดของมันถูกอนุมานจากบันทึกการรันล่าสุดทุกครั้งที่ถูกอ่าน
| สถานะ | ความหมาย |
|---|---|
neverRun |
ยังไม่มีบันทึกการรัน |
running |
มีการรันอย่างน้อยหนึ่งรายการกำลังดำเนินอยู่ |
failed |
การรันล่าสุดเกิดข้อผิดพลาด หรือสถานะความมีชีวิตของมันคือล้มเหลวหรือตายแล้ว |
blocked |
สถานะความมีชีวิตของการรันล่าสุดคือถูกบล็อก หยุดชะงัก หรือวนซ้ำ |
idle |
กรณีอื่นทั้งหมด — เอเจนต์เคยรันมาก่อนและไม่มีอะไรกำลังดำเนินอยู่ |
มีสถานะอีกสองอย่างคือ queued และ succeeded สำหรับการรันแต่ละรายการในแผนผังการรันของการสนทนา รายชื่อเอเจนต์ไม่เคยสร้างสถานะเหล่านี้ เพราะการที่การรันที่จบแล้วเป็นสีเขียวเป็นข้อเท็จจริงเกี่ยวกับการรัน ไม่ใช่เกี่ยวกับเอเจนต์
รายชื่อสถานะออนไลน์แสดงภาพคู่ขนานที่หยาบกว่า ซึ่งสังเคราะห์ขึ้นฝั่งเซิร์ฟเวอร์จากเหตุการณ์การรันสด — กำลังคิด กำลังรัน ถูกบล็อกเพื่อรออนุมัติ เสร็จแล้ว — และนี่คือสิ่งที่ทำให้เอเจนต์ปรากฏเคียงข้างมนุษย์ ดู การทำงานร่วมกันแบบหลายคน
แนวคิดที่เกี่ยวข้อง
หัวข้อที่มีชื่อว่า “แนวคิดที่เกี่ยวข้อง”- วงจรชีวิตการสั่งงานเอเจนต์: เกิดอะไรขึ้นเมื่อเอเจนต์ถูกรันจริง
- โหมด: การตั้งค่าต่อบทสนทนาที่กำหนดชุดเครื่องมือของเอเจนต์
- การทำงานร่วมกันแบบหลายคน: เอเจนต์ในฐานะตัวตนหลัก สถานะออนไลน์ และปุ่มปรับความเป็นอิสระ
- แซนด์บ็อกซ์และความปลอดภัย: สิ่งที่จำกัดการรันในปัจจุบัน
- การตั้งค่าเอเจนต์: รายการฟิลด์ทั้งหมด