Junê (june-mcp)
ทางการมอบความทรงจำให้เอเจนต์ของคุณ: ความทรงจำกราฟความรู้ที่ใช้ร่วมกัน มีการอ้างอิง และแยกตามผู้เช่า สำหรับโฮสต์ MCP ใดๆ คำตอบที่มีพื้นฐานจากเอนด์พอยต์ June แบบ local-first — งดตอบแทนที่จะเดา
คุณทำอะไรได้บ้างด้วย Junê (june MCP?
- การอ้างอิงคำตอบจากหน่วยความจำ — ให้ผู้ช่วยของคุณตอบคำถามโดยอ้างอิงจากกราฟความรู้เดือนมิถุนายนของคุณ พร้อมแหล่งที่มาที่ตรวจสอบได้
- การค้นหาและการประกอบบริบท — ให้ผู้ช่วยของคุณค้นหาหลักฐานที่จัดอันดับสำหรับคำค้นหา หรือสร้างชุดบริบทตามงบประมาณโทเค็นผ่าน
june_searchหรือjune_context - การจดบันทึกแบบถาวร — บอกให้ผู้ช่วยของคุณจดจำข้อเท็จจริงหรือบันทึกลงในกราฟ เพื่อให้สามารถเรียกค้นและอ้างอิงได้ในภายหลังด้วย
june_remember - การจัดการคำสั่งถาวร — สั่งให้ผู้ช่วยของคุณบันทึกกฎหรือทักษะที่ยั่งยืนเป็นเอกสาร หรือเพิ่มบทเรียนที่มีวันที่กำกับ โดยใช้
june_doc_saveหรือjune_learn - การสำรวจกราฟ — ขอให้ผู้ช่วยของคุณแมปบริเวณรอบโหนด ส่งออกกราฟย่อยที่มีขอบเขตจำกัด หรือแสดงรายการสิ่งที่เชื่อมโยงไปยังหน้าเพจ ผ่าน
june_graph - การซิงโครไนซ์พื้นที่เก็บข้อมูล — สั่งให้ผู้ช่วยของคุณมิเรอร์เอกสารหรือหน้าเพจของ June ลงในพื้นที่เก็บข้อมูลของคุณ หรือนำเข้าไฟล์ที่แก้ไขกลับมา ด้วย
june_docs_exportหรือjune_page_import
เอกสาร
june-mcp
ให้เอเจนต์ของคุณมีความจำ june-mcp คือเซิร์ฟเวอร์ MCP อย่างเป็นทางการ
สำหรับ Junê — มันเชื่อมต่อโฮสต์ MCP ใดๆ (Claude Desktop, Claude
Code และอื่นๆ) เข้ากับ knowledge graph ของ June เพื่อให้เอเจนต์ของคุณสามารถ ถาม, ค้นหา, และ จดจำ
กับหน่วยความจำที่ใช้ร่วมกัน มีการอ้างอิง และแยกตามผู้เช่า
แพ็กเกจนี้เป็นตัวเชื่อมต่อแบบบาง ไม่มีตรรกะ: การดึงข้อมูล การประกอบกราฟ และการตอบคำถามทั้งหมด เกิดขึ้นที่ปลายทาง June ที่คุณชี้ไป ไม่มีโค้ดเอนจินอยู่ที่นี่ — ซึ่งเป็นเหตุผลว่าทำไมมันเล็กพอ ที่จะอ่านจบได้ในครั้งเดียว
Claude Desktop / Claude Code ──stdio──▶ june-mcp ──HTTPS──▶ your June endpoint
(graph · retrieval · answers)
การติดตั้ง
pip install june-mcp # just the connector (or: pipx install june-mcp)
pip install june-ai # umbrella: june-mcp + june-bench (the benchmark suite)
pip install "june-bench[mcp]" # the bench, with the connector as an extra
ชี้ไปที่ปลายทาง June
june-mcp พูดกับบริการ June ใดก็ได้ สามวิธีที่จะมีหนึ่ง:
- แอปเดสก์ท็อป Junê (local-first) รัน แอป Junê และเชื่อมต่อกับเอนจินในเครื่อง — ไฟล์ กราฟ และคีย์ของคุณจะอยู่บนเครื่องของคุณ
- บริการ June ของคุณเอง ลูกค้า Pro/Team ที่รันแพ็กเกจเอนจิน
june-localชี้JUNE_BASE_URLไปที่เซิร์ฟเวอร์ของตนเอง - โฮสต์ (Team) ชี้ไปที่ปลายทาง workspace June ที่โฮสต์ของคุณด้วยคีย์ API จาก คอนโซลของคุณ
การกำหนดค่า
เซิร์ฟเวอร์เป็นแบบ fail-closed: มันปฏิเสธที่จะเริ่มทำงานเว้นแต่จะรู้ว่าจะเชื่อมต่อที่ไหนและในฐานะใคร และบอกคุณ ทุกอย่าง ที่ขาดหายไปในข้อความเดียว (ไม่ใช่ทีละข้อผิดพลาด)
| env | จำเป็น | ความหมาย |
|---|---|---|
JUNE_BASE_URL | ✅ | ปลายทาง June ของคุณ เช่น http://localhost:8000 |
JUNE_CANVAS | ✅ | canvas (workspace) ที่จะผูกการเชื่อมต่อนี้ — ชื่อ (work) หรือ canvas id ชื่อจะถูกแปลงเป็น id ตอนเริ่มต้น; ชื่อที่กำกวมจะ fail-closed |
JUNE_CANVAS_CREATE | ไม่บังคับ | 1 สร้าง canvas ที่ระบุชื่อในการรันครั้งแรกหากยังไม่มี (ปฏิเสธในโหมดอ่านอย่างเดียว) |
JUNE_API_KEY | ✅ | คีย์ API June ของคุณ (JUNE_ALLOW_ANON=1 เลือกไม่ใช้อย่างชัดเจนสำหรับการตั้งค่าในเครื่องแบบไม่มีคีย์) |
JUNE_LLM_KEY | ไม่บังคับ | นำคีย์ LLM ของคุณเอง สำหรับคำตอบที่มีการอ้างอิง — ส่งต่อต่อคำขอเป็น header ไม่มีการบันทึก ไม่มีการเก็บบนบริการ |
JUNE_READONLY | ไม่บังคับ | 1 ซ่อนและปฏิเสธเครื่องมือเขียนทั้งหมด (หน่วยความจำกลายเป็นอ่านอย่างเดียว) |
JUNE_TOOL_PROFILE | ไม่บังคับ | compact (ค่าเริ่มต้น), full, หรือ lean compact รวมเครื่องมือที่เกี่ยวข้อง 17 รายการเป็นเครื่องมือตระกูลเจ็ดรายการที่รับอาร์กิวเมนต์ op — แสดงเครื่องมือ 20 รายการแทน 37 รายการ, 11,359 prompt tokens แทน 13,236 บนการเชื่อมต่อ Pro แบบอ่าน-เขียน ทุกการเรียกถูกส่งไปยังโค้ดเดียวกันเหมือนเดิม ดังนั้น gates, canvas rules, receipts และ two-phase confirms ไม่เปลี่ยนแปลง วัดบนสี่โฮสต์ก่อนที่จะกลายเป็นค่าเริ่มต้น: Claude Code 1.000 task success (baseline 0.987), GPT-5.4 direct 0.983 (0.957), Codex 0.922 (0.763), ไม่มีการลบที่ไม่ปลอดภัยในทุกแขน full แสดงสมาชิก 37 รายการภายใต้ชื่อของตนเอง — โค้ดเดียวกัน หนึ่งชื่อต่อหนึ่ง lean เปิดเผยเฉพาะหกคำกริยาที่เอเจนต์เขียนโค้ดใช้ (june_answer / june_context / june_search / june_remember / june_learn / june_usage) พร้อม handshake หนึ่งย่อหน้า ~2.5k tokens — สำหรับเซสชันที่ต้องการแค่ถามและจดจำ |
JUNE_FILES_ROOT | ไม่บังคับ | ไดเรกทอรีที่เอเจนต์เลือกเข้าร่วมสามารถอัปโหลดไฟล์ผ่าน june_ingest_file — ไม่ตั้งค่า ⇒ เครื่องมือนั้นไม่มีอยู่ |
JUNE_TIMEOUT_READ / JUNE_TIMEOUT_RETRIEVAL / JUNE_TIMEOUT_ANSWER | ไม่บังคับ | งบเวลาในแต่ละคลาสของคำกริยา (ค่าเริ่มต้น 15 วินาที / 90 วินาที / 120 วินาที): การอ่านเร็ว; june_context, ซึ่งจัดอันดับผู้สมัครใหม่ทั้งหมด; คำตอบ ซึ่งมีการเรียกโมเดล |
JUNE_TOOL_CONCURRENCY | ไม่บังคับ | จำนวนการเรียกเครื่องมือสูงสุดที่ทำงานพร้อมกันบนการเชื่อมต่อนี้ (ค่าเริ่มต้น 8) โฮสต์ทำ pipeline คำขอบนสตรีมเดียว นี่คือเพดานที่ชัดเจน — การเรียกเกินจะเข้าคิว ไม่มีการเบียดกัน |
JUNE_DOCS_CANVAS | ไม่บังคับ | Canvas ที่เก็บ เอกสารเอเจนต์ (คำสั่งประจำ/ทักษะ — ดู หน่วยความจำเอเจนต์ ด้านล่าง) ค่าเริ่มต้น agent_docs; สร้างเมื่อ june_doc_save ครั้งแรก |
JUNE_DOCS_REFRESH | ไม่บังคับ | 0 ปิดการย่อย standing_docs เป็นระยะ (ค่าเริ่มต้น เปิด — เป็นตาข่ายนิรภัยป้องกันการลืม) |
JUNE_DOCS_REFRESH_CALLS / JUNE_DOCS_REFRESH_MINUTES | ไม่บังคับ | จังหวะการย่อย: ครบกำหนดทุก N การเรียกเครื่องมือ (ค่าเริ่มต้น 12) หรือ M นาที (ค่าเริ่มต้น 10) แล้วแต่อย่างใดถึงก่อน |
JUNE_DOCS_DIGEST_CHARS | ไม่บังคับ | ขีดจำกัดขนาดการย่อยแบบอนุกรม (ค่าเริ่มต้น 2000) |
JUNE_EXPORT_ROOT | ไม่บังคับ | ไดเรกทอรี repo ที่เอเจนต์เลือกเข้าร่วมสามารถ ส่งออก หน้า/เอกสาร June เป็นไฟล์ (ดู Repo sync ด้านล่าง) — ไม่ตั้งค่า ⇒ เครื่องมือ repo-sync สามรายการไม่มีอยู่ |
JUNE_EXPORT_GIT | ไม่บังคับ | 1 commit เฉพาะไฟล์ที่การส่งออกแต่ละครั้งเขียน (จำกัดด้วย pathspec, ไม่ push) |
JUNE_EXPORT_DIR | ไม่บังคับ | ซับทรีเอกสารเอเจนต์ภายใน root (ค่าเริ่มต้น docs/agent) |
JUNE_LOG_LEVEL | ไม่บังคับ | การบันทึกเป็น stderr-only โดยการออกแบบ — stdout คือสาย MCP |
ตรวจสอบก่อนที่เอเจนต์ของคุณจะทำ
JUNE_BASE_URL=http://localhost:8000 JUNE_API_KEY=... JUNE_CANVAS=work june-mcp --doctor
doctor ตรวจสอบตามลำดับ: การกำหนดค่า → บริการเข้าถึงได้ → การแก้ไข canvas (canvas ชื่อ ของคุณ
→ id ของมัน เช่น name "work" → 9147bee6-…) → ความสมบูรณ์ของ seam การค้นหา → manifest เครื่องมือ และ
พิมพ์ PASS/FAIL ต่อการตรวจสอบพร้อมคำแนะนำที่แมปไว้ (เช่น ชื่อที่ขาดหายไปจะแสดงรายการ canvas ที่มี
อยู่และชี้ไปที่ JUNE_CANVAS_CREATE=1) doctor ออก 0 เฉพาะเมื่อการตรวจสอบทั้งหมดผ่าน
(1 มิฉะนั้น); เซิร์ฟเวอร์เองออก 2 เมื่อมีข้อผิดพลาดการกำหนดค่าแทนที่จะเริ่มแบบครึ่งๆ กลางๆ
รัน doctor ก่อน; มันจับข้อผิดพลาดการกำหนดค่าทั่วไปทั้งหมดก่อนที่เอเจนต์ของคุณจะเห็นเซิร์ฟเวอร์
เชื่อมต่อกับ Claude
Claude Desktop — รวมเข้ากับ claude_desktop_config.json (Settings → Developer):
{
"mcpServers": {
"june": {
"command": "june-mcp",
"env": {
"JUNE_BASE_URL": "http://localhost:8000",
"JUNE_API_KEY": "your-key",
"JUNE_CANVAS": "work",
"JUNE_LLM_KEY": "your-llm-provider-key"
}
}
}
}
Claude Code:
claude mcp add june -e JUNE_BASE_URL=http://localhost:8000 \
-e JUNE_API_KEY=your-key -e JUNE_CANVAS=work \
-e JUNE_LLM_KEY=your-llm-provider-key -- june-mcp
รีสตาร์ทโฮสต์ทั้งหมด (Cmd+Q บน macOS) จากนั้นตรวจสอบว่าเซิร์ฟเวอร์แสดง 20 เครื่องมือ —
พื้นผิว compact ซึ่งเป็นค่าเริ่มต้นตั้งแต่ 0.4.2 JUNE_TOOL_PROFILE=full แสดงรายการ
ความสามารถเดียวกันกับเครื่องมือ 37 รายการที่ตั้งชื่อแยกกันแทน (38 เมื่อคุณเลือกใช้ june_ingest_file
ผ่าน JUNE_FILES_ROOT)
เครื่องมือ
พื้นผิวค่าเริ่มต้นคือ compact: 20 เครื่องมือ เจ็ดรายการจัดกลุ่มการดำเนินการที่เกี่ยวข้องไว้ด้านหลัง
อาร์กิวเมนต์ op JUNE_TOOL_PROFILE=full แสดงสมาชิก 37 รายการภายใต้ชื่อของตนเองแทน — ความสามารถ
เดียวกัน gates เดียวกัน พฤติกรรมเดียวกัน
| เครื่องมือตระกูล | การดำเนินการ | รวม |
|---|---|---|
june_graph | neighborhood, subgraph, backlinks | june_neighborhood, june_subgraph, june_backlinks |
june_maintain | enrich, resolve | june_enrich, june_resolve |
june_page_read | list, get, removed, grammar | june_page_list, june_page_get, june_page_removed (+ ไวยากรณ์บล็อกตามความต้องการ) |
june_page_edit | create, append, update, insert, move, rename, meta, restore | june_page_create, june_page_append, june_page_update, june_page_insert, june_page_move, june_page_rename, june_page_meta, june_page_restore |
june_canvas_read | list, current, use | june_canvas_list, june_canvas_current, june_canvas_use |
june_canvas_erase | clear, delete | june_canvas_clear, june_canvas_delete |
june_docs_read | refresh, list, get | june_docs_refresh, june_doc_list, june_doc_get |
ทุกอย่างอื่นคงชื่อของตัวเอง: june_answer, june_search, june_enumerate, june_context,
june_usage, june_remember, june_ingest, june_page_write, june_page_delete,
june_canvas_create, june_doc_save, june_doc_delete, june_learn คำกริยาที่ ลบ
บางสิ่งได้จะไม่ถูกรวมกับคำกริยาที่ลบไม่ได้ — ดังนั้น june_page_write และ june_page_delete
แยกจาก june_page_edit และแต่ละตระกูลมี destructiveHint ที่ตรงไปตรงมาหนึ่งรายการ
ชื่อเก่ายังทำงานในเอกสารเอเจนต์ที่บันทึกไว้: handshake แบบ compact นำแผนที่
ชื่อเก่า → ชื่อใหม่ และการเรียกชื่อที่ถูกรวมจะถูกปฏิเสธพร้อมตัวแทนที่แน่นอน
(june_page_get is not a tool on this surface (compact): call june_page_read with op='get')
แต่ละการดำเนินการทำอะไร:
| เครื่องมือ | สิ่งที่เอเจนต์ของคุณได้รับ |
|---|---|
june_answer | คำตอบที่มีการอ้างอิงและ อ้างอิงแหล่งที่มา จากกราฟ — งดตอบแทนการเดา |
june_search | หลักฐานที่จัดอันดับสำหรับคำถาม (รองรับ multi-hop) |
june_context | ชุดบริบทที่ประกอบขึ้นภายใต้งบ token |
june_neighborhood | กราฟรอบโหนดหนึ่ง |
june_subgraph | การส่งออกซับกราฟแบบจำกัดขอบเขต |
june_backlinks | สิ่งที่เชื่อม ไปยัง โหนดหนึ่ง (ขอบขาเข้า) |
june_remember | เขียนข้อเท็จจริง/บันทึกลงในกราฟ (ค้นหาได้ + อ้างอิงได้ทันที) ข้อความยาวรันเป็นงานเอนจิน: ผลลัพธ์ของ {state: running, job_id} ถูกรวบรวมด้วย june_remember(job_id=…) — อย่าส่งข้อความซ้ำ ข้อความที่วางถูกระบุเนื้อหาบนเอนจิน (v0.0.13) ดังนั้นการส่งข้อความเดียวกันซ้ำจะ upsert โหนดเดียวกัน; ไม่สามารถทำซ้ำได้ |
june_ingest | การนำเข้าโหนด/ขอบแบบมีโครงสร้าง |
june_enumerate | โหนดที่ตรงกับ predicate สำหรับคำถาม "แสดง ALL X" (ไม่ใช่ top-k) เฉพาะ exhaustive: true พิสูจน์ว่ารายการสมบูรณ์; ผลลัพธ์สั้นหรือว่างโดยไม่มีมันไม่ได้พิสูจน์ว่าไม่มีอย่างอื่นตรง |
june_ingest_file | อัปโหลดไฟล์ท้องถิ่นหนึ่งไฟล์ (pdf/docx/xlsx/csv/html/md/รูปภาพ/เสียง) จากโฟลเดอร์ที่ผู้ปฏิบัติงานอนุมัติ — มีอยู่เฉพาะเมื่อคุณตั้ง JUNE_FILES_ROOT |
june_enrich | Pro: การสกัดใหม่เบื้องหลังของ canvas ด้วยเอนจินที่สมบูรณ์กว่า (idempotent; งาน + poll; 403 บนฟรี) |
june_resolve | การบำรุงรักษา: รวมเอนทิตีที่ซ้ำกันผ่านขอบ same_as ที่ย้อนกลับได้ (รันฝั่งเซิร์ฟเวอร์; strong_only=false ปลดล็อกชั้นความหมายบน Pro) |
june_docs_refresh / june_doc_list / june_doc_get | อ่าน เอกสารประจำ ของเอเจนต์ — การย่อยเต็ม, รายการทะเบียน, เนื้อหาของเอกสารหนึ่ง |
june_doc_save / june_doc_delete / june_learn | เขียนเอกสาร — สร้าง/แทนที่เอกสารหรือทักษะ, การลบสองเฟส, เพิ่มบทเรียนหนึ่งรายการพร้อมวันที่ |
june_page_insert / june_page_move | วางบล็อกใหม่หลังบล็อกที่ระบุชื่อ หรือจัดลำดับบล็อกใหม่ด้วย id — โดยไม่ต้องส่งหน้าซ้ำ (ต้องใช้เอนจินที่มีฟีเจอร์หน้า positions) |
june_page_rename / june_page_meta | เปลี่ยนชื่อหน้า หรือปักหมุด / ตั้งกลุ่มในรายการหน้าของคุณ — บล็อกไม่ถูกแตะ |
june_page_removed / june_page_restore | ดูสิ่งที่หน้าสูญเสีย และนำบล็อกกลับมาพร้อม id และตำแหน่งเดิม |
june_usage | ใบเสร็จการใช้งาน — สิ่งที่ June ให้บริการจริง วัดด้วย tokenizer ที่ระบุชื่อ ไม่เคยประมาณ ใบเสร็จหนึ่งฉบับเต็ม (receipt_id) หรือสรุปหน้าต่าง (window); ตัวเลขการประหยัดปรากฏเฉพาะในการเรียกที่รายงานการใช้งานสองรายการจากผู้ให้บริการถูกวัดจริง |
ใบเสร็จในการอ่านทุกครั้ง
เมื่อเอนจินรันด้วย JUNE_USAGE=1 (เดสก์ท็อป: Settings → Usage receipts) ทุก
ผลลัพธ์ june_answer / june_context / june_search ยังพก receipt และ
receipt_footer หนึ่งบรรทัด:
receipt r_7f…: served 812 tokens (exact, tiktoken:cl100k_base) from 3 blocks across 2 docs
· 1 doc this session already had — june_usage(receipt_id="r_7f…") shows it in full
ตัวเชื่อมต่อส่ง X-June-Source: mcp และ id X-June-Session หนึ่งรายการต่อกระบวนการเซิร์ฟเวอร์ ดังนั้น
เอนจินสามารถบันทึกว่าเอกสารใดที่เซสชันเอเจนต์นี้มีแล้ว (การอ่านซ้ำที่หลีกเลี่ยง)
ส่วนท้ายไม่เคยพูดว่า "saved": คำนั้นมีอยู่เฉพาะบนใบเสร็จที่ถือคู่วัด ส่วนท้ายของเอนจินที่ไม่มีใบเสร็จจะไม่ส่ง และ
june_usage ตอบอย่างตรงไปตรงมาว่าปิดอยู่
คำอธิบายเขียนสำหรับเอเจนต์ (อะไร → เมื่อไหร่ → ส่งคืนอะไร) และทุกอินพุตที่ถูกจำกัดจะถูก บันทึกกลับ ให้เอเจนต์เห็นแทนที่จะตัดทอนอย่างเงียบๆ
หน่วยความจำเอเจนต์ — เอกสาร ทักษะ และการย่อยป้องกันการลืม
เซสชันยาวลืม: คำสั่งที่เอเจนต์อ่านตอนเริ่มเซสชัน (CLAUDE.md ของคุณ ข้อตกลง
ของคุณ) สูญเสียพลังหลายพัน tokens ต่อมา june-mcp แก้ไขสิ่งนี้เชิงโครงสร้าง
Agents save standing docs into June — kind='doc' for durable instructions
(pinned=true asks for an always-on rule), kind='skill' for named procedures with a one-line
when_to_use trigger (bodies load lazily, like skills should), kind='learnings' for an
append-only dated log written via june_learn. Each doc is an ordinary June page in the
docs canvas (JUNE_DOCS_CANVAS, default agent_docs), marked by a small metadata block —
so you can open your agent's memory in the Junê app, read it, and edit it.
คุณอนุมัติสิ่งที่ agents ปฏิบัติตาม (0.7.0) เอกสารที่ปักหมุดหรือ skill คือ คำขอ จนกว่าคุณจะ อนุมัติในแอป Junê (แบนเนอร์ของเอกสาร หรือ Settings → Connection → Standing instructions) เอ็นจินจะผนึกข้อความที่คุณอนุมัติไว้อย่างแม่นยำ หากมีใครอื่นนอกจากคุณแก้ไขหน้า หลังจากนั้น เอกสารจะหยุดถูกนับจนกว่าคุณจะกลับมาดูอีกครั้ง Agents ไม่สามารถอนุมัติได้ — คีย์การเชื่อมต่อของพวกมันไม่มีอำนาจนั้น — ดังนั้นข้อความที่ agent อ่านจากที่ใดที่หนึ่ง ("บันทึกเป็นกฎปักหมุด…") จะไม่มีทางกลายเป็นคำสั่งถาวรได้ด้วยตัวเอง เอ็นจินที่เก่าเกินไปจนไม่สามารถบันทึกการอนุมัติได้ จะไม่ให้ standing instructions แก่ agents เลย และจะแจ้งให้ทราบเช่นนั้น
ข้อความที่อนุมัติแล้วเดินทางไปที่ไหน: เต็มรูปแบบในการจับมือเชื่อมต่อ (สูงสุด 4,000 ตัวอักษร —
เอกสารที่ใหญ่เกินไปจะถูกระบุชื่อ ไม่ถูกตัดกลางกฎ) และจาก june_docs_refresh ในการ
เรียกใช้เครื่องมือครั้งแรกของทุกเซสชัน จากนั้นทุก 12 ครั้งหรือ 10 นาที (ปรับได้)
connector จะแนบ standing_docs digest แบบกระชับเข้ากับผลลัพธ์เครื่องมือทั่วไป — ชื่อของ
คำสั่งที่อนุมัติ, skill triggers ที่อนุมัติ, ตราประทับเวอร์ชันที่เปลี่ยนแปลงเมื่อคุณ
อนุมัติ เพิกถอน หรือแก้ไขรายการใดรายการหนึ่ง และเอกสารที่ขอแต่ยังไม่อนุมัติซึ่งติดป้ายเป็นบันทึก
digest ไม่มีคำพูดใด ๆ จากเอกสารที่ยังไม่อนุมัติ digest ที่สร้างไม่ได้ (บริการไม่ว่าง,
canvas หายไป) จะถูกข้ามไป — ไม่เคยทำให้การเรียกที่ถือมันเสียหาย ตั้งค่า
JUNE_DOCS_REFRESH=0 เพื่อปิด digest; เครื่องมือเอกสารยังคงทำงานต่อไป
June สอน agents วิธีใช้งาน — จากภายในตัวมันเอง การบันทึกครั้งแรกจะสร้าง docs
canvas และเพาะ agent-memory-guide: คู่มือการใช้งาน (อะไรควรอยู่ใน system
canvas เทียบกับ workstream canvas, สามประเภทและเมื่อใดควรใช้แต่ละแบบ, การตั้งชื่อ, สิ่งที่ควรปักหมุด,
วินัยในการแก้ไข, การซิงค์ repo) มันถูกระบุไว้ในทุก registry และ digest, agents อ่านด้วย
june_doc_get('agent-memory-guide') เมื่อใดก็ตามที่ไม่แน่ใจ — และมันเป็นหน้าธรรมดาที่คุณแก้ไขได้ ก่อนที่จะบันทึกอะไร
empty states จะส่งคืน setup walkthrough แทนการยักไหล่ และ june_memory_setup prompt
จะให้ agent สัมภาษณ์คุณและบันทึกข้อตกลงของคุณเป็นเอกสารชุดแรก
ทำให้ June เป็นอัตโนมัติ — agent พึ่งพามันโดยไม่ต้องบอก
"ใช้ June" ไม่ควรต้องพูดซ้ำ กลไกสามอย่างซ้อนกันเพื่อทำให้การใช้งานเป็นอัตโนมัติ แต่ละอย่าง ครอบคลุมจุดบอดของกลไกก่อนหน้า:
-
Host hook (ปิดช่องโหว่การเริ่มต้นเย็น) เซิร์ฟเวอร์ไม่สามารถพูดได้จนกว่า agent จะเรียก ครั้งแรก — ดังนั้นติดตั้ง standing instructions ของ June ลงในไฟล์ที่ host ของคุณโหลดโดยกำเนิด ทุกเซสชัน:
JUNE_EXPORT_ROOT=/path/to/project june-mcp --install-instructions # → CLAUDE.md JUNE_EXPORT_ROOT=/path/to/project june-mcp --install-instructions AGENTS.md # other agentsมันถูกเขียนเป็น managed section (เนื้อหาของคุณไม่ถูกแตะต้อง; การรันซ้ำจะอัปเดตในตำแหน่งเดิม) และมันวางท่าที june-first — ตรวจสอบ June ก่อนที่จะอ้างว่าไม่รู้, จดจำข้อเท็จจริงโดยไม่ต้องขอ, เรียนรู้บทเรียนเมื่อมันเกิดขึ้น — ลงใน system prompt เอง
-
คำอธิบายเครื่องมือเชิงรุก (ไม่เสื่อมสลาย) คำอธิบายของคำกริยาหลักบอกโมเดล เมื่อใดควรใช้โดยไม่ต้องถูกขอ — และคำอธิบายจะถูกอ่านซ้ำทุกเทิร์น ในทุก MCP host โดยไม่ต้องอาศัยความร่วมมือใด ๆ
-
ท่าที june-first ในการจับมือ ท่าทีเริ่มต้นของ June ถูกสร้างไว้ใน คำสั่งของการเชื่อมต่อ (0.7.0; รุ่นก่อนหน้าเพาะมันเป็นเอกสารปักหมุด — seed ที่ไม่ถูกแตะต้องตอนนี้ถูกซ่อน, seed ที่ถูกแก้ไขเป็นของคุณและต้องได้รับการอนุมัติเหมือนเอกสารอื่น)
สิ่งที่ไม่มี MCP server ใดทำได้ — พูดตรง ๆ — คือบังคับให้ host ลงมือ: agent ที่ host ซ่อน
SERVER_INSTRUCTIONS และ ไม่มีไฟล์คำสั่ง และ ไม่เคยเรียก June แม้ครั้งเดียวจะยังคง
เย็น กลไกที่ 1 มีไว้เพื่อให้กรณีนั้นไม่เกิดขึ้นในทางปฏิบัติ
การซิงค์ repo — repo คงความทันสมัยกับสิ่งที่ June รู้
เลือกใช้ด้วย JUNE_EXPORT_ROOT=<your repo> และเครื่องมืออีกสามตัวจะปรากฏ:
| เครื่องมือ | มันทำอะไร |
|---|---|
june_docs_export | สะท้อนเอกสาร agent ทุกฉบับไปยัง docs/agent/<name>.md — repo มี standing instructions ปัจจุบันเสมอ |
june_page_export | ส่งออกหน้าใด ๆ ไปยังไฟล์ที่จัดการ หรือ managed section ที่แทรกระหว่างเครื่องหมายภายในไฟล์ที่มีอยู่ (path=KNOWHOW.md section=june-learnings) — เฉพาะพื้นที่ที่ทำเครื่องหมายเท่านั้นที่ถูกแตะต้อง |
june_page_import | ทางกลับ: แก้ไขไฟล์ที่ส่งออกในตัวแก้ไขของคุณแล้วนำกลับเข้าไปในหน้า June ของมัน — เอกสาร agent คงเอกลักษณ์ไว้ และไฟล์ที่เก่าจะถูก ปฏิเสธ แทนที่จะปล่อยให้ทับความรู้ใหม่ |
กฎความปลอดภัย ทั้งหมดบังคับในโค้ดและยึดด้วยการทดสอบ: ทุกพาธถูกล้อมภายใน root
(การตรวจ .. แบบ lexical และ การแก้ symlink); ไฟล์ที่ june-mcp ไม่ได้เขียนจะไม่มีวันถูก
เขียนทับ; ไม่มีอะไรถูกลบ; และด้วย JUNE_EXPORT_GIT=1 การส่งออกแต่ละครั้งจะคอมมิตเฉพาะ
ไฟล์ที่มันเขียน — จำกัดด้วย pathspec เพื่อไม่ให้งานที่คุณ staged ถูกกวาดเข้าไป และ push ไม่มีวัน
เกิดขึ้น ไฟล์ที่ส่งออกมี frontmatter และกำหนดไบต์ได้ ดังนั้นเอกสารที่ไม่เปลี่ยนแปลง
จะส่งออกใหม่เป็นไฟล์ที่เหมือนกันและ git เงียบ
manifest (.june-export.json) ทำให้ตรวจสอบความทันสมัยได้ — สองโหมด CLI สำหรับ CI:
june-mcp --export # sync agent docs + every managed page/section, commit if enabled
june-mcp --export-check # write NOTHING; exit 1 if the repo has drifted from June
--export-check ใน CI เปลี่ยน "เอกสารอัปเดตหรือยัง?" จากความหวังเป็นการ build ที่ล้มเหลว
ฟรี vs Pro — แท็ก june-pro
june-mcp คือหนึ่งแพ็คเกจสำหรับทุกคน ไม่มี "pro build" แยก Pro เป็นคุณสมบัติ
ของ endpoint ไม่ใช่ connector: เชื่อมต่อกับ June ที่เปิดใช้งาน Pro (ใบอนุญาต Pro ใน
แอป, คีย์ Pro บน hosted workspace) และเครื่องมือเดียวกันให้ผลลัพธ์ระดับ Pro: ทุก
june_remember และ june_ingest_file write จะรันเอ็นจิน entity/edge ที่สมบูรณ์กว่าโดยอัตโนมัติ
(ผลลัพธ์รายงานว่า engine ใดทำงาน), june_resolve อัปเกรดเป็นการจับคู่เชิงความหมาย และ
june_enrich เติมเต็มความทรงจำที่เขียนบนชั้นฟรีก่อนที่คุณจะอัปเกรด เทอร์มินัล
แสดงว่าคุณอยู่ในโลกใด: --doctor พิมพ์บรรทัด edition และแบนเนอร์เริ่มต้นของ
เซิร์ฟเวอร์ติดแท็กการเชื่อมต่อ —
june-mcp: connected http://localhost:8000 canvas name "work" → 11d2… [june-pro]
แท็กถูกอ่านจาก /v1/whoami ของบริการเอง (สถานะสิทธิ์เดียวกันที่ควบคุม
Pro routes ฝั่งเซิร์ฟเวอร์) ดังนั้นมันไม่สามารถขัดแย้งกับสิ่งที่คุณได้รับจริง — และมันเป็น
การแสดงผลเท่านั้น: สิทธิ์ถูกบังคับบนบริการไม่ว่าคลายต์ใดจะพิมพ์อะไร
บริการเก่าที่ไม่มี /v1/whoami จะไม่แสดงแท็กเลย
โมเดลความปลอดภัย
พื้นผิวเครื่องมือไม่เปิดเผย พารามิเตอร์ canvas/workspace — workspace ถูกผูกฝั่งเซิร์ฟเวอร์
จากบริบทการเชื่อมต่อของคุณ, fail-closed การอ่านข้าม tenant ไม่ใช่การตรวจสอบสิทธิ์ที่
อาจเปิดกว้าง; มัน ไม่สามารถแสดงได้ จากฝั่งคลายต์ JUNE_READONLY=1 เพิ่มรั้วที่สอง
สำหรับการปรับใช้แบบอ่านอย่างเดียว คีย์ BYO LLM ของคุณเดินทางกับคำขอคำตอบแต่ละครั้งเป็น header และไม่เคย
ถูกจัดเก็บหรือบันทึกโดยบริการ
ข้อผิดพลาด
ความล้มเหลว upstream ทุกครั้งจับคู่กับ payload ข้อผิดพลาดแบบพิมพ์และตัดข้อมูล (สร้างจากประเภท exception + HTTP status เท่านั้น — ไม่เคยจาก response bodies) ดังนั้นเซิร์ฟเวอร์รอดจากทุกสิ่งที่ endpoint โยนมา และ agent ของคุณเห็นข้อความที่ชัดเจนและนำไปปฏิบัติได้
ใบอนุญาต
MIT เอ็นจิน Junê เองเป็นผลิตภัณฑ์แยกที่ปิดซอร์ส — connector นี้คือส่วนเปิด โดยการออกแบบ