ใคร ด้วยหลักฐานอะไร อนุญาตให้เอเจนต์ทำการเปลี่ยนแปลงนี้?

Saphan Studio กำกับดูแลฟลีตของ AI coding agent บนโครงสร้างพื้นฐานของคุณเอง โดยผูกงานของเอเจนต์เข้ากับหลักฐานและการตัดสินใจที่บันทึกไว้ ภายใต้อำนาจของมนุษย์

สำหรับหัวหน้าทีมวิศวกรรมที่ต้องเซ็นรับผลงานของเอเจนต์ ทีมแพลตฟอร์มที่รัน Claude Code, Codex, Qwen Code หรือโมเดลภายในบนเครื่องของตนเอง และผู้รับผิดชอบด้านความปลอดภัยหรือการตรวจสอบที่ต้องย้อนรอยการเปลี่ยนแปลงในภายหลัง

ฟลีตของคุณทำงานในภาษาของทีมคุณ — ส่วนบันทึกตอบผู้ตรวจสอบเป็นภาษาอังกฤษ EN العربية Polski

Solo · private preview

Saphan Studio สำหรับนักพัฒนาหนึ่งคน หนึ่งเครื่อง ฟรี ลงทะเบียนเพื่อเข้าถึง private preview

คุณสนใจเรื่องใด? ไม่บังคับ

Saphan Systems Inc. จะใช้ข้อมูลนี้เพื่อดำเนิน Solo preview และติดต่อเรื่องการเข้าถึงเท่านั้น อ่าน ประกาศความเป็นส่วนตัว

มาตรการควบคุมหลักถูกนำมาใช้แล้วและใช้งานทุกวันในการสร้าง Saphan เอง Solo กำลังเข้าสู่ private preview: เปิดรับลงทะเบียนแล้ว และเราจะติดต่อคุณเมื่อเปิดให้เข้าใช้ งานในโรดแมปถูกระบุไว้ทุกที่ที่ปรากฏ

ประเมินให้ทีมอยู่ใช่ไหม? Solo คือหนึ่งเครื่องทำงาน เส้นทางของทีมเริ่มจากการเป็น design partner — ต้องทำอะไรบ้าง →

สิ่งที่ Saphan Studio มอบให้องค์กร

การกำกับดูแล → อำนาจของมนุษย์ รวมถึงการมอบอำนาจแบบจำกัดทุกครั้ง ถูกลงนามและอยู่ในบันทึก ความเงียบไม่ใช่ความยินยอม และการปฏิเสธคือข้อมูล

ความปลอดภัย → เอเจนต์ถูกถือว่าไม่น่าเชื่อถือแม้จะไม่ได้ประสงค์ร้าย: การรันถูกกักในแซนด์บ็อกซ์ และการเชื่อมต่อออกถูกจำกัดด้วยนโยบายในทุกการรัน โดยสิ่งที่กว้างกว่านั้นจะเปิดได้ก็ต่อเมื่อมีการบันทึกไว้เท่านั้น

ต้นทุน → ทุกการรันถูกเสนอราคาก่อนเริ่ม และลงบัญชีข้างการตัดสินใจที่อนุมัติมัน

เอนเตอร์ไพรส์ → control plane บันทึก และตัวตนอยู่ในโครงสร้างพื้นฐานของคุณ พร้อมการส่งออกข้อมูลตรวจสอบตั้งแต่วันแรก

มาตรการควบคุม → สิ่งที่มีอยู่แล้ววันนี้ ทีละมาตรการ — หนึ่งแถวต่อหนึ่งมาตรการ: มันทำอะไร ปฏิเสธอะไร และบันทึกเก็บอะไรไว้

การปฏิบัติตามข้อกำหนด → หลักฐานที่ ISMS ที่มีอยู่ของคุณต้องการ — ออกแบบให้แม็ปเข้ากับ ISO 27001, ISO/IEC 42001, SOC 2, NIST AI RMF และ EU AI Act

ฟีเจอร์ของผลิตภัณฑ์

รันไทม์ที่รองรับ → Claude Code, OpenAI Codex, Qwen Code, Factory Droid และ Saphan Agent-Loop — ภายใต้ control plane เดียว

Bench → สิ่งที่ฮาร์ดแวร์ของคุณเองให้บริการได้จริง — วัดบนเครื่องของคุณ ไม่ใช่สันนิษฐานเอาจากการ์ดโมเดล

MCP server → บันทึกตอบคำถามได้จากที่ที่คุณแชตอยู่แล้ว: สถานะฟลีต เกตที่รอคุณ ค่าใช้จ่ายตามแกนใดก็ได้ — อ่านอย่างเดียว อยู่หลัง OAuth มาตรฐาน โดยทุกการเข้าถึงถูกบันทึกล็อก

Discovery → ระบบเก่าแก่ที่ไม่มีใครเข้าใจอย่างถ่องแท้ ส่งคืนกลับมาเป็นความเข้าใจที่อ้างอิงหลักฐานและถูกลงนาม — รู้ ไม่ใช่เปลี่ยน พิสูจน์แล้วในงานว่าจ้างจริง ขณะนี้กำลังถูกย้ายมานั่งบน Saphan Protocol

เอกสารและรายงาน → เอกสารกระบวนการและรายงานการส่งมอบที่สร้างจากบันทึกโดยตรง — ทุกตัวเลขสืบย้อนได้ถึงแถวที่ลงนามหรือเอกสารที่คอมมิตแล้ว

สิ่งที่คุณได้ — ตามหน้าที่ของคุณ

สามคน สามคำถาม หนึ่งบันทึก

Saphan ไม่แทนที่เอเจนต์ โมเดล หรือ Git ของคุณ แต่วางงานของพวกมันไว้หลังประตูตรวจที่มนุษย์เป็นผู้ตัดสิน และเก็บหลักฐานไว้ข้างการตัดสินใจนั้น

01

คุณนำทีมวิศวกรรมและต้องเซ็นรับผลงานของเอเจนต์

ปัญหา Pull request จากเอเจนต์มาเร็วกว่าที่ใครจะอ่านทรานสคริปต์ทัน และการรีวิวกลายเป็นพิธีกรรม

ใน Saphan เอเจนต์กลับมาพร้อมข้อกล่าวอ้างและหลักฐานแนบ — diff ผลการทดสอบ การตรวจไมเกรชัน ประตูตรวจปฏิเสธการอนุมัติที่ขาดหลักฐานตามที่คำสั่งกำหนด

สิ่งที่คุณเห็น หนึ่งหน้าจอต่อหนึ่งการตัดสินใจ: อ้างอะไร พิสูจน์อะไรแล้ว ยังค้างอะไร — และหนึ่งคำสั่งเพื่อตัดสิน

ดูการเปลี่ยนแปลงหนึ่งรายการตั้งแต่ต้นจนจบ →

02

คุณดูแลแพลตฟอร์ม: หลายเอเจนต์ หลายเครื่อง กฎชุดเดียว

ปัญหา แต่ละรันไทม์มีนิสัยแซนด์บ็อกซ์ของตัวเอง และไม่มีใครบอกได้ในภายหลังว่าอะไรเข้าถึงได้จากที่ไหน

ใน Saphan เครื่องเข้าร่วมด้วยการกระทำที่ชัดแจ้งของเจ้าของ ทุกการรันถูกกักโดยระบบปฏิบัติการ ไม่เช่นนั้นก็ถูกปฏิเสธ Claude Code, Codex, Qwen Code และโมเดลภายในทำงานภายใต้คำสั่ง ประตูตรวจ และบันทึกชุดเดียวกัน

สิ่งที่คุณเห็น ต่อการรัน: แซนด์บ็อกซ์ใดกักมัน ไดเรกทอรีใดยังเขียนได้ ใช้จ่ายเท่าไร ไบนารีใดทำงาน

Controls — สิ่งที่มีอยู่ ทีละแถว →

03

คุณรับผิดชอบด้านความปลอดภัยหรือการตรวจสอบ และต้องย้อนรอยการเปลี่ยนแปลง

ปัญหา “ซีเนียร์ดูแล้ว” ไม่ใช่หลักฐาน และทรานสคริปต์แชตไม่ใช่การตัดสินใจ

ใน Saphan ทุกการตัดสินใจคือแถวที่ลงนาม: ใครตัดสิน อะไร เมื่อไร บนหลักฐานใด ภายใต้อำนาจใด บุคคลที่สามตรวจสอบได้ด้วยกุญแจสาธารณะ root เพียงอย่างเดียว

สิ่งที่คุณเห็น บันทึกประตูตรวจและบันทึกการรัน ส่งออกเป็น Markdown, CSV, PDF หรือ HTML สำหรับคนที่ไม่ได้อยู่ในห้อง

Audit and compliance ในเอกสาร ↗

รันไทม์ภายใต้ governance · ใช้งานได้วันนี้

เปลี่ยนเอเจนต์ โดยคงกฎชุดเดิม

Saphan กำกับงานรอบรันไทม์ทั้งหมด: การรับเข้า ตัวตนที่แยกจากกัน dispatch, confinement, ต้นทุน หลักฐาน review และการกระทำของมนุษย์ การเปลี่ยนโมเดลหรือ CLI ไม่สร้างระบบปฏิบัติการชุดที่สอง

  • Claude Code linux · macos
  • OpenAI Codex linux · macos
  • Qwen Code linux · macos
  • Factory Droid linux · macos
  • Saphan Agent-Loop linux · macos
  • Docker / Podman oci images

