Skip to content

การตั้งค่า CLI (config.json) ​

ทุกฟิลด์ของ config.json กำหนดวิธีการทำงานของ openspec CLI บนเครื่องของคุณ

ตำแหน่งที่ตั้ง ​

CLI จะเก็บการตั้งค่าระดับเครื่องที่ ~/.config/openspec/config.json บน macOS และ Linux และ %APPDATA%\openspec\config.json บน Windows หาก $XDG_CONFIG_HOME ถูกตั้งค่าไว้ จะมีผลบังคับใช้บนทุกแพลตฟอร์ม คำสั่ง openspec config จะอ่านและแก้ไขไฟล์นี้

ฟิลด์ ​

คีย์ประเภทจำเป็นผล
profilestring: core หรือ customไม่จำเป็นเลือกชุดการทำงานที่ openspec init ติดตั้ง
deliverystring: both, skills, หรือ commandsไม่จำเป็นกำหนดว่า init จะติดตั้งทักษะ, คำสั่งทับ, หรือ ทั้งสองอย่าง
workflowslist of stringsไม่จำเป็นรายการการทำงานที่โปรไฟล์ custom จะติดตั้ง
featureFlagsmap: flag → booleanไม่จำเป็นสวิตช์เปิดปิดคุณสมบัติที่เป็นบูลีน
defaultStorestringไม่จำเป็นร้านค้าสำรองระดับเครื่องสำหรับการระบุราก
openersmap: tool id → settingsไม่จำเป็นชุดเครื่องมือที่เปิดอยู่ และวิธีการเรียกใช้งานแต่ละรายการ
telemetrymapไม่จำเป็นการยกเลิกการส่งข้อมูล, id ไม่ระบุตัวตน, และสถานะการเห็นการแจ้งเตือน

profile ​

ชุดการทำงานที่ openspec init ติดตั้ง ค่าดีฟอลต์คือ core: เสนอ, สำรวจ, ใช้, อัปเดต, ซิงค์, และ เก็บถาวร การตั้งค่า custom จะติดตั้งรายการการทำงาน workflows แทน

delivery ​

กำหนดว่า init จะติดตั้งการทำงานในรูปแบบทักษะ, คำสั่งทับ, หรือ ทั้งสองอย่าง ค่าดีฟอลต์คือ both

workflows ​

การทำงานที่โปรไฟล์ custom จะติดตั้ง; ถูกละเว้นเมื่อโปรไฟล์เป็น core id ที่ถูกต้อง: propose, explore, new, continue, apply, update, ff, sync, archive, bulk-archive, verify, onboard

featureFlags ​

สวิตช์เปิดปิดที่เป็นบูลีน โดยคีย์ตามชื่อสวิตช์ ตั้งค่าด้วย openspec config set featureFlags.<flag> true ไม่มีสวิตช์ใดที่ถูกอ่านโดย CLI ในปัจจุบัน

defaultStore ​

id ร้านค้าสำรองระดับเครื่องสำหรับการระบุราก, ถูกใช้เฉพาะเมื่อไม่มีการระบุ --store, openspec/ ในพื้นที่, หรือ pointer store: ของโปรเจกต์ ขั้นตอนแบบเต็มคือ Root resolution

openers ​

เครื่องมือที่ชุดเครื่องมือสามารถเปิดได้, โดยคีย์ตาม id ของเครื่องมือ แก้ไข openers ใน config.json ระดับโลกด้วย openspec config edit ใน terminal ของคุณ

ฟิลด์สัญญา
styleworkspace-file หรือ attach-dirs. จำเป็นสำหรับการใช้เครื่องมือใหม่; ไม่จำเป็นสำหรับ เครื่องมือที่มีอยู่
labelสตริงที่ไม่ว่างเปล่าแสดงในตัวเลือกเครื่องมือ ค่าดีฟอลต์คือ id สำหรับเครื่องมือใหม่
commandชื่อหรือพาธที่สามารถดำเนินการได้ ไม่ว่างเปล่า ค่าดีฟอลต์คือ id สำหรับเครื่องมือใหม่ ใส่อาร์กิวเมนต์ใน args, ไม่ใช่ในสตริงนี้
argsอาร์เรย์ของสตริงที่ส่งก่อนสปาเซเวิร์กไฟล์หรือแฟล็กแนบ ค่าดีฟอลต์คือ [] สำหรับเครื่องมือใหม่
attach_flagสตริงที่ไม่ว่างเปล่าที่จับคู่กับแต่ละเส้นทางใน attach-dirs. ค่าดีฟอลต์คือ --add-dir สำหรับเครื่องมือใหม่ ถูกละเว้นสำหรับ workspace-file

Built-in overrides: code, cursor, claude, และ codex จะเก็บฟิลด์ที่คุณไม่กำหนดไว้ การตั้งค่า args จะเปลี่ยนรายการอาร์กิวเมนต์ทั้งหมด; [] จะล้างมัน

สไตล์การเปิด: workspace-file จะส่งพาธ .code-workspace ที่สร้างขึ้นไปยังโปรแกรมที่ดำเนินการ attach-dirs จะส่งคู่แฟล็ก/เส้นทางหนึ่งต่อหนึ่ง, รวมถึงเส้นทางหลัก

ความพร้อมใช้งาน: openers ของ attach-dirs, รวมถึง Claude Code และ Codex, จะถูกปิดใช้งานโดยค่าเริ่มต้น คุณไม่สามารถเลือกหรือบันทึกมันได้ด้วย --tool, และ OpenSpec จะปฏิเสธที่จะเปิดชุดเครื่องมือที่ระบุหนึ่งไว้แล้ว การกำหนดค่า override จะไม่ทำให้สไตล์การเปิด attach-dirs เปิดใช้งาน

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

ตัวอย่างนี้เพิ่ม VS Code Insiders และส่ง --new-window เมื่อ openers VS Code ที่มีอยู่ใช้งาน:

json
{
  "openers": {
    "code-insiders": {
      "style": "workspace-file",
      "label": "VS Code Insiders"
    },
    "code": {
      "args": ["--new-window"]
    }
  }
}

โปรแกรมที่ดำเนินการ code-insiders หรือ code ที่สอดคล้องกันจะต้องติดตั้งและพร้อมใช้งานบน PATH

telemetry ​

CLI จะเก็บ id ไม่ระบุตัวตนของคุณและว่าการแจ้งเตือนครั้งแรกถูกแสดงหรือไม่ ตั้งค่า telemetry.enabled เป็น false เพื่อปิดการส่งข้อมูล คุณยังสามารถยกเลิกได้ด้วย OPENSPEC_TELEMETRY=0 หรือ DO_NOT_TRACK=1 ในสภาพแวดล้อมของคุณ

ตัวอย่าง ​

config.json ที่เติมข้อมูล:

json
{
  "profile": "core",
  "delivery": "both",
  "featureFlags": {},
  "telemetry": {
    "anonymousId": "5f8a2c1e-4b6d-4f9a-9c3d-7e1b2a8d4c6f",
    "noticeSeen": true
  }
}