CLI Reference¶
OpenJarvis มี command-line interface ผ่านคำสั่ง jarvis สร้างขึ้นบน
Click มีคำสั่งย่อยสำหรับถามคำถาม
โมเดล, จัดการ memory, รัน benchmark และให้บริการ API ที่เข้ากันได้กับ OpenAI
ตัวเลือกทั่วไป¶
jarvis --version # Print the OpenJarvis version
jarvis --help # Show top-level help with all subcommands
jarvis init¶
ตรวจจับฮาร์ดแวร์ในเครื่อง (CPU, GPU, RAM) และสร้างไฟล์ configuration ที่
~/.openjarvis/config.toml
jarvis init # Interactive — refuses to overwrite existing config
jarvis init --force # Overwrite existing config without prompting
| ตัวเลือก | คำอธิบาย |
|---|---|
--force |
เขียนทับ configuration ที่มีอยู่โดยไม่ถาม |
คำสั่ง init จะตรวจจับสิ่งเหล่านี้อัตโนมัติ:
- แพลตฟอร์ม (Linux, macOS, Windows)
- ยี่ห้อและจำนวนคอร์ของ CPU
- RAM เป็น GB
- ยี่ห้อ, รุ่น, VRAM และจำนวนของ GPU (ผ่าน
nvidia-smi,rocm-smiหรือsystem_profiler)
จากฮาร์ดแวร์ที่ตรวจจับได้ มันจะแนะนำ inference engine ที่เหมาะสมและเขียน ไฟล์ TOML ที่ตั้งค่าไว้ล่วงหน้า
ตัวอย่างผลลัพธ์:
Detecting hardware...
Platform : linux
CPU : AMD Ryzen 9 7950X (32 cores)
RAM : 64 GB
GPU : NVIDIA RTX 4090 (24.0 GB VRAM, x1)
Config written successfully.
jarvis ask¶
ส่งคำถามไปยัง inference engine (โดยตรงหรือผ่านเอเจนต์) แล้วพิมพ์คำตอบ
ตัวเลือก¶
| ตัวเลือก | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
-m, --model MODEL |
string | อัตโนมัติ | โมเดลที่ใช้สำหรับ inference |
-e, --engine ENGINE |
string | อัตโนมัติ | Engine backend (ollama, vllm, llamacpp ฯลฯ) |
-t, --temperature TEMP |
float | 0.7 |
Temperature ของ sampling |
--max-tokens N |
int | 1024 |
จำนวน token สูงสุดที่จะสร้าง |
--json |
flag | ปิด | แสดงผลลัพธ์เป็น JSON ดิบแทนข้อความล้วน |
--no-stream |
flag | ปิด | ปิดการสตรีมมิง (โหมด synchronous) |
--no-context |
flag | ปิด | ปิดการแทรกบริบทจาก memory |
-a, --agent AGENT |
string | ไม่มี | เอเจนต์ที่ใช้ (simple, orchestrator) |
--tools TOOLS |
string | ไม่มี | ชื่อ tool ที่จะเปิดใช้ คั่นด้วยคอมมา |
-i, --image PATH |
path | ไม่มี | ไฟล์รูปภาพสำหรับ vision model (เช่น gemma3:4b); ใช้ซ้ำได้ |
-S, --screen |
flag | ปิด | จับภาพหน้าจอปัจจุบันแล้วส่งให้ vision model |
Direct Mode เทียบกับ Agent Mode¶
Direct mode (ค่าเริ่มต้น) ส่งคำถามตรงไปยัง inference engine:
Agent mode จัดเส้นทางคำถามผ่านเอเจนต์ที่ใช้ tool ได้และจัดการการโต้ตอบ แบบหลายรอบ:
jarvis ask --agent orchestrator "What is 2+2?"
jarvis ask --agent orchestrator --tools calculator,think "Calculate sqrt(144) + 3^2"
jarvis ask --agent simple "Hello"
ตัวอย่างการใช้งาน¶
# Basic query
jarvis ask "What is machine learning?"
# Specify a model
jarvis ask -m qwen3:8b "Summarize this concept"
# Use the orchestrator agent with tools
jarvis ask --agent orchestrator --tools calculator "What is 15% of 340?"
# Get JSON output
jarvis ask --json "Hello"
# Disable memory context injection
jarvis ask --no-context "Tell me about Python"
# Set maximum token generation
jarvis ask --max-tokens 2048 "Write a detailed essay about AI"
อินพุตแบบ Vision¶
โมเดลที่รองรับ vision (เช่น gemma3:4b) อ่านรูปภาพควบคู่กับ text prompt ของ
คุณได้ แนบไฟล์รูปภาพหนึ่งไฟล์หรือมากกว่าด้วย -i/--image หรือจับภาพหน้า
จอปัจจุบันด้วย -S/--screen:
# Ask about a local image
jarvis ask -i screenshot.png "What is shown in this image?"
# Send multiple images (the flag is repeatable)
jarvis ask -i chart-a.png -i chart-b.png "Compare these two charts"
# Capture the current screen and ask about it
jarvis ask --screen "Summarize what's on my screen"
Vision รันเฉพาะใน direct mode เท่านั้น หากคุณส่ง --agent ไปด้วย รูปภาพ
จะถูกข้ามและมีข้อความแจ้ง — รันใหม่ด้วย --agent "" เพื่อบังคับ direct mode
Context window ของ Ollama ปรับได้สำหรับรูปภาพขนาดใหญ่หรือ prompt ยาวๆ ด้วย
environment variable JARVIS_NUM_CTX (ค่าเริ่มต้น 16384):
รักษา Vision ให้อยู่ในเครื่อง
รูปภาพเป็นข้อมูล sensitive OpenJarvis จะพิมพ์คำเตือนความเป็นส่วนตัวก่อนส่งรูปภาพไปยัง engine ที่ไม่ใช่ local ดังนั้นภาพหน้าจอจะไม่ออกจากเครื่องของคุณโดยไม่รู้ตัว ใช้ engine แบบ local (เช่น ollama กับ gemma3:4b) เพื่อให้ vision อยู่ในเครื่องทั้งหมด
รูปแบบผลลัพธ์ JSON¶
เมื่อใช้ --json ใน direct mode ผลลัพธ์จะมี:
{
"content": "The response text...",
"usage": {
"prompt_tokens": 12,
"completion_tokens": 85,
"total_tokens": 97
}
}
เมื่อใช้ --json ใน agent mode ผลลัพธ์จะมี:
{
"content": "The response text...",
"turns": 3,
"tool_results": [
{
"tool_name": "calculator",
"content": "51.0",
"success": true
}
]
}
jarvis model¶
จัดการและตรวจสอบโมเดลภาษาที่มีอยู่บน engine ที่กำลังรันอยู่
jarvis model list¶
แสดงรายการโมเดลทั้งหมดที่มีจาก inference engine ที่กำลังรันอยู่ แสดงเป็น ตาราง Rich พร้อมพารามิเตอร์โมเดล, ความยาวบริบท และความต้องการ VRAM
ตัวอย่างผลลัพธ์:
Available Models
┌─────────┬────────────────┬────────┬─────────┬──────┐
│ Engine │ Model │ Params │ Context │ VRAM │
├─────────┼────────────────┼────────┼─────────┼──────┤
│ ollama │ qwen3:8b │ 8B │ 32,768 │ 6GB │
│ ollama │ llama3.2:3b │ 3B │ 8,192 │ 3GB │
└─────────┴────────────────┴────────┴─────────┴──────┘
jarvis model info <model>¶
แสดงข้อมูลแบบละเอียดของโมเดลที่ระบุ
ตัวอย่างผลลัพธ์:
┌─ Qwen 3 8B ──────────────────────────────┐
│ Model ID: qwen3:8b │
│ Name: Qwen 3 8B │
│ Parameters: 8B │
│ Context: 32,768 │
│ Quantization: none │
│ Min VRAM: 6GB │
│ Engines: ollama, vllm │
│ Provider: Alibaba │
│ API Key: not required │
└───────────────────────────────────────────┘
jarvis model pull <model>¶
ดาวน์โหลดโมเดลผ่าน Ollama แสดง progress bar ระหว่างดาวน์โหลด
Note
คำสั่ง pull ต้องการ instance ของ Ollama ที่กำลังรันอยู่ มันเชื่อมต่อกับ API ของ Ollama ที่ host ซึ่งตั้งค่าไว้ใน config.toml ของคุณ
jarvis pearl¶
เข้าถึง node, wallet และเครื่องมือ RPC เนทีฟของ Pearl จาก CLI ของ OpenJarvis
jarvis pearl doctor
jarvis pearl node -- <pearld args>
jarvis pearl wallet -- <oyster args>
jarvis pearl ctl -- <prlctl args>
jarvis pearl address
คำสั่ง wrapper ของ Pearl ทั้งหมดใช้รูปแบบ jarvis pearl <command> คำสั่ง
pass-through map ไปยัง binary เนทีฟของ Pearl:
| คำสั่งของ OpenJarvis | Binary ของ Pearl | ใช้สำหรับ |
|---|---|---|
jarvis pearl doctor |
n/a | ตรวจสอบว่าค้นพบ pearld, oyster และ prlctl หรือไม่ |
jarvis pearl node |
pearld |
รัน Pearl full node |
jarvis pearl wallet |
oyster |
รัน Oyster wallet daemon |
jarvis pearl ctl |
prlctl |
Query Pearl node หรือ wallet RPC |
jarvis pearl address |
prlctl --wallet getnewaddress |
สร้างที่อยู่ wallet จาก Oyster |
ใช้ PEARL_HOME=/path/to/pearl หรือ --pearl-home /path/to/pearl หากไม่มี
ไดเรกทอรี bin/ ของ Pearl อยู่ใน PATH ดู คู่มือ Pearl CLI
สำหรับตัวอย่าง
jarvis memory¶
จัดการ document memory store สำหรับ retrieval-augmented generation
jarvis memory index <path>¶
Index เอกสารจากไฟล์หรือไดเรกทอรีเข้า memory store
jarvis memory index ./docs/
jarvis memory index ./notes.md
jarvis memory index ./data/ --chunk-size 256 --chunk-overlap 32
jarvis memory index ./docs/ --backend sqlite
| ตัวเลือก | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--backend, -b |
string | config | Override memory backend เริ่มต้น |
--chunk-size |
int | 512 |
ขนาด chunk เป็น token |
--chunk-overlap |
int | 64 |
การทับซ้อนระหว่าง chunk เป็น token |
Pipeline การนำเข้ารองรับข้อความ, markdown, ไฟล์โค้ด และ PDF (เมื่อติดตั้ง
pdfplumber) ไฟล์ binary และไดเรกทอรีที่ซ่อนจะถูกข้ามอัตโนมัติ
jarvis memory search <query>¶
ค้นหา memory store หา chunk เอกสารที่เกี่ยวข้อง
jarvis memory search "machine learning basics"
jarvis memory search -k 10 "neural networks"
jarvis memory search --backend faiss "embeddings"
| ตัวเลือก | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--top-k, -k |
int | 5 |
จำนวนผลลัพธ์ที่จะคืน |
--backend, -b |
string | config | Override memory backend เริ่มต้น |
ผลลัพธ์แสดงในตารางพร้อมอันดับ, คะแนน, ไฟล์ต้นทาง และตัวอย่างเนื้อหา
jarvis memory stats¶
แสดงสถิติ memory store รวมถึงจำนวนเอกสารและขนาดฐานข้อมูล
| ตัวเลือก | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--backend, -b |
string | config | Override memory backend เริ่มต้น |
jarvis telemetry¶
Query และจัดการข้อมูลเทเลเมทรีของ inference ที่เก็บใน SQLite
jarvis telemetry stats¶
แสดงสถิติเทเลเมทรีแบบรวมผล รวมจำนวนการเรียก, token, ต้นทุน และ latency ทั้งหมด แยกตามโมเดลและ engine
| ตัวเลือก | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
-n, --top |
int | 10 |
จำนวนโมเดลอันดับต้นๆ ที่จะแสดง |
jarvis telemetry export¶
Export record เทเลเมทรีดิบเป็นรูปแบบ JSON หรือ CSV
jarvis telemetry export # JSON to stdout
jarvis telemetry export --format csv # CSV to stdout
jarvis telemetry export --format json -o data.json # JSON to file
jarvis telemetry export -f csv -o metrics.csv # CSV to file
| ตัวเลือก | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
-f, --format |
choice | json |
รูปแบบผลลัพธ์: json หรือ csv |
-o, --output |
path | stdout | Path ของไฟล์ผลลัพธ์ |
jarvis telemetry clear¶
ลบ record เทเลเมทรีทั้งหมดออกจากฐานข้อมูล
| ตัวเลือก | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
-y, --yes |
flag | ปิด | ข้ามการยืนยัน |
Warning
คำสั่งนี้ลบข้อมูลเทเลเมทรีที่เก็บไว้ทั้งหมดอย่างถาวร ใช้ --yes เพื่อข้ามการยืนยันในสคริปต์อัตโนมัติ
jarvis bench¶
รัน benchmark การอนุมานกับ engine ที่กำลังรันอยู่
jarvis bench run¶
รัน benchmark และรายงานผลลัพธ์
jarvis bench run # Run all benchmarks, 10 samples
jarvis bench run -n 20 # 20 samples per benchmark
jarvis bench run -b latency # Only the latency benchmark
jarvis bench run -b throughput -n 50 --json # Throughput, 50 samples, JSON output
jarvis bench run -o results.jsonl # Write JSONL results to file
jarvis bench run -m qwen3:8b -e ollama # Specific model and engine
| ตัวเลือก | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
-m, --model MODEL |
string | อัตโนมัติ | โมเดลที่จะ benchmark |
-e, --engine ENGINE |
string | อัตโนมัติ | Engine backend |
-n, --samples N |
int | 10 |
จำนวน sample ต่อ benchmark |
-b, --benchmark NAME |
string | ทั้งหมด | Benchmark เฉพาะที่จะรัน |
-o, --output PATH |
path | ไม่มี | เขียนผลลัพธ์ JSONL ลงไฟล์ |
--json |
flag | ปิด | แสดงผลลัพธ์สรุปแบบ JSON ทาง stdout |
Benchmark ที่มี:
- latency -- วัด latency ของ inference ต่อการเรียก (mean, p50, p95, min, max)
- throughput -- วัด throughput เป็น token ต่อวินาที
jarvis channel¶
จัดการ messaging channel สำหรับการสื่อสารข้ามหลายแพลตฟอร์ม Channel เชื่อมต่อกับ API ของแพลตฟอร์มโดยตรง (Telegram, Discord, Slack ฯลฯ) -- ไม่ต้องใช้ gateway
jarvis channel list¶
แสดงรายการ channel backend ที่ลงทะเบียนไว้และสถานะการเชื่อมต่อ
jarvis channel send¶
ส่งข้อความไปยัง channel ที่ระบุ
| Argument | ชนิด | คำอธิบาย |
|---|---|---|
TARGET |
string | ชื่อ channel ที่จะส่งไป |
MESSAGE |
string | เนื้อหาข้อความ |
jarvis channel status¶
แสดงสถานะการเชื่อมต่อของ channel ที่ตั้งค่าไว้
Dependency ของ Channel
แต่ละ channel ต้องการ credential เฉพาะแพลตฟอร์ม (bot token, API key) ที่ตั้งค่าไว้ในหมวด [channel.<platform>] ของ config ดู Configuration สำหรับรายละเอียด
jarvis serve¶
เริ่มเซิร์ฟเวอร์ API ที่เข้ากันได้กับ OpenAI
jarvis serve # Default host/port from config
jarvis serve --port 8000 # Custom port
jarvis serve --host 0.0.0.0 --port 9000 # Bind to all interfaces
jarvis serve --model qwen3:8b # Specify default model
jarvis serve --agent orchestrator # Route requests through an agent
| ตัวเลือก | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--host HOST |
string | config | Bind address |
--port PORT |
int | config | หมายเลข port |
-e, --engine ENGINE |
string | อัตโนมัติ | Engine backend |
-m, --model MODEL |
string | config | โมเดลเริ่มต้นสำหรับ inference |
-a, --agent AGENT |
string | ไม่มี | เอเจนต์สำหรับคำขอแบบไม่สตรีม |
Dependency ของเซิร์ฟเวอร์
คำสั่ง serve ต้องการ extra server:
คำสั่งนี้จะติดตั้ง FastAPI, uvicorn และ dependency ที่เกี่ยวข้อง
Endpoint ของ API¶
เซิร์ฟเวอร์ expose endpoint ที่เข้ากันได้กับ OpenAI ดังนี้:
| Method | Path | คำอธิบาย |
|---|---|---|
| POST | /v1/chat/completions |
Chat completions (แบบสตรีมและไม่สตรีม) |
| GET | /v1/models |
รายการโมเดลที่มี |
| GET | /health |
ตรวจสอบสถานะ (health check) |
| GET | /v1/channels |
รายการ messaging channel ที่มี |
| POST | /v1/channels/send |
ส่งข้อความไปยัง channel |
| GET | /v1/channels/status |
สถานะการเชื่อมต่อของ channel bridge |
ตัวอย่างด้วย curl:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3:8b",
"messages": [{"role": "user", "content": "Hello!"}]
}'
เมื่อตั้งค่าเอเจนต์ไว้ (เช่น --agent orchestrator) คำขอแบบไม่สตรีมจะถูก
จัดเส้นทางผ่านเอเจนต์ที่เข้าถึง tool ที่ลงทะเบียนไว้ทั้งหมดได้ สำหรับเอเจนต์
ที่ใช้ tool ได้ (orchestrator, react, openhands) tool ที่ลงทะเบียนไว้
ทั้งหมดจะถูกโหลดและเปิดให้ใช้งานโดยอัตโนมัติ
LLM-guided Spec Search (ยังไม่มี CLI)¶
LLM-guided spec search (ระบบย่อยการเรียนรู้ harness ที่ขับเคลื่อนด้วย
frontier) เปิดให้ใช้เป็น Python library เท่านั้น -- ปัจจุบันยังไม่มีคำสั่งย่อย
jarvis ระดับบนสุดสำหรับมัน สร้าง SpecSearchOrchestrator โดยตรงจาก
openjarvis.learning.spec_search.orchestrator แล้วเรียก .run(trigger)
พร้อม trigger จาก openjarvis.learning.spec_search.triggers ดู
docs/user-guide/llm-guided-spec-search.md
สำหรับสถาปัตยกรรมและส่วนประกอบพื้นฐาน (splits.py, corpus ภายนอก,
external_adapter)