ป้ายระบุแพลตฟอร์มที่แต่ละรันไทม์ถูกทดสอบใช้งานภายใต้การกักของ Saphan ตารางฉบับหลัก พร้อมสิ่งที่ยังไม่ได้พิสูจน์ อยู่ ในเอกสาร ↗

01

เอเจนต์เขียนโค้ดจากผู้ให้บริการ

Claude Code, OpenAI Codex, Qwen Code และ Factory Droid ทำงานเป็น backend ที่มีชื่อและแยกตาม seat ภายใต้ stream, gate และ ledger ชุดเดียวกัน

02

Saphan Agent-Loop

ลูปเรียกเครื่องมือในตัวขับโมเดลภายในผ่าน endpoint ที่เข้ากันได้กับ OpenAI รวมถึง Ollama และ vLLM โดยไม่พึ่ง CLI ของผู้ให้บริการบนเส้นทางสำคัญ

03

เครื่องมือแบบกำหนดผลแน่นอน

compiler, test runner, linter และ formatter เป็นผู้กระทำที่บันทึกไว้โดยไม่มีต้นทุนโมเดล เป็นงานที่ถูกกำกับ ไม่ใช่การหนีออกไปยัง shell โดยไร้ร่องรอย

04

การทำงานผ่าน Docker และ Podman

เอเจนต์และ toolchain ทำงานในอิมเมจ OCI ที่ตรึงด้วย digest พร้อม root แบบอ่านอย่างเดียว ผู้ใช้ non-root, mount ที่จำกัด และเพดาน runtime ระบบวัดอิมเมจที่ระบุบนเครื่องที่ระบุก่อน dispatch และปฏิเสธก่อน spawn เมื่อ confinement ไม่เพียงพอ

การอนุมัติของมนุษย์ไปถึง Git forge กำลังพัฒนา

Pull request ไม่ได้ข้ามบันทึก

Saphan ผูกการตัดสินใจ merge ของมนุษย์กับ head ของ pull request ที่ระบุ ส่งอำนาจนั้นไปยัง forge และรับรู้การ merge ด้วยการสังเกต repository — ไม่ใช่ด้วยการเชื่อคำตอบ API ที่สำเร็จ

01

การอนุมัติที่ลงนามสำหรับ head ที่ระบุ

Gate บันทึกผู้กระทำ การตัดสินใจ และ SHA ของ PR head การ push ใหม่ทำให้อำนาจนั้นหมดอายุ แทนที่จะขยายไปยังโค้ดที่เปลี่ยนไปโดยเงียบๆ

02

การบังคับใช้ที่ฝั่ง forge

สถานะ saphan/gate ที่บังคับใช้และ branch protection หยุด merge ที่ไม่ผ่าน gate บน forge เอง Saphan ไม่ได้หวังพึ่งเพียงพฤติกรรมของ UI

03

การระบุที่มาใน Git object

Forge สร้าง merge commit พร้อม attribution trailers ของ Saphan บันทึกจะเปลี่ยนเป็น merged หลังจาก fetch และตรวจสอบ commit นั้นแล้วเท่านั้น

04

GitHub และ Gitea

สัญญาของ forge และตัวควบคุมเชิงลบถูกทดสอบกับรีโพซิทอรี GitHub และ Gitea 1.26.4 อะแดปเตอร์ forge เพิ่มเติมตามมาตามลำดับความจำเป็นของ design partner

เริ่มคนเดียว และใช้ control plane เดิมเมื่อฝูงเติบโต

หนึ่งระบบ สามขนาดการทำงาน

Solo

นักพัฒนาหนึ่งคน เครื่องหนึ่งเครื่อง ฟรีตลอดไป

เอนจินและ web console ในเครื่อง พร้อม CLI และ workflow ใน editor โดยไม่มีเซิร์ฟเวอร์ส่วนกลาง ประตูเปิดสู่งานเอเจนต์ที่มีวินัย ไม่ใช่ trial ที่หมดอายุ

ความสามารถที่รวมอยู่
  • engine และ web console แบบโลคัล
  • CLI และ workflow ใน editor
  • ขอบเขตตัวตนในเครื่อง
  • dispatch ที่กำกับ gate และการกระทำที่ลงนาม
  • ledger ต้นทุนและผลลัพธ์พร้อมหลักฐาน
  • บันทึกและ projection ในเครื่อง
  • ไม่มีมิเตอร์จำนวนเอเจนต์หรือขนาดฟลีต
เข้าร่วม preview →

Team

บันทึกการปฏิบัติงานเดียวสำหรับคนและเครื่อง

ตัวตนที่ Saphan จัดการแบบ SaaS และสัญญาณแจ้งเตือนมือถือที่ไม่มีเนื้อหา ส่วนฟลีต โค้ด และบันทึกการปฏิบัติงานอยู่บนโครงสร้างพื้นฐานของคุณ

ทุกอย่างใน Solo พร้อมเพิ่มเติม…
  • saphan-oauth ที่ Saphan ดำเนินการและวงจรชีวิตตัวตน
  • ฟลีต โค้ด หลักฐาน และบันทึกอยู่กับลูกค้า
  • บุคคล เครื่อง และ seat ที่แยกจากกัน
  • ช่องทีมและ Direct Messages ใน Slack — ส่งมอบแล้ว แบบเขียนออกเท่านั้น
  • สัญญาณ push มือถือที่ไม่มีเนื้อหาบันทึก
  • การบังคับใช้ PR สำหรับ GitHub และ Gitea
  • image runner ที่ต่อยอดจาก base image ของ Saphan
  • PostgreSQL แบบ on-prem
  • Microsoft Teams — connector ถัดไป ยังไม่ส่งมอบ
ทำความเข้าใจ Team →

Enterprise

โครงสร้างพื้นฐานของคุณ อำนาจที่ลงนาม หลักฐานพร้อมตรวจสอบ

การควบคุมองค์กรแบบ self-hosted ตัวตนเครื่อง นโยบาย การกักบริเวณ และการส่งออกหลักฐานสำหรับงานภายใต้กฎระเบียบ

ทุกอย่างใน Team พร้อมเพิ่มเติม…
  • saphan-oauth ภายในหรือ IdP ใดๆ ของลูกค้าที่รับไว้
  • control plane, ฟลีต โค้ด หลักฐาน และบันทึกอยู่กับลูกค้า
  • อิมเมจ runner ใดๆ หลังการวัด confinement ของอิมเมจที่ระบุ
  • การรับเครื่อง อำนาจจำกัดขอบเขต และการเข้าถึงแบบ fail-closed
  • การส่งออก audit และการแม็ปหลักฐาน compliance
ตรวจมาตรการที่ส่งมอบแล้ว →

สองทางในการเริ่ม

คนเดียว สัปดาห์นี้ หรือเป็นทีม ในฐานะ design partner

Solo · private preview

หนึ่งนักพัฒนา หนึ่งเครื่องทำงาน ฟรี — ถาวร

  • สำหรับใครวิศวกรรายบุคคลที่ต้องการทำงานกับเอเจนต์อย่างมีระเบียบบนเครื่องของตนเอง
  • สิ่งที่คุณได้เอนจินภายในเครื่อง คอนโซลเว็บ CLI และการทำงานในเอดิเตอร์; ประตูตรวจ การกระทำที่ลงนาม และบันทึก — ไม่มีเซิร์ฟเวอร์กลาง
  • สถานะปัจจุบันเปิดรับลงทะเบียนแล้ว เราจะติดต่อคุณเมื่อเปิดให้เข้าใช้ preview
ลงทะเบียน Solo preview →

Team · design partner

หนึ่งทีม หนึ่งรีโพ บนโครงสร้างพื้นฐานที่คุณควบคุม

  • สำหรับใครทีมวิศวกร 50–500 คนที่มีข้อผูกพันด้าน compliance จริง — กำลังคัดเลือกพาร์ตเนอร์สองถึงสามราย
  • เริ่มจากตรงไหนหนึ่งทีมนำร่องและหนึ่งรีโพซิทอรี โฮสต์เอง; การติดตั้งทำร่วมกับผู้ก่อตั้ง
  • ส่วนของคุณราวหนึ่งชั่วโมงต่อสัปดาห์ และแรงเสียดทานจริงของคุณ: กรณีขอบกลายเป็นกฎของโปรโตคอล ในรูปนามธรรม ไม่ใช่รายละเอียดภายในของคุณ
  • สิ่งที่คุณได้รับประตูตรวจบนงานจริงของคุณ ผลพลอยได้ด้านการตรวจสอบ เงื่อนไขผู้ก่อตั้งเป็นลายลักษณ์อักษรก่อนมีราคาสาธารณะใด ๆ — และทุกอย่างยังเป็นของคุณหากถอนตัว
ติดต่อเราเรื่อง design partnership →

ข้อตกลง พูดกันตรง ๆ — ทั้งห้าข้อ ↓

เอกสาร · เฉพาะสิ่งที่มีอยู่จริง

อ่านสิ่งที่ผลิตภัณฑ์ทำได้ในวันนี้

Saphan Docs เขียนจากโค้ดที่มีอยู่และพฤติกรรมของผลิตภัณฑ์ที่ตรวจสอบแล้ว ครอบคลุมการติดตั้ง การกำหนดค่า ความปลอดภัย ธรรมาภิบาล การตรวจสอบ และการปฏิบัติงาน ไม่มีแผนงาน ไม่มีคำสัญญา

เปิด Saphan Docs ↗
01 · ติดตั้งและกำหนดค่า02 · ปฏิบัติการฟลีต03 · กำกับและรักษาความปลอดภัย04 · ตรวจสอบบันทึก

มันคืออะไร

01

โต๊ะทำงาน

Saphan Studio คือที่ที่คุณรันฟลีตเอเจนต์ AI: บรีฟออกไป ผลตอบกลับพร้อมหลักฐานเข้ามา ตัดสินใจที่เกตได้จากอีดิเตอร์ของคุณ คุณอ่านผลลัพธ์ ไม่ใช่ทรานสคริปต์

02

หลักประกัน

งานจะผ่านได้ก็ต่อเมื่อมีหลักฐานแนบและบันทึกการตัดสินใจของผู้มีอำนาจ การอนุมัติโดยมนุษย์เป็นค่าเริ่มต้น ส่วนระบบอัตโนมัติแบบจำกัดขอบเขตต้องอาศัยการมอบอำนาจที่ชัดเจนและลงนามโดยมนุษย์

03

บันทึก

ทุกอย่างข้างต้นลงจอดเป็นไฟล์ธรรมดาใน git ของคุณ — ความจำเชิงปฏิบัติการของงาน สร้างมาให้ไหลเข้าสู่เครื่องมือตรวจสอบที่องค์กรของคุณรันอยู่แล้ว

สิ่งที่มีอยู่แล้ววันนี้ — ทีละมาตรการควบคุม

นี่ไม่ใช่รายการฟีเจอร์ แต่คือพื้นฐานที่องค์กรได้รับตั้งแต่วันนี้ — หนึ่งแถวต่อหนึ่งมาตรการ: มันทำอะไร และทิ้งอะไรไว้ในบันทึกสำหรับคนที่ไม่ได้อยู่ตรงนั้น

มาตรการควบคุมสิ่งที่มีอยู่สิ่งที่บันทึกเก็บไว้
บันทึกการกำกับดูแลที่ลงนาม ผู้กระทำ การมอบอำนาจ เครื่อง ที่นั่ง และสิทธิ์ทั้งหมดอยู่ในบันทึกแบบต่อท้ายอย่างเดียว (append-only) ที่ลงนามด้วย Ed25519 ทะเบียนที่มนุษย์อ่านได้ทุกฉบับเป็นเพียงภาพฉายของบันทึกนี้ — สร้างใหม่ได้ ไม่ใช่ต้นทาง ประวัติการกำกับดูแลทั้งหมด ตรวจสอบได้โดยบุคคลที่สามที่ถือเพียงกุญแจสาธารณะราก — โดยไม่ต้องเชื่อถือเครื่องที่สร้างบันทึกนั้น
ไม่มีการอนุมัติโดยปริยาย ไม่มี timeout ที่กลายเป็นความยินยอมและไม่มี auto-accept โดยปริยาย เกตต้องมีการตัดสินใจของมนุษย์หรือการมอบอำนาจแบบชัดเจนและจำกัดจากนโยบายที่มนุษย์ลงนาม ไม่มีค่าเริ่มต้นและปฏิเสธการตัดสินที่ผิดลำดับ เอนจินไม่ให้อำนาจตัวเองและไม่ทำ merge หนึ่งแถวต่อหนึ่งการตัดสิน: ผู้กระทำ คำตัดสินจากชุดคำปิด เวลา และสายอำนาจ “Merged” ไม่เคยถูกประกาศ — สังเกตจาก merge commit จริงเท่านั้น
การตัดสินที่ตรวจพบการแก้ไข การยอมรับแต่ละครั้งเป็นชุดข้อมูลที่ผูกกุญแจและตรวจสอบแล้ว และถูกตรวจซ้ำตอน merge แก้ช่องใดภายหลัง การตรวจสอบจะล้ม ชุดข้อมูลนั้น และผลการตรวจสอบตอน merge
ข้อเสนอ ≠ การตัดสิน คำปรึกษาจาก AI หรือมนุษย์ถูกบันทึกเป็นความเห็น ส่วนการตัดสินเป็นการกระทำแยกของผู้มีอำนาจ อำนาจอัตโนมัติต้องย้อนกลับไปถึงการมอบอำนาจแบบจำกัดที่มนุษย์ลงนาม และการตัดสินสวนทางกับข้อเสนอก็ถูกบันทึก แถวข้อเสนอและแถวการตัดสินแยกกันในทุกประตู — ไม่เพียงว่าตัดสินอะไร แต่ใครเสนออะไร
ตัวตนของเครื่องด้วยใบรับรอง ไม่มี endpoint สำหรับลงทะเบียน ไม่มี join token เครื่องถูกรับเข้าโดยการกระทำที่ชัดแจ้งของเจ้าของ ผูกกับใบรับรอง control plane เชื่อมต่อออกไปข้างนอกเท่านั้น และเครื่องรันไม่ถือ credential ใดของ control plane การรับเข้าในบันทึกที่ลงนาม และห่วงโซ่ใบรับรอง
อำนาจที่มอบหมายและมีขอบเขต การมอบอำนาจที่ลงนามโดยราก มีขอบเขต สายงาน และช่วงเวลาที่ใช้ได้ วันหมดอายุคือเพดาน ไม่ใช่ตัวจุดชนวน การปลดผู้กระทำมีผลทันที ไม่ว่าการมอบอำนาจใดจะยังไม่หมดอายุ การมอบอำนาจ พร้อมลายเซ็นครอบทุกช่อง — ใครให้อะไรแก่ใคร ถึงเมื่อไร
กฎประจำที่ให้สัตยาบัน เอกสารที่กำกับวิธีทำงานถูกลงนามโดยรากเข้าไปใน manifest ที่มีหมายเลขลำดับ เอกสารใดก็ตรวจสอบย้อนกลับถึงรากได้ เอเจนต์ทำงานภายใต้กฎที่พิสูจน์ได้ว่าได้รับแล้ว manifest และบันทึกของแต่ละการรันว่ากฎใดถูกฉีดเข้าไป — พร้อมแฮชของมัน
การกักบริเวณระดับ OS — ในเครื่อง นโยบายเขียนแบบปฏิเสธเป็นค่าเริ่มต้นจาก sandbox ของระบบปฏิบัติการเอง — Seatbelt บน macOS, Bubblewrap บน Linux — ประกอบขึ้นสำหรับแต่ละการรันก่อนที่เอเจนต์จะเริ่ม หากไม่มี sandbox การรันจะถูกปฏิเสธ ไม่ใช่ลดระดับความปลอดภัย บันทึกการรันระบุเครื่องมือที่กักบริเวณ และไดเรกทอรีที่ยังเขียนได้ — ข้อกล่าวอ้างที่ทีมของคุณทำซ้ำได้
การกักบริเวณระดับ OS — เครื่องระยะไกล การกักบริเวณที่บังคับโดยเคอร์เนล (Landlock) สำหรับการรันที่ส่งผ่าน SSH ความสามารถในการกักบริเวณของเครื่องถูกวัดก่อนที่งานจะถูกส่งไปที่นั่น เครื่องที่ยังไม่ถูกวัด หรือวัดแล้วว่าทำไม่ได้ จะปฏิเสธการรัน ความสามารถที่วัดได้บนแถวที่ลงนามของเครื่อง และบันทึกการรันที่ระบุว่าอะไรเป็นตัวบังคับ
การเชื่อมต่อออกคือรายการ ทุกการรันจะเข้าถึงเครือข่ายได้ผ่านประตูที่นโยบายของมันกำกับเท่านั้น: ปลายทางถูกอนุญาตก็ต่อเมื่อนโยบายอนุญาตทั้งโฮสต์และพอร์ต การรันที่ไม่ประกาศนโยบายได้รับรายการพื้นฐานของ backend — โมเดลของตัวเองและรีจิสทรีแพ็กเกจ — และไม่มีอะไรอื่น การเปิดเครือข่ายเป็นการกระทำที่ถูกบันทึกพร้อมเหตุผล โฮสต์ที่ตัดเครือข่ายไม่ได้จะปฏิเสธการรัน แทนที่จะเริ่มแบบเปิด digest ของนโยบายที่คอมไพล์แล้วบนแถวของการรัน — รายการใดกำกับการรันนี้ การตัดสินต่อการเชื่อมต่อยังไม่ถูกบันทึก นั่นคือข้อจำกัดของรุ่นนี้ที่ระบุไว้ ไม่ใช่ของการออกแบบ
ไม่มีช่องทางลัดระหว่างเอเจนต์ เอเจนต์ประสานงานกันผ่านพื้นผิวที่ถูกบันทึกเท่านั้น — คำสั่งงาน ไฟล์ช่องทางใน worktree ของสายงานเองที่ถูกนำเข้าบันทึก ประตูตัดสิน และกล่องจดหมายแบบเพิ่มอย่างเดียวสำหรับคำสั่งของเจ้าของ ไม่มีการส่งข้อความระหว่างเอเจนต์ในผลิตภัณฑ์ “ใครบอกอะไรกับใคร เมื่อไร” คือคำค้น ไม่ใช่การสอบถาม — ประวัติการประสานงานของสายงาน เล่นซ้ำได้จากบันทึก
การปฏิเสธคือข้อมูล ทุกการปฏิเสธ — จากเครื่องยนต์ การอนุญาต สคีมา หรือนโยบาย — เป็นแถวที่บันทึกไว้โดยไม่มีต้นทุน พร้อมประเภทที่มีชื่อ สาเหตุการปฏิเสธถูกบันทึก ไม่เคยส่งกลับผ่านสาย สมุดบัญชีการปฏิเสธ: มาตรการควบคุมที่ทำงานจริง ไม่ใช่แค่มีอยู่
การเฝ้าระวัง — เป้าหมาย Prometheus เดมอนที่ให้บริการเปิด GET /metrics ในรูปแบบข้อความมาตรฐานของ Prometheus: การรันแยกตามสถานะและแบ็กเอนด์ การปฏิเสธแยกตามประเภท การตัดสินที่ประตูแยกตามประตูและคำตัดสิน เวอร์ชันสคีมาของที่เก็บ ค่าของ label เป็นชื่อประเภทเท่านั้น — ไม่มีชื่อสายงาน พาธ หรือชื่อผู้กระทำ การปฏิเสธเป็นเมตริกชั้นหนึ่ง — ในสถาปัตยกรรมนี้ การปฏิเสธคือสัญญาณด้านความปลอดภัย ไม่ใช่เสียงรบกวน ดึงข้อมูลด้วย Prometheus ที่คุณใช้อยู่แล้ว ไม่ต้องติดตั้งอะไรเพิ่ม
ค่าความลับอยู่นอกบันทึก ชนิดข้อมูลการตั้งค่าและ dispatch พกชื่อกับการอ้างอิง ไม่ใช่ค่าความลับ ไฟล์กุญแจถูกตรวจสิทธิ์ก่อนใช้ และการรันระยะไกลปิดการส่งต่อ environment กระบวนการที่ถือ credential อาจใช้ค่าเพื่อยืนยันตัวตนโดยไม่คัดลอกลงบันทึกงาน การตั้งค่าโดยชื่อ ไม่มีค่าความลับในบันทึก หลักฐาน ล็อก แถวต้นทุน หรือไฟล์ส่งออก
OAuth 2.1 บนพื้นผิวการจัดการ ป้องกันด้วย bearer โดย Team ยืนยันตัวตนผ่าน SaaS saphan-oauth ที่ Saphan ดำเนินการ ส่วน Enterprise รัน saphan-oauth ภายในหรือรับ IdP ใดๆ ของลูกค้าผ่านรายการ issuer ที่มนุษย์อนุมัติ มี scope class การแบ่งระดับแถวต่อผู้เช่า และ fail-closed เป็นค่าเริ่มต้น ล็อกการเข้าถึงระดับตรวจสอบบัญชีบนทุกช่องทาง — รหัสสถานะตรงไปตรงมา ไม่มีค่าหรือ query string ถูกบันทึก
การกำกับต้นทุน ใบเสนอราคาและเพดานแข็งต่อการรัน กำหนดก่อนส่งงาน ตรวจความจุก่อนเริ่ม ชั้นการเรียกเก็บเงินต่อที่นั่ง ต้นทุนจริงและส่วนต่างอยู่ข้างหลักฐาน ไม่ใช่บนใบแจ้งหนี้อีกใบ สมุดบัญชีต้นทุน ต่อสายงานและต่อประตู — “การเปลี่ยนแปลงนี้ราคาเท่าไร” ได้คำตอบบรรทัดเดียวเหมือน “ใครอนุมัติ”
การตรึงห่วงโซ่อุปทาน ไบนารีของเอเจนต์ถูกส่งพร้อม digest ที่คำนวณบนเครื่องผู้รับ และตัวตนถูกตรวจซ้ำ ณ ที่ที่มันทำงาน ต่อการรัน: digest ของไบนารี เวอร์ชัน แฮชของการตั้งค่า กฎประจำที่ถูกฉีดเข้าไปและแฮชของมัน
ที่เก็บบันทึกของคุณ ที่เก็บบันทึก PostgreSQL บนโครงสร้างพื้นฐานที่คุณควบคุม ตั้งค่าโดยชื่อ credential ผ่านชื่อตัวแปรเท่านั้น โค้ด หลักฐาน run และบันทึกการปฏิบัติงานไม่ผ่านโครงสร้างพื้นฐานของ Saphan Team ส่งตัวตนไปยัง OAuth ของ Saphan ส่วน Enterprise เก็บตัวตนไว้ภายใน ทั้งสองแบบใช้สัญญาณมือถือที่มีเพียง gate id แบบทึบและจำนวน badge ได้ ฐานข้อมูลของคุณ บวกไฟล์ธรรมดาใน git ของคุณ อ่านได้โดยไม่ต้องใช้เครื่องมือของเรา
พิสูจน์ด้วยการทดสอบ ไม่ใช่คำกล่าวอ้าง สถานการณ์แบบครบวงจรรันกับไบนารีจริง: วินัยที่ประตู การล็อกการส่งงาน การต้านทาน injection คำสั่งที่ส่งผิดทาง กระบวนการ OAuth การป้องกันด้วย bearer ความสอดคล้องของภาพฉาย ผลการทดสอบความสอดคล้อง ทำซ้ำได้บนการติดตั้งของคุณ

Fail-closed คือธรรมเนียมของบ้านนี้: ค่าตั้งค่าที่ไม่รู้จัก sandbox ที่หายไป ที่อยู่ bind ที่กำกวม — แต่ละอย่างถูกปฏิเสธพร้อมประเภทที่มีชื่อ แทนที่จะถอยไปสู่ท่าทีที่อ่อนแอกว่า ที่ใดที่มาตรการยังไม่บังคับใช้ เอกสารบอกไว้ตรง ๆ และแผนงานระบุชื่อมัน

แถวเหล่านี้สอดคล้องกับ ISO 27001, ISO/IEC 42001, SOC 2, NIST AI RMF และ EU AI Act อย่างไร →

Saphan Studio — โต๊ะทำงาน

การกำกับดูแลคือหลักประกัน ส่วนนี้คืองานประจำวัน

01

บรีฟออกไป

งานเริ่มต้นเป็นคำสั่งงาน (order): บรีฟที่ครบถ้วนในตัวเอง พร้อมขอบเขต ข้อจำกัด และมาตรฐานการพิสูจน์ เอนจินส่งมันไปยังเอเจนต์ของคุณ — ไม่มีบริบทใดหล่นหายในหน้าต่างแชต

02

ผลตอบกลับเข้ามา

เอเจนต์กลับมาพร้อมผลตอบกลับที่มีหลักฐานกำกับ — ข้อกล่าวอ้างพร้อมหลักฐานพิสูจน์แนบมา คุณอ่านผลลัพธ์และวิเคราะห์ diff ไม่ใช่ทรานสคริปต์ ความต่างคือหนึ่งวันทำงานเต็ม ๆ

03

ตัดสินใจในอีดิเตอร์ของคุณ

ภาพฉายของฟลีตอาศัยอยู่ใน VS Code: อะไรกำลังรัน อะไรรอคุณอยู่ หนึ่งคำสั่งต่อหนึ่งการตัดสินใจ เกตการ merge ได้โดยไม่ต้องออกจากไฟล์ที่คุณกำลังอ่านอยู่

04

สะพาน (the bridge)

ทุกโปรเจกต์พกสะพานของมันเอง: คำสั่งงาน การตัดสินใจ ข้อค้นพบ — ความจำเชิงปฏิบัติการของงาน เป็นไฟล์ธรรมดาใน git ของคุณ Studio ส่งมอบมันมาให้ และโค้ดเบสของคุณได้รับหนึ่งชุดตั้งแต่วันแรก วิธีการมีบ้านอยู่ก่อนที่เอเจนต์ตัวแรกจะเริ่มรัน

หนึ่งการเปลี่ยนแปลง ตั้งแต่ต้นจนจบ ข้อมูลตัวอย่าง

payments-refactor — จากคำสั่งถึงบันทึก

หนึ่งสตรีม หนึ่งตัวระบุ ตัวเลขชุดเดียวกันในทุกขั้น เนื้อหาด้านล่างเป็นตัวอย่างประกอบ ไม่ใช่บันทึกจากระบบจริง; ไม่มีสิ่งใดที่นี่เป็นภาพหน้าจอจากระบบของลูกค้า

01

คำสั่งกำหนดขอบเขตและมาตรฐานการพิสูจน์

งานเริ่มจาก brief ที่สมบูรณ์ในตัวเอง: อะไรอยู่ในขอบเขต อะไรไม่อยู่ และอะไรนับเป็นหลักฐาน ถ้าเอเจนต์ต้องเดา ข้อบกพร่องอยู่ที่ brief

# ORDER — payments-refactor · wave 1
Stream: payments-refactor · Base: main @ 4f21c09 · Protocol: saphan-protocol v1.0

## Scope (IN)  PaymentProvider interface per ADR-0007 · three adapters
            · retries with idempotency keys — migration 0042, up AND down
## Proof standard  build green · full suite as passed-of-total, skipped named
            · migration 0042 proven up + down on a schema copy
            · adapter parity: fixture diff empty · goldens untouched
## Stops  STOP-2: full return before merge. Merge is human-only, from the gate.
02

เอเจนต์คืนข้อกล่าวอ้าง — แต่ละข้อพร้อมหลักฐาน

คุณอ่านผลลัพธ์ ไม่ใช่ทรานสคริปต์ ทุกตัวเลขมาพร้อมคำนิยาม; ตัวเลขลอย ๆ ไม่ใช่หลักฐาน

# RETURN — payments-refactor · STOP-2
Executor: agent-7 · Commits: 6 (head a3f9e12) · Base: main @ 4f21c09

1. PaymentProvider extracted; 3 providers behind one interface.
   → diff: 14 files (+612 −208) · goldens untouched
2. Retries are idempotent under duplicate delivery.
   → TestRetryIdempotency: 200 duplicate deliveries, 1 charge
3. Migration 0042 applied on a copy of the production schema.
   → up 1.2s · down: not run — see Open questions

tests: 124 of 124 passed, 0 skipped · build: green
03

หลักฐานที่ขาดคือการปฏิเสธ พร้อมระบุเหตุผล

คำสั่งกำหนดให้พิสูจน์ไมเกรชันทั้งสองทาง ผลตอบกลับพิสูจน์เพียงทางเดียว ประตูตรวจไม่ยอมให้พูดข้ามไปได้

$ saphan gate payments-refactor --gate stop-2 --actor marcin
[refused] proof-standard-unmet — migration 0042: down path not proven
owed: migration 0042 down · nothing advanced · the gate holds · nothing was merged
04

เมื่อหลักฐานครบ ผู้มีอำนาจจึงตัดสิน

เอเจนต์ส่งหลักฐานที่ขาดบน head เดิม การตัดสินใจเป็นการกระทำแยกต่างหากของมนุษย์ที่มีชื่อ การมอบอำนาจแบบจำกัดอาจตัดสินงานประเภทเสี่ยงต่ำได้ที่นี่ก็เฉพาะภายใต้นโยบายที่มนุษย์ลงนาม; สตรีมนี้ไม่มี ประตูตรวจจึงรอคน

# RETURN — payments-refactor · STOP-2 (amended, head a3f9e12)
3. Migration 0042 proven both ways on a copy of the production schema.
   → up 1.2s / down 0.9s · row counts identical pre and post

$ saphan gate payments-refactor --gate stop-2 --actor marcin
[recorded] stop-2 approved · actor: marcin · 2026-07-14 09:12 +07
evidence: build green · 124/124 tests, 0 skipped · diff 14 files (+612 −208)
          · migration 0042 up+down · bundle sha256:9f2c…
authority: human owner · delegation: none in scope
05

บันทึกตอบว่า: ใคร บนหลักฐานใด อนุญาต

การปฏิเสธและการอนุมัติเป็นแถวทั้งคู่ ลายเซ็นคุ้มครองความครบถ้วนของแถว — ช่องเหล่านี้ไม่ถูกแก้ในภายหลัง แต่ไม่รับรองว่าการทดสอบดีหรือโค้ดถูกต้อง; นั่นคือหน้าที่ของหลักฐาน และคือสิ่งที่มนุษย์อ่านก่อนตัดสิน

$ saphan gates payments-refactor
refused  stop-2 · actor: marcin · 09:04 +07 · proof-standard-unmet (migration 0042 down)
approved stop-2 · actor: marcin · 09:12 +07 · evidence sha256:9f2c… · head a3f9e12 · authority: root
merged   observed on main @ 7b0e4d1 · 10:03 +07 · a human act in your Git, observed by the engine

การ merge ยังคงเป็นการกระทำของมนุษย์ในเครื่องมือ Git ของคุณเอง บันทึกเลื่อนเป็น merged ก็ต่อเมื่อสังเกตเห็น merge commit บนสาขาฐานแล้วเท่านั้น — ไม่ใช่เพราะ API ตอบว่าสำเร็จ

ไฟล์ฉบับเต็มเบื้องหลังตัวอย่างนี้ — brief, return, ADR ที่อ้างถึง, finding, แซนด์บ็อกซ์ และมุมมองในเอดิเตอร์:

+ บรีฟ — สิ่งที่เอเจนต์ได้รับจริง
# ORDER — payments-refactor · wave 1
From: master · To: one executor · Stream: payments-refactor
Worktree: worktrees/payments-refactor · Base: main @ 4f21c09
Protocol: saphan-protocol v1.0 · pinned in PROTOCOL_BASELINE.md

## Context — read first
The payments module calls three providers (stripe, adyen, in-house
ledger) directly from checkout code. Retries are ad hoc; a network
blip on 06-24 double-charged three orders (postmortem PM-12).
ADR-0007 (attached below) ratified one provider interface at STOP-1.
This stream implements it. Nothing here asks you to design — the
design decisions are made and recorded; your job is the build.

## Scope
IN:
a. PaymentProvider interface exactly per ADR-0007 §Decision — the
   Charge/Refund signatures are frozen there; do not redesign them.
b. Three adapters: stripe, adyen, ledger. Existing behavior is
   preserved; parity proven call-for-call against recorded fixtures
   in tests/fixtures/providers/.
c. Retries with idempotency keys (key = order_id + attempt window),
   stored in pending_payments — migration 0042, up AND down.
d. Wire pin W-2: the public /payments API is FROZEN. Golden tests in
   tests/golden/payments_test.go must pass untouched — if a golden
   blocks you, STOP and report; never edit a golden.

OUT (recorded — do not touch): checkout UI · refund flows (wave 2)
· provider timeout policy (carry-forward on ADR-0007).

## Proof standard
build green · full suite, counts as passed-of-total with skipped
named · migration 0042 proven up+down on a schema copy, row counts
pre/post · adapter parity: fixture diff empty · goldens untouched
(git diff --stat on tests/golden = empty) · diff summary per file

## Stops
STOP-1 already passed (ADR-0007). STOP-2: full return per template
before merge. Merge is human-only, from the gate.

## If blocked
Write the blocker under "Open questions" in the return, flag the
stream, stop. Guessing past ambiguity is a protocol violation,
not initiative.

ครบถ้วนในตัวเองลงลึกถึงลายเซ็นฟังก์ชันที่ถูกตรึง: บริบท สัญญา wire pin และคำสั่งเมื่อเส้นทางถูกบล็อก ถ้าเอเจนต์ต้องเดา บรีฟนั่นแหละคือข้อบกพร่อง — จึงไม่มีสิ่งใดถูกทิ้งไว้ให้เดา

+ ผลตอบกลับ — สิ่งที่กลับมา
# RETURN — payments-refactor · STOP-2
Executor: agent-7 · Commits: 6 (head a3f9e12) · Base: main @ 4f21c09

## Claims, with evidence
1. PaymentProvider extracted; 3 providers behind one interface.
   → diff: 14 files (+612 −208) · golden tests untouched, green
2. Retries are idempotent under duplicate delivery.
   → TestRetryIdempotency: 200 duplicate deliveries, 1 charge
3. Migration proven both ways on a copy of the production schema.
   → up 1.2s / down 0.9s · row counts identical pre and post

## Open questions for the gate
Provider timeout is 30s, inherited. Keep or tighten? Out of scope —
flagged, untouched.

## Not done
Refund flows: out of scope per order (recorded — wave 2).

ทุกข้อกล่าวอ้างเดินทางมาพร้อมหลักฐานพิสูจน์ของมัน คุณอ่านสิ่งนี้จบในไม่กี่นาที — ไม่ใช่ทรานสคริปต์ยาวสองชั่วโมง

+ ADR — ทำไมมันจึงเป็นแบบนี้ ตลอดไป
# ADR-0007 — one PaymentProvider interface; providers are adapters
Status: accepted · Date: 2026-06-30 · Actor: marcin · Gate: STOP-1

## Context
Three providers are called directly from checkout code. Each has its
own retry style and error mapping; the test surface triples; adding
or swapping a provider means surgery on callers. Incident 06-24:
a timeout retry double-charged three orders (postmortem PM-12).

## Decision
One interface, signatures frozen:
  Charge(ctx, Order, IdempotencyKey) → (Receipt, error)
  Refund(ctx, ReceiptRef, Amount)    → (Refund, error)
Providers become adapters behind it. Error taxonomy unified as
retryable / terminal / unknown — the mapping is owned by each
adapter and may not leak provider-specific errors upward.

## Consequences
+ one contract to test; parity provable against recorded fixtures
+ retries live in one place, above the adapters — idempotency
  enforced at a single seam, not three
− adapters gain a lint rule: no provider error types cross the seam
− migration 0042 required for idempotency-key storage

## Considered and passed
Per-provider services — triples the test surface, scatters retry
logic. Feature flags per provider — hides the seam from the record.

## Carry-forward
Timeout inherited at 30s. Decide at wave 2 — trigger: refund flows.

บริบทพร้อมเหตุการณ์ที่บีบให้ต้องตัดสินใจ ลายเซ็นที่ถูกตรึง ผลสืบเนื่องพร้อมข้อเสียของมัน และเส้นทางที่ไม่ได้เลือกพร้อมเหตุผล บรีฟด้านบนอ้างอิงถึงมัน — การตัดสินใจเป็นโครงสร้างรับน้ำหนัก ไม่ใช่ของประดับ

+ ข้อค้นพบ — วิธีที่ตัววิธีการเรียนรู้
# Finding 4.2 — a number without a definition is not evidence

Seen: a return claimed "tests: 124 passed" while 9 were skipped.
The count was true and the claim was false.
Rule: every number in a return carries its definition — passed of
total, skipped named and justified.
Applied: same cycle. All return templates updated; the gate now
asks for the definition when a bare number appears.

ความล้มเหลวกลายเป็นกฎในรอบเดียวกันกับที่มันถูกพบ โปรโตคอลคือกฎหมายจากคดีจริง ไม่ใช่แถลงการณ์

+ แซนด์บ็อกซ์ — เครื่องจักรทั้งระบบในหนึ่งจอ
# The sandbox — how the pieces talk

 you — the operator
  │ briefs out · gates · reads returns
  ▼
 editor / CLI (VS Code panel · saphan)
  │
  ▼
 saphan engine — self-hosted
  │ dispatch · fleet projection · refusals
  ▼
 worktrees — one isolated sandbox per stream
  ├─ agent-3   payments-refactor  running, wave 1
  ├─ agent-7   atrisk-push        stop-2 — awaiting you
  └─ agent-12  notification-svc   merged, observed
  │
  ▼
 the bridge — plain files in your git
  orders · returns · ADRs · findings · gate log
  │
  ▼
 main — merge is human-only

 The protocol is the language every arrow speaks.
 The record is what every arrow leaves behind.

เอเจนต์รันแบบแยกตัวใน worktree เอนจินพูดภาษาโปรโตคอลทั้งสองทิศทาง และทุกช่วงต่อทิ้งไฟล์ไว้ ไม่มีสิ่งที่มีความหมายใดเกิดขึ้นนอกบันทึก

+ อีดิเตอร์ — ฟลีตเดียวกัน ภายใน VS Code
SAPHAN STUDIO: FLEET
● atrisk-push [running]
● payments-refactor [stop-2]
● notification-svc [merged]

payments-refactor ● awaiting-human

GATE

stop-2 — evidence attached · merge is yours, the engine only observes it

saphan gate payments-refactor --gate stop2 --actor you

EVIDENCE

▸ diff — 14 files (+612 −208) · goldens untouched
▸ tests — 124 of 124 passed, 0 skipped
▸ migration 0042 — proven up + down

ภาพฉายของฟลีตในอีดิเตอร์ของคุณ: เลือกสตรีม อ่านหลักฐาน แล้วเกตมัน — โดยไม่ต้องออกจากไฟล์ที่คุณอยู่

บันทึกเขียนเอกสารของตัวเอง

จากสิ่งที่ Saphan เก็บเกี่ยวกับกระบวนการส่งมอบของคุณ มันสร้างเอกสารและรายงานขึ้นมา

ทุกคำสั่ง ผลตอบกลับ คำตัดสินรีวิว การตัดสินใจที่ประตูตรวจ แถวต้นทุน และการสังเกต merge อยู่ในบันทึกแล้ว เอกสารกระบวนการและรายงานการส่งมอบคือภาพฉายของบันทึกนั้น — สร้างขึ้น ไม่ใช่เขียนขึ้น ทุกตัวเลขสืบย้อนได้ถึงแถวที่ลงนามหรือเอกสารที่คอมมิตแล้ว และผู้อ่านตรวจสอบ digest ก่อนอ่าน

01

เอกสารกระบวนการ — หนึ่งบทต่อหนึ่งขบวนงาน

ขบวนนี้ส่งมอบอะไรและปฏิเสธอะไร — ยกมาจากคำสั่ง; ตัวสร้างไม่เรียบเรียงอาณัติใหม่ การตัดสินใจที่มันยึดถือ หนึ่งส่วนต่อหนึ่งตู้: ข้อตั้ง หลักฐาน สิ่งที่ห้ามทำ และตัวเลขที่ leg คืนมา ตรวจสอบอย่างไร — ประเภทรีวิว จำนวนรอบ การปฏิเสธแต่ละครั้งเปลี่ยนอะไร ยกมาจากคำตัดสิน ลงจอดอย่างไร — เส้นเวลาของแถวประตูตรวจที่ลงนามจนถึง merge commit สิ่งที่ทิ้งไว้ บัญชีต้นทุนพร้อมประเภทการเรียกเก็บ และเอกสารแนบ: ทุกเอกสารต้นทางพร้อม digest โปรไฟล์การเปิดเผยตัดสินว่าฉบับสาธารณะกันอะไรไว้ — ชื่อโฮสต์และ seat ถูกแทนด้วยประเภท ต้นทุนถูกละ — และระบุว่ากันอะไรไว้

02

รายงานการส่งมอบ — สิบสองแผ่นเหนือบันทึกเดียวกัน

การส่งมอบ ประตูตรวจ ต้นทุน ขบวน โฟลว์ กำลังการผลิต การทดสอบ ข้อบกพร่อง กฎ การตรวจสอบ compliance และเมตริก สำหรับช่วงเวลาที่คุณเลือก: ตู้ที่ merge แล้วและด้วยมือใคร อัตราผ่านรอบแรกและจำนวนรอบต่อตู้ ใบเสนอราคาเทียบต้นทุนจริงเทียบเพดาน พร้อมประเภทการเรียกเก็บทุกตัวเลข burndown และ cumulative flow ต่อขบวน รอบเวลาและชั่วโมงหายไปไหน — leg, รอรีวิว, รอเจ้าของ, merge ทุกแผ่นระบุตารางที่อ่านและตัวเลขที่ยังมีไม่ได้; ตัวเลขที่ไม่มีที่มาจะไม่ถูกพิมพ์

หน้าตาเป็นอย่างไร — ภาพตัวอย่างจากคอนโซล:

Process documentation: chapter running head and table of contentsProcess documentation: chapter running head and table of contents
หัวกระดาษของบท: ส่งมอบแล้ว ออกแล้ว ต้นทุนพร้อมประเภท digest ของเอกสาร — และสารบัญ
Delivery reports: flow plate with cycle-time control chartDelivery reports: flow plate with cycle-time control chart
รายงานโฟลว์: รอบเวลาต่อตู้ที่ merge แล้ว และชั่วโมงหายไปไหน — leg, รอรีวิว, รอเจ้าของ, merge
Process documentation: gate timeline of one wagonProcess documentation: gate timeline of one wagon
“ลงจอดอย่างไร”: เส้นเวลาประตูตรวจของหนึ่งตู้ ทุกจุดคือแถวที่ลงนาม จนถึง merge commit

ตัวสร้างพิมพ์ค่าที่อ่านจากบันทึกและปฏิเสธที่จะแต่งขึ้น: ตู้ที่ merge แล้วไม่ใช่ตู้ที่ออกแล้ว และบทกล่าวเช่นนั้นในหัวกระดาษของตัวเอง

หน้าจอเอกสารและรายงานมาพร้อมบิลด์ enterprise; คอนโซลยังไม่เปิดสาธารณะ หน้านี้จะบอกว่า “พร้อมใช้” เมื่อพร้อมใช้จริง ไม่ใช่ก่อนหนึ่งรุ่น

Human owns the loop

มนุษย์ไม่ใช่ผู้กดปุ่มหรือเพียงผู้เข้าร่วมอีกคนในกระบวนการ แต่เป็นเจ้าของกระบวนการ: กำหนดทิศทาง กำหนดขอบเขตอำนาจที่มอบให้ฟลีต และยังคงรับผิดชอบต่อผลลัพธ์ นี่คือชื่อที่ฟลีตเองใช้เรียกบทบาทนี้ — human owner

01

การแก้ทิศ — หันหนึ่งสตรีม ไม่ใช่หนึ่งสัปดาห์

ความต้องการเปลี่ยนกลางทาง เมื่อจับได้ที่เกต ความต้องการที่เปลี่ยนไปมีราคาเพียงหนึ่งสตรีมที่ต้องหันทิศ — ไม่ใช่ผลงานทั้งสัปดาห์ของทั้งฝูงลงถังขยะ เกตคือจุดที่การหันทิศราคาถูกเกิดขึ้น ก่อนที่ทิศทางที่ผิดจะทบต้นลุกลามไปทั่วฟลีต

02

ความเข้าใจ — อธิบายก่อนที่ฉันจะอนุมัติ

“อธิบายสิ่งนี้ก่อนที่ฉันจะอนุมัติ” ผู้ปฏิบัติการตามทันไปพร้อมกับระบบ แทนที่จะลงนามทั้งที่มองไม่เห็น — และหน้าที่ทั้งหมดของผลตอบกลับคือทำให้สิ่งนั้นกินเวลาไม่กี่นาที ไม่ใช่ทั้งบ่าย คุณอนุมัติโดยลืมตา หรือไม่ก็ไม่อนุมัติเลย

03

คำถามย้อนกลับ — ทำไมต้องทางนี้?

“ทำไมต้องทางนี้ ไม่ใช่ทางอื่น?” ถูกตอบด้วยเอกสาร — ADR ทางเลือกที่ถูกพิจารณาแล้วไม่ได้เลือก — ไม่ใช่ด้วยความจำของใครคนหนึ่งเกี่ยวกับการตัดสินใจเมื่อหลายสัปดาห์ก่อน เหตุผลอยู่ในบันทึกก่อนที่คำถามจะถูกถามเสียอีก

การมอบอำนาจแบบจำกัด — ไม่ใช่ออโตไพลอตโดยปริยาย

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

อำนาจของมนุษย์คือรากฐาน ระบบอัตโนมัติใช้ได้เฉพาะอำนาจที่มนุษย์ลงนามมอบไว้อย่างจำกัด และบันทึกเก็บรักษาสายอำนาจนั้นไว้ในทุกการตัดสินใจ

การจัดเส้นทาง — ระนาบการปฏิบัติงาน

บริษัทวิศวกรห้าสิบคนไม่มีงบโมเดลระดับ frontier สำหรับงานที่สคริปต์ทำได้ กฎการจัดเส้นทางเรียบง่าย: ผู้ปฏิบัติงานที่ถูกที่สุดที่ยังคงผ่านมาตรฐานการพิสูจน์ได้

01

คำสั่งมาก่อนโมเดล

บิลด์ iOS ชุดทดสอบ การแพ็กอาร์ติแฟกต์ — เหล่านี้คือคำสั่ง ไม่ใช่บทสนทนา ภายใต้โปรโตคอล พวกมันคือผู้ปฏิบัติงานเหมือนรายอื่น: ถูกส่งงานด้วยคำสั่งงาน คืนหลักฐานกลับมา ทิ้งบันทึกแบบเดียวกันไว้ ศูนย์โทเคนสำหรับงานที่ toolchain ทำได้ดีกว่า

02

โมเดลโลคัลสำหรับงานกลไกช่วงกลาง

โมเดลโฮสต์เองที่อยู่หลังสัญญาขอบเขตเดียวกันรับงานซ้ำ ๆ ไป: การย้ายแพตเทิร์น การสรุปความ การขึ้นโครงร่าง โลหะของคุณ ข้อมูลของคุณ บิลค่าไฟของคุณ — ไม่ใช่ใบแจ้งหนี้คิดต่อโทเคน

03

โมเดล frontier ในที่ที่มันคู่ควร

Claude Code, OpenAI Codex, Qwen Code, Factory Droid หรือโมเดลที่ทำงานผ่าน Saphan Agent-Loop — ถูกสงวนไว้โดยนโยบายสำหรับงานที่คู่ควรกับมัน: การออกแบบ การดีบักยาก ๆ การรีวิว นโยบายคือไฟล์ที่คุณเขียนและกำหนดเวอร์ชันเอง ไม่ใช่ค่าปริยายที่ไม่มีใครเป็นคนเลือก

04

ต้นทุนลงจอดข้างหลักฐาน

บันทึกรู้ว่าผู้ปฏิบัติงานรายใดให้บริการแต่ละสตรีม — การระบุที่มาคือฟิลด์ในสัญญา ไม่ใช่การเดา ค่าใช้จ่ายควรอยู่ข้างหลักฐานพิสูจน์ รายสตรีม รายเกต: “การเปลี่ยนแปลงนี้มีต้นทุนเท่าไร” สมควรได้คำตอบบรรทัดเดียวเช่นเดียวกับ “ใครอนุมัติมัน”

05

ที่นั่ง CLI และมิเตอร์ API — ขอบเขตเดียวกัน

คุณจ่ายซ้ำสองทางอยู่แล้ว: วิศวกรขับเอเจนต์จากคอนโซล CLI บนสมาชิกภาพรายที่นั่ง ขณะที่ไปป์ไลน์เผาโทเคนแบบคิดมิเตอร์ผ่าน API — และเครดิตรั่วไหลไปในที่ที่ไม่มีใครระบุที่มา Saphan วางทั้งสองไว้หลังขอบเขตเดียวกัน: คำสั่งงานแบบเดียวกันเข้าไป หลักฐานแบบเดียวกันกลับมา บันทึกฉบับเดียวกัน — ไม่ว่าผู้ปฏิบัติงานจะเป็นเซสชัน CLI แบบโต้ตอบหรือการเรียก API แบบ headless ค่าใช้จ่ายเลิกเป็นปริศนาที่ถูกฉีกแยกอยู่บนใบแจ้งหนี้สองใบ

ระนาบการจัดเส้นทางรันอยู่ในสแต็กของเราเองแล้ววันนี้ — หนึ่งนโยบาย ตั้งแต่เซิร์ฟเวอร์โมเดลโลคัลจนถึง API ระดับ frontier โดยมีเอเจนต์ขับผ่าน CLI ทำงานภายใต้ Saphan อยู่ขณะนี้ เลน headless/API ถูกออกแบบไว้ในสัญญาเดียวกัน พื้นผิวด้านต้นทุนกำลังถูกทำให้เสร็จร่วมกับ design partner — ตะเข็บการระบุที่มานั่งอยู่ในสัญญาแล้ว

Bench — สิ่งที่ฮาร์ดแวร์ของคุณเองรับได้จริง

การจัดเส้นทางตัดสินว่างานคลาสไหนควรอยู่ที่ใด Bench คือวิธีที่คุณค้นพบว่าเครื่องของคุณเองรับอะไรได้ เพื่อให้การตัดสินใจนั้นตั้งอยู่บนการวัดจริงแทนข้อสันนิษฐาน ช่องว่างระหว่างสองสิ่งนี้ไม่เล็กเลย และไม่มีทางรู้ล่วงหน้าได้

$ saphan-verdict
[verdict] class-120b — 120.99 GiB addressable · hot + large fit co-resident
→ note: glm-4.5-air rejected — dominated by gpt-oss-120b on this class
[critical] addressable memory is 63.3 of 125.5 GiB installed — raise the ceiling

ขั้นตอนฟรีนี้ไม่ติดตั้งอะไรและไม่เรียกหาอะไร มันรายงานหน่วยความจำที่ GPU เข้าถึงได้ (addressable) แทนที่จะเป็น RAM ที่ติดตั้ง เพราะบนเครื่องอ้างอิง ค่าทั้งสองต่างกันถึงครึ่งเครื่อง — และทุกการตัดสินใจเรื่องความพอดีต้องเดินตามตัวเลขที่เล็กกว่า

สี่โมเดลถูกวัดบนโหนด 128 GB หนึ่งเครื่อง: GLM-4.5-Air เรือธงที่คุณคงจะเลือก กลับกลายเป็นช้ากว่า 2.1× ทั้งด้านการประมวลผลพรอมป์ตและการสร้างโทเคนเมื่อเทียบกับ gpt-oss-120b — แถมยังหนักกว่า 10 GiB การ์ดโมเดลทั้งสองใบไม่ได้บอกเช่นนั้น เพราะการ์ดโมเดลทั้งสองใบไม่ได้พูดถึงเครื่องของคุณ

อ่านบทสรุป Bench — ผลการวัด และราคาที่จ่ายไปเพื่อเรียนรู้มัน →

สิ่งนี้อยู่ตรงไหน — อะไรคงอยู่ อะไรที่ Saphan เพิ่ม

ทุกอย่างที่คุณใช้อยู่ยังคงทำหน้าที่เดิม Saphan รับหน้าที่เพียงอย่างเดียว: จุดที่ผลงานของเอเจนต์กลายเป็นการเปลี่ยนแปลงซอฟต์แวร์ที่ต้องมีใครรับผิดชอบ

01

โมเดลของคุณคงอยู่ ใช้งานได้วันนี้

API ระดับ frontier และโมเดลภายในหลังปลายทางที่เข้ากันได้กับ OpenAI เช่น Ollama และ vLLM คือเลนที่ Saphan จัดเส้นทางไปตามนโยบายที่คุณจัดเวอร์ชัน การรองรับหลายโมเดลเป็นเรื่องของการจัดเส้นทาง ไม่ใช่สิ่งเดียวกับการกำกับดูแล coding agent สำเร็จรูป

02

coding agent ของคุณคงอยู่ ใช้งานได้วันนี้

Claude Code, OpenAI Codex, Qwen Code, Factory Droid และ Agent-Loop ของ Saphan เองทำงานเป็นแบ็กเอนด์ที่ถูกส่งงานและแยก seat — ไม่มีอะแดปเตอร์เฟรมเวิร์ก ไม่มี SDK ให้ฝัง สัญญานั้นเล็ก: รับคำสั่งที่สมบูรณ์ในตัว ทำงานใน worktree ที่แยกไว้ คืนข้อกล่าวอ้างพร้อมหลักฐาน

03

เฟรมเวิร์กออร์เคสเตรชันของคุณคงอยู่ อะแดปเตอร์ยังไม่ออก

LangGraph, CrewAI, Microsoft Agent Framework และ A2A เป็นชั้นการผสานรวมแยกต่างหาก ไม่ใช่รันไทม์ของ coding agent สัญญาของอะแดปเตอร์ระบุไว้แล้ว; อะแดปเตอร์แต่ละตัวสร้างร่วมกับ design partner ตามลำดับความจำเป็นจริง และไม่มีตัวใดถูกนำเสนอว่าออกแล้ว

04

Git ของคุณยังคงเป็นระบบบันทึกหลัก ใช้งานได้วันนี้

Saphan ไม่เขียนลงรีโพซิทอรีของคุณเลย มันสังเกต commit สาขา และ merge ผ่านขอบเขตอ่านอย่างเดียว; การ merge ยังคงเป็นการกระทำของมนุษย์ในเครื่องมือของคุณ ประตูตรวจไปถึง forge เอง — สถานะที่จำเป็นและ head ของ pull request ที่แน่นอน — ทำงานอย่างไร →

05

Saphan เพิ่มชั้นที่อยู่ระหว่างนั้น

การรับเครื่องเข้า การรันในแซนด์บ็อกซ์ คำสั่งออกไปและผลตอบกลับพร้อมหลักฐานเข้ามา ประตูตรวจของมนุษย์พร้อมการมอบอำนาจแบบจำกัด และบันทึกที่ลงนาม — เหนือเฟรมเวิร์ก ตั้งฉากกับชุดเครื่องมือ AI governance ที่เฝ้าดูโมเดลและข้อมูลจากด้านบน เปลี่ยนสแต็กเอเจนต์ได้ ระนาบอำนาจยังคงอยู่

Saphan Protocol

วิธีการไม่ได้ถูกล็อกไว้ในเครื่องมือ Saphan Protocol คือวินัยที่เขียนเป็นลายลักษณ์อักษรซึ่งเอนจินบังคับใช้ — คำสั่งงาน เกต มาตรฐานหลักฐาน บันทึกการตัดสินใจ — มีเวอร์ชันกำกับ มนุษย์อ่านได้ และถูกทดสอบให้แกร่งขึ้นทุกวันกับฟลีตของเราเอง

เครื่องจักรปฏิบัติตามมัน ผู้ตรวจสอบและวิศวกรก็เพียงแค่อ่านมันได้ Protocol v1.0 เผยแพร่พร้อมกับรีลีส

อ่านบทสรุปโปรโตคอล →

ทำไมจึงชื่อ Saphan

Saphan มาจากคำไทยว่า สะพาน ผมสร้างสิ่งนี้ที่หัวหิน ประเทศไทย และตราสัญลักษณ์บนหน้านี้คือสะพานพระราม 8 ในกรุงเทพฯ: เสาสูงต้นเดียวบนฝั่งหนึ่ง แบกพื้นสะพานทั้งผืนไว้ด้วยสายเคเบิลที่คุณนับจำนวนได้ ผมชอบความซื่อตรงแบบนั้น ไม่มีสิ่งใดซ่อนอยู่ในโครงสร้าง — ทุกเส้นแรงมองเห็นได้ และคุณไล่ดูได้อย่างแม่นยำว่าอะไรค้ำจุนอะไร นั่นคือตัวผลิตภัณฑ์ทั้งหมด วาดออกมาเป็นเหล็ก: งานข้ามฟากไป ไม่มีสิ่งใดร่วงหล่นอย่างเงียบเชียบ และคุณมองเห็นได้เสมอว่าอะไรกำลังรับน้ำหนักอยู่

ยังมีเหตุผลที่เก่าแก่กว่านั้นอีกข้อ ทุกระบบที่ผมเคยดูแลมาตลอดหลายสิบปีของงานโครงสร้างพื้นฐานล้วนล้มเหลวที่จุดเดียวกันในท้ายที่สุด — ไม่ใช่ในโค้ด แต่ตรงจุดข้าม: ช่วงเวลาที่งานเคลื่อนจากฝั่งหนึ่งไปอีกฝั่งหนึ่ง แล้วภายหลังไม่มีใครบอกได้ว่าใครปล่อยมันผ่านไป หรือเพราะอะไร เอเจนต์ไม่ได้สร้างปัญหานั้นขึ้นมา พวกมันคูณทวีมันจนเกินกว่าที่ความจำมนุษย์จะรับไหว เครื่องมือนี้จึงถูกตั้งชื่อตามสิ่งที่ขาดหายไปมาโดยตลอด ไม่ใช่กำแพง ไม่ใช่ประตูเพื่อตัวประตูเอง — แต่คือสะพานที่จดจำทุกการข้าม

สถานะ

โปรโตคอลและเอนจินรันอยู่ในโปรดักชันบนโปรเจกต์ของเราเอง — ระบบนี้สร้างและกำกับดูแลตัวมันเอง

การเปิดตัวสาธารณะจัดเป็นลำดับขั้น: protocol v1.0 เอนจิน และชุดตรวจสอบ (audit pack) ส่งมอบพร้อมกัน

เรากำลังคัดเลือก design partner 2–3 ราย (ทีมวิศวกร 50–500 คนที่มีภาระผูกพันด้านการปฏิบัติตามข้อกำหนดจริง)

กลไกเบื้องหลังบันทึกเป็นหัวข้อของคำขอรับสิทธิบัตรในสหรัฐอเมริกา — patent pending

พาร์ตเนอร์

โปแลนด์ — IP Partner, วอร์ซอ IP Partner เป็นตัวแทนของ Saphan ในโปแลนด์: การพูดคุยครั้งแรกเป็นภาษาโปแลนด์ การติดตั้งบนโครงสร้างพื้นฐานของคุณเอง และทีมท้องถิ่นสำหรับองค์กรที่นำเอเจนต์ AI เข้าสู่งานวิศวกรรมที่อยู่ภายใต้กฎระเบียบ ติดต่อ Łukasz Bederski, MBA, Founder — หน้าพันธมิตร · ippartner.pl · LinkedIn

สนใจเป็นตัวแทน Saphan ในตลาดของคุณ? [email protected]

Design partner — ข้อตกลง พูดกันตรง ๆ

01

ปัญหาที่คุณมีอยู่แล้ว

ผลงานของเอเจนต์กำลังวิ่งแซงการรีวิวของคุณ Pull request กองพะเนิน การรีวิวไถลกลายเป็นละครฉากหนึ่ง — และตอนนี้ลูกค้าองค์กรและผู้ตรวจสอบของคุณเริ่มถามว่าใครกำกับดูแลสิ่งที่เอเจนต์เปลี่ยนแปลง “มีซีเนียร์ดูให้แล้ว” ไม่ตอบทั้งสองปัญหา

02

วันที่ 30: สิ่งที่คุณถืออยู่ในมือ

ทีมนำร่องที่ทำงานด้วยวิธีการนี้ทุกวัน: บรีฟออกไป ผลตอบกลับพร้อมหลักฐานเข้ามา ตัดสินใจที่เกตจากอีดิเตอร์ — และโค้ดเบสของคุณพกสะพานของมันตั้งแต่วันแรก วินัยจึงมีบ้านอยู่ก่อนที่เอเจนต์ตัวแรกจะเริ่มรัน

เงินปันผลด้านการตรวจสอบ ได้มาฟรี ๆ: เพราะทุกการเปลี่ยนแปลงพกหลักฐานและการตัดสินใจที่ถูกบันทึกอยู่แล้ว คำตอบของแบบสอบถามด้านความปลอดภัยจึงกลายเป็นเอกสารที่คุณแนบไป ไม่ใช่ย่อหน้าที่คุณต้องด้นสด

ข้อกล่าวอ้างที่ทีมขายของคุณพูดกับลูกค้าได้ พร้อมใบเสร็จ: “ฟลีต AI ของเรารันภายใต้ชั้นแห่งอำนาจที่ตรวจสอบได้” คุณขายความไว้วางใจ นี่คือความไว้วางใจที่มีบันทึกกำกับ

03

ราคาที่ต้องจ่าย ในกรณีเลวร้ายที่สุด

หนึ่งทีม หนึ่ง repo ผู้ก่อตั้งลงมือดีพลอยเอง — เกตแรกเกิดขึ้นบนงานจริงของคุณภายในสัปดาห์แรก โฮสต์เองบนโครงสร้างพื้นฐานที่คุณควบคุม: Saphan ไม่เพิ่มที่ใหม่ให้โค้ดของคุณต้องเดินทางไป หนึ่งชั่วโมงต่อสัปดาห์ ไม่มีค่าไลเซนส์ตลอดช่วงการออกแบบทั้งหมด เดินจากไปได้ทุกเมื่อ และเก็บทุกอย่างด้านล่างนี้ไว้ได้

04

ถ้าพรุ่งนี้เราหายตัวไป

บันทึกคือไฟล์ธรรมดาใน git ของคุณ — อ่านได้โดยไม่ต้องพึ่งเครื่องมือของเรา ตลอดไป โปรโตคอลเผยแพร่อย่างเปิดที่ v1.0: วินัยที่ทีมของคุณได้เรียนรู้ไม่ตายไปพร้อมผู้ขายรายใด ระบบที่คุณโฮสต์เองก็ยังรันต่อไป นี่คือขั้วตรงข้ามของ lock-in โดยโครงสร้าง

05

เราได้อะไร — และนั่นซื้ออะไรให้คุณ

กรณีขอบของคุณกลายเป็นกฎของโปรโตคอล (ผ่านการทำให้เป็นนามธรรม ไม่มีวันเป็นรายละเอียดภายในของคุณ) แรงเสียดทานของคุณกำหนดโรดแมป และระดับ Team — เกตทั่วทั้งองค์กร ภาพฉายที่แชร์ร่วมกัน มุมมองการตรวจสอบ — จะก่อรูปตามองค์กรของคุณ เพราะคุณอยู่ในห้องนั้นด้วย เงื่อนไขผู้ร่วมบุกเบิกเป็นลายลักษณ์อักษร ก่อนที่จะมีราคาสาธารณะใด ๆ ปรากฏ

สอบถามเรื่องการเป็น design partner

ติดต่อเรา — [email protected]