• GitHub CLI จะส่ง เทเลเมทรีแบบนามแฝง โดยมีเป้าหมายเพื่อเพิ่มการมองเห็นการใช้งานฟีเจอร์และช่วยปรับปรุงผลิตภัณฑ์
  • ใช้ข้อมูลเรื่อง การนำ subcommand ไปใช้งาน และรูปแบบการใช้ flags เพื่อกำหนดลำดับความสำคัญของงาน ประเมินว่าตอบโจทย์ผู้ใช้หรือไม่ และนำไปทบทวน discoverability กับ design
  • เป็น การติดตั้งใช้งานแบบโอเพนซอร์ส จึงสามารถตรวจสอบโค้ดเทเลเมทรีได้โดยตรงในรีโพซิทอรี cli/cli และใช้ logging mode เพื่อดู JSON payload ก่อนส่งจริงได้
  • การปิดการส่งข้อมูลแบบ opt-out ทำได้ด้วยตัวแปรสภาพแวดล้อม GH_TELEMETRY=false, DO_NOT_TRACK=true หรือ gh config set telemetry disabled โดยตัวแปรสภาพแวดล้อมจะมีลำดับความสำคัญสูงกว่าค่า config
  • อีเวนต์เทเลเมทรีจะถูกส่งไปยัง โครงสร้างพื้นฐานการวิเคราะห์ภายในของ GitHub และหน้านี้กล่าวถึงเฉพาะการเก็บข้อมูลฝั่งไคลเอนต์ของ gh เท่านั้น โดย extensions และ Copilot CLI เป็นคนละส่วน

เทเลเมทรี

  • GitHub CLI ส่ง เทเลเมทรีแบบนามแฝง เพื่อช่วยปรับปรุงผลิตภัณฑ์
  • ให้ข้อมูลเพื่อให้ผู้ใช้เข้าใจว่ามีการส่งข้อมูลอะไรบ้างและส่งไปด้วยเหตุผลใด

เหตุผลที่เก็บเทเลเมทรี

  • กล่าวถึงความจำเป็นในการมองเห็น การใช้งานฟีเจอร์ของ GitHub CLI โดยเฉพาะเมื่อการใช้งานเชิง agentic เพิ่มขึ้น จึงต้องการเข้าใจรูปแบบการใช้งานจริง
    • ทีมงานใช้ข้อมูลนี้ในการกำหนดลำดับความสำคัญของงาน
    • ใช้ประเมินว่าฟีเจอร์ต่าง ๆ ตอบสนองความต้องการของผู้ใช้จริงหรือไม่
  • ระบุชัดว่าต้องการตรวจสอบ การนำ subcommand ใหม่ไปใช้งานหลังเปิดตัว
    • หากแทบไม่มีผู้ใช้ อาจต้องทบทวน discoverability หรือ design ของฟีเจอร์นั้น
    • หากพบการใช้งานสูงร่วมกับ flags บางรายการ ก็จะช่วยชี้จุดที่ควรลงทุนเพื่อสร้างประสบการณ์ที่ดีกว่าเดิม

การตรวจสอบเทเลเมทรี

  • GitHub CLI เป็น โอเพนซอร์ส และสามารถตรวจสอบการติดตั้งใช้งานเทเลเมทรีได้โดยตรงในรีโพซิทอรี cli/cli
  • หากต้องการดูข้อมูลที่จะถูกส่งโดยไม่ส่งจริง สามารถใช้ logging mode ได้
    • รองรับการตั้งค่าผ่านตัวแปรสภาพแวดล้อม
      • export GH_TELEMETRY=log
    • รองรับการตั้งค่าผ่าน CLI
      • gh config set telemetry log
  • ใน logging mode จะพิมพ์ JSON payload ที่ปกติจะถูกส่งออกไปยัง stderr
    • ผู้ใช้สามารถตรวจดูแต่ละฟิลด์ก่อนตัดสินใจว่าจะเปิดใช้เทเลเมทรีต่อหรือไม่
    • ยกตัวอย่างคำสั่ง GH_TELEMETRY=log gh repo list --archived
  • ระบุข้อมูลอีเวนต์ที่รวมอยู่ใน payload ตัวอย่าง
    • ประเภทอีเวนต์ command_invocation
    • ใน dimensions มี agent, architecture, command, device_id, flags, invocation_id, is_tty, os, timestamp, version
    • ตัวอย่างค่า เช่น architecture: arm64, command: gh repo list, flags: archived, os: darwin, version: 2.91.0
  • คำสั่งดังกล่าวสามารถบันทึกได้เฉพาะเทเลเมทรีของ คำสั่งและบริบทที่ถูกรันจริงเท่านั้น
    • หากเปลี่ยนตัวแปรสภาพแวดล้อม events และ event dimensions ที่รวมอยู่ใน payload ก็อาจเปลี่ยนตาม
    • หากเปลี่ยนบัญชีที่ยืนยันตัวตนแล้ว รายการข้อมูลที่รวมอยู่ก็อาจต่างออกไปเช่นกัน

วิธี opt-out

  • สามารถ opt-out จากเทเลเมทรีที่ตรวจสอบผ่าน logging mode ได้
  • รองรับการตั้งค่าผ่านตัวแปรสภาพแวดล้อม
    • export GH_TELEMETRY=false
    • ใช้ค่าที่ตีความเป็น false ได้ เช่น 0, false, disabled, สตริงว่าง
    • รองรับธรรมเนียม DO_NOT_TRACK ด้วย โดยมีตัวอย่าง export DO_NOT_TRACK=true
  • รองรับการตั้งค่าผ่าน CLI
    • gh config set telemetry disabled
  • ตัวแปรสภาพแวดล้อมมีลำดับความสำคัญ สูงกว่าค่า config

ข้อมูลถูกส่งไปที่ใด

  • อีเวนต์เทเลเมทรีถูกส่งไปยัง โครงสร้างพื้นฐานการวิเคราะห์ภายใน ของ GitHub
  • หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับวิธีประมวลผลข้อมูล ให้ดู GitHub General Privacy Statement

ข้อมูลเพิ่มเติม

  • GitHub CLI รองรับการเพิ่มความสามารถผ่านการติดตั้ง extensions ของ GitHub และ บุคคลที่สาม รวมถึง agents
  • extensions เหล่านี้อาจเก็บข้อมูลการใช้งานของตนเองได้
    • ไม่ถูกควบคุมด้วยการตั้งค่า opt-out นี้
    • ควรตรวจสอบเอกสารของแต่ละ extension เพื่อดูวิธีรายงานเทเลเมทรีและดูว่าสามารถปิดได้หรือไม่
  • หน้านี้กล่าวถึงเฉพาะ การเก็บข้อมูลฝั่งไคลเอนต์ ของ GitHub CLI gh
    • ไม่ครอบคลุม GitHub Copilot และ Copilot CLI
    • Copilot CLI มีการจัดการการเก็บข้อมูลแยกต่างหาก
    • มีการแนะนำแหล่งข้อมูลที่เกี่ยวข้องคือ Using GitHub Copilot CLI, Responsible Use of the GitHub Copilot CLI

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น