- होम
- Documentation
- TUI
- `/tree` कमांड संदर्भ
`/tree` कमांड संदर्भ
/tree इंटरएक्टिव Session Tree नेविगेटर खोलता है। यह आपको वर्तमान सत्र फ़ाइल में किसी भी प्रविष्टि पर जाने और उस बिंदु से जारी रखने की सुविधा देता है।
यह एक इन-फ़ाइल लीफ़ मूव है, न कि कोई नया सत्र एक्सपोर्ट।
/tree क्या करता है
Section titled “/tree क्या करता है”- वर्तमान सत्र प्रविष्टियों से एक ट्री बनाता है (
SessionManager.getTree()) TreeSelectorComponentको कीबोर्ड नेविगेशन, फ़िल्टर और सर्च के साथ खोलता है- चयन पर,
AgentSession.navigateTree(targetId, { summarize, customInstructions })को कॉल करता है - नए लीफ़ पाथ से दृश्यमान चैट को पुनर्निर्मित करता है
- user/custom संदेश चुनते समय वैकल्पिक रूप से एडिटर टेक्स्ट प्रीफ़िल करता है
मुख्य इम्प्लीमेंटेशन:
src/modes/controllers/input-controller.ts(/tree, keybinding वायरिंग, double-escape व्यवहार)src/modes/controllers/selector-controller.ts(tree UI लॉन्च + summary prompt फ्लो)src/modes/components/tree-selector.ts(नेविगेशन, फ़िल्टर, सर्च, लेबल, रेंडरिंग)src/session/agent-session.ts(navigateTreeलीफ़ स्विचिंग + वैकल्पिक सारांश)src/session/session-manager.ts(getTree,branch,branchWithSummary,resetLeaf, लेबल पर्सिस्टेंस)
इसे कैसे खोलें
Section titled “इसे कैसे खोलें”निम्नलिखित में से कोई भी एक ही सेलेक्टर खोलता है:
/tree- कॉन्फ़िगर किया गया keybinding एक्शन
tree - खाली एडिटर पर double-escape जब
doubleEscapeAction = "tree"(डिफ़ॉल्ट) /branchजबdoubleEscapeAction = "tree"(tree सेलेक्टर की ओर रूट करता है, न कि user-only branch picker की ओर)
Tree UI मॉडल
Section titled “Tree UI मॉडल”ट्री को सत्र प्रविष्टि पेरेंट पॉइंटर्स (id / parentId) से रेंडर किया जाता है।
- बच्चों को टाइमस्टैम्प के अनुसार आरोही क्रम में क्रमबद्ध किया जाता है (पुराने पहले, नए नीचे)
- सक्रिय शाखा (रूट से वर्तमान लीफ़ तक का पाथ) एक बुलेट के साथ चिह्नित होती है
- लेबल (यदि मौजूद हों) नोड टेक्स्ट से पहले
[label]के रूप में रेंडर होते हैं - यदि एकाधिक रूट मौजूद हों (अनाथ/टूटी हुई पेरेंट चेन), तो उन्हें एक वर्चुअल ब्रांचिंग रूट के अंतर्गत दिखाया जाता है
Example tree view (active path marked with •):
├─ user: "Start task"│ └─ assistant: "Plan"│ ├─ • user: "Try approach A"│ │ └─ • assistant: "A result"│ │ └─ • [milestone] user: "Continue A"│ └─ user: "Try approach B"│ └─ assistant: "B result"सेलेक्टर वर्तमान चयन के आसपास पुनः केंद्रित होता है और अधिकतम निम्नलिखित दिखाता है:
max(5, floor(terminalHeight / 2))पंक्तियाँ
Tree सेलेक्टर के अंदर कीबाइंडिंग
Section titled “Tree सेलेक्टर के अंदर कीबाइंडिंग”Up/Down: चयन को आगे/पीछे ले जाएं (रैप करता है)Left/Right: पेज अप / पेज डाउनEnter: नोड चुनेंEsc: सर्च सक्रिय होने पर उसे साफ़ करें; अन्यथा सेलेक्टर बंद करेंCtrl+C: सेलेक्टर बंद करेंType: सर्च क्वेरी में जोड़ेंBackspace: सर्च कैरेक्टर हटाएंShift+L: चयनित प्रविष्टि पर लेबल संपादित करें/साफ़ करेंCtrl+O: फ़िल्टर को आगे चक्र करेंShift+Ctrl+O: फ़िल्टर को पीछे चक्र करेंAlt+D/T/U/L/A: सीधे किसी विशिष्ट फ़िल्टर मोड पर जाएं
फ़िल्टर और सर्च सेमेंटिक्स
Section titled “फ़िल्टर और सर्च सेमेंटिक्स”फ़िल्टर मोड (TreeList):
defaultno-toolsuser-onlylabeled-onlyall
default
Section titled “default”अधिकांश वार्तालापात्मक नोड दिखाता है, लेकिन बुककीपिंग प्रविष्टि प्रकार छुपाता है:
labelcustommodel_changethinking_level_change
no-tools
Section titled “no-tools”default के समान, साथ ही toolResult संदेश भी छुपाता है।
user-only
Section titled “user-only”केवल message प्रविष्टियाँ जहाँ role user है।
labeled-only
Section titled “labeled-only”केवल वे प्रविष्टियाँ जो वर्तमान में किसी लेबल को रिज़ॉल्व करती हैं।
सत्र ट्री में सब कुछ, जिसमें बुककीपिंग/custom प्रविष्टियाँ शामिल हैं।
Tool-only assistant नोड व्यवहार
Section titled “Tool-only assistant नोड व्यवहार”Assistant संदेश जिनमें केवल tool calls हों (कोई टेक्स्ट नहीं) डिफ़ॉल्ट रूप से सभी फ़िल्टर किए गए व्यूज़ में छुपे रहते हैं, जब तक कि:
- संदेश error/aborted न हो (
stopReasonstop/toolUseन हो), या - यह वर्तमान लीफ़ न हो (हमेशा दृश्यमान रखा जाता है)
सर्च व्यवहार
Section titled “सर्च व्यवहार”- क्वेरी को स्पेस द्वारा टोकनाइज़ किया जाता है
- मिलान case-insensitive होता है
- सभी टोकन मिलने चाहिए (AND सेमेंटिक्स)
- खोजने योग्य टेक्स्ट में लेबल, role और प्रकार-विशिष्ट कंटेंट शामिल है (संदेश टेक्स्ट, branch summary टेक्स्ट, custom type, tool command स्निपेट, आदि)
चयन परिणाम (महत्वपूर्ण)
Section titled “चयन परिणाम (महत्वपूर्ण)”navigateTree चयनित प्रविष्टि प्रकार से नए लीफ़ व्यवहार की गणना करता है:
user संदेश चुनना
Section titled “user संदेश चुनना”- नया लीफ़ चयनित प्रविष्टि का
parentIdबन जाता है - यदि parent
nullहै (रूट user संदेश), तो लीफ़ रूट पर रीसेट होता है (resetLeaf()) - चयनित संदेश टेक्स्ट संपादन/पुनः सबमिट के लिए एडिटर में कॉपी हो जाता है
custom_message चुनना
Section titled “custom_message चुनना”- user संदेशों जैसा ही लीफ़ नियम (
parentId) - टेक्स्ट कंटेंट निकाला जाता है और एडिटर में कॉपी होता है
non-user नोड चुनना (assistant/tool/summary/compaction/custom bookkeeping/आदि)
Section titled “non-user नोड चुनना (assistant/tool/summary/compaction/custom bookkeeping/आदि)”- नया लीफ़ चयनित नोड id बन जाता है
- एडिटर प्रीफ़िल नहीं होता
वर्तमान लीफ़ चुनना
Section titled “वर्तमान लीफ़ चुनना”- कोई क्रिया नहीं; सेलेक्टर “Already at this point” के साथ बंद होता है
Selection decision (simplified):
selected node │ ├─ is current leaf? ── yes ──> close selector (no-op) │ ├─ is user/custom_message? ── yes ──> leaf := parentId (or resetLeaf for root) │ + prefill editor text │ └─ otherwise ──> leaf := selected node id + no editor prefillस्विच पर सारांश फ्लो
Section titled “स्विच पर सारांश फ्लो”Summary prompt branchSummary.enabled (डिफ़ॉल्ट: false) द्वारा नियंत्रित होता है।
सक्षम होने पर, नोड चुनने के बाद UI पूछता है:
No summarySummarizeSummarize with custom prompt
फ्लो विवरण:
- Summary prompt में Escape tree सेलेक्टर को पुनः खोलता है
- Custom prompt रद्द करने पर summary choice loop पर वापस लौटता है
- सारांश के दौरान, UI लोडर दिखाता है और
EscकोabortBranchSummary()से बाइंड करता है - यदि सारांश बीच में रद्द हो, तो tree सेलेक्टर पुनः खुलता है और कोई मूव लागू नहीं होता
navigateTree आंतरिक विवरण:
- पुराने लीफ़ से सामान्य पूर्वज तक abandoned-branch प्रविष्टियाँ एकत्र करता है
session_before_treeemit करता है (एक्सटेंशन रद्द कर सकते हैं या सारांश inject कर सकते हैं)- डिफ़ॉल्ट summarizer का उपयोग केवल तब करता है जब अनुरोध हो और आवश्यक हो
- निम्नलिखित के साथ मूव लागू करता है:
branchWithSummary(...)जब सारांश मौजूद होbranch(newLeafId)सारांश के बिना non-root मूव के लिएresetLeaf()सारांश के बिना root मूव के लिए
- पुनर्निर्मित सत्र संदर्भ के साथ agent conversation को बदलता है
session_treeemit करता है
नोट: यदि user सारांश का अनुरोध करता है लेकिन सारांश बनाने के लिए कुछ नहीं है, तो नेविगेशन summary प्रविष्टि बनाए बिना आगे बढ़ता है।
Tree UI में लेबल संपादन appendLabelChange(targetId, label) को कॉल करता है।
- non-empty लेबल resolved लेबल सेट/अपडेट करता है
- empty लेबल उसे साफ़ करता है
- लेबल append-only
labelप्रविष्टियों के रूप में संग्रहीत होते हैं - tree नोड्स resolved लेबल स्थिति प्रदर्शित करते हैं, न कि raw label-entry इतिहास
/tree और संबंधित ऑपरेशन
Section titled “/tree और संबंधित ऑपरेशन”| ऑपरेशन | स्कोप | परिणाम |
|---|---|---|
/tree | वर्तमान सत्र फ़ाइल | चयनित बिंदु पर लीफ़ मूव करता है (वही फ़ाइल) |
/branch | आमतौर पर वर्तमान सत्र फ़ाइल -> नई सत्र फ़ाइल | डिफ़ॉल्ट रूप से चयनित user संदेश से नई सत्र फ़ाइल में ब्रांच करता है; यदि doubleEscapeAction = "tree" हो, तो /branch tree navigation UI खोलता है |
/fork | पूरा वर्तमान सत्र | सत्र को एक नई persisted सत्र फ़ाइल में डुप्लीकेट करता है |
/resume | सत्र सूची | किसी अन्य सत्र फ़ाइल पर स्विच करता है |
मुख्य अंतर: /tree एक सत्र फ़ाइल के अंदर नेविगेशन/पुनःस्थिति उपकरण है। /branch, /fork, और /resume सभी सत्र-फ़ाइल संदर्भ बदलते हैं।
ऑपरेटर वर्कफ़्लो
Section titled “ऑपरेटर वर्कफ़्लो”वर्तमान शाखा खोए बिना पहले के user prompt से पुनः चलाएं
Section titled “वर्तमान शाखा खोए बिना पहले के user prompt से पुनः चलाएं”/tree- पहले के user संदेश को खोजें/चुनें
No summaryचुनें (या यदि आवश्यक हो तो सारांश करें)- एडिटर में प्रीफ़िल्ड टेक्स्ट संपादित करें
- सबमिट करें
प्रभाव: उसी सत्र फ़ाइल के अंदर चयनित बिंदु से नई शाखा बढ़ती है।
संदर्भ ब्रेडक्रम्ब के साथ वर्तमान शाखा छोड़ें
Section titled “संदर्भ ब्रेडक्रम्ब के साथ वर्तमान शाखा छोड़ें”branchSummary.enabledसक्षम करें/treeऔर लक्ष्य नोड चुनेंSummarize(या custom prompt) चुनें
प्रभाव: जारी रखने से पहले लक्ष्य स्थिति पर एक branch_summary प्रविष्टि जोड़ी जाती है।
छुपी हुई बुककीपिंग प्रविष्टियाँ जाँचें
Section titled “छुपी हुई बुककीपिंग प्रविष्टियाँ जाँचें”/treeAlt+Aदबाएं (all)model,thinking,custom, या लेबल खोजें
प्रभाव: केवल वार्तालापात्मक नोड्स नहीं, बल्कि पूरी आंतरिक टाइमलाइन देखें।
बाद की जंप के लिए पिवट पॉइंट बुकमार्क करें
Section titled “बाद की जंप के लिए पिवट पॉइंट बुकमार्क करें”/tree- प्रविष्टि पर जाएं
Shift+Lऔर लेबल सेट करें- बाद में त्वरित जंप के लिए
Alt+L(labeled-only) का उपयोग करें
प्रभाव: टिकाऊ शाखा मील के पत्थरों के बीच तेज़ नेविगेशन।