यदि upstream सेवा सामान्य HTTP मॉडल API उपलब्ध कराती है, तो इसके बजाय
provider plugin लिखें। यदि upstream
runtime पूर्ण एजेंट सेशन, टूल events, compaction, या पृष्ठभूमि
task स्थिति का स्वामी है, तो agent harness का उपयोग करें।
Plugin क्या स्वामित्व रखता है
CLI बैकएंड Plugin के तीन contracts होते हैं:| Contract | फ़ाइल | उद्देश्य |
|---|---|---|
| पैकेज entry | package.json | OpenClaw को plugin runtime module की ओर इंगित करता है |
| Manifest ownership | openclaw.plugin.json | runtime लोड होने से पहले backend id घोषित करता है |
| Runtime registration | index.ts | command defaults के साथ api.registerCliBackend(...) कॉल करता है |
api.registerCliBackend(...) कॉल करती है।
न्यूनतम बैकएंड Plugin
पैकेज metadata बनाएँ
package.json
./src/index.ts है, तो openclaw.runtimeExtensions जोड़ें जो
built JavaScript peer की ओर इंगित करे। Entry points देखें।बैकएंड ownership घोषित करें
openclaw.plugin.json
cliBackends runtime ownership सूची है। यह OpenClaw को तब plugin auto-load करने देता है
जब config या model selection में acme-cli/... का उल्लेख हो।setup.cliBackends descriptor-first setup surface है। इसे तब जोड़ें जब
model discovery, onboarding, या status को plugin runtime लोड किए बिना
backend पहचानना चाहिए। requiresRuntime: false का उपयोग केवल तब करें जब वे static
descriptors setup के लिए पर्याप्त हों।Config shape
CliBackendConfig बताता है कि OpenClaw को CLI कैसे launch और parse करनी चाहिए:
| Field | उपयोग |
|---|---|
command | Binary name या absolute command path |
args | fresh runs के लिए base argv |
resumeArgs | resumed sessions के लिए alternate argv; {sessionId} support करता है |
output / resumeOutput | Parser: json, jsonl, या text |
input | Prompt transport: arg या stdin |
modelArg | model id से पहले उपयोग किया जाने वाला flag |
modelAliases | OpenClaw model ids को CLI-native ids पर map करें |
sessionArg / sessionArgs | session id pass करने का तरीका |
sessionMode | always, existing, या none |
sessionIdFields | JSON fields जिन्हें OpenClaw CLI output से पढ़ता है |
systemPromptArg / systemPromptFileArg | System prompt transport |
systemPromptWhen | first, always, या never |
imageArg / imageMode | Image path support |
serialize | same-backend runs को ordered रखें |
reliability.watchdog | no-output timeout tuning |
उन्नत बैकएंड hooks
CliBackendPlugin यह भी define कर सकता है:
| Hook | उपयोग |
|---|---|
normalizeConfig(config, context) | merge के बाद legacy user config rewrite करें |
resolveExecutionArgs(ctx) | thinking effort या side-question isolation जैसे request-scoped flags जोड़ें |
prepareExecution(ctx) | launch से पहले temporary auth या config bridges बनाएँ |
transformSystemPrompt(ctx) | अंतिम CLI-specific system prompt transform लागू करें |
textTransforms | Bidirectional prompt/output replacements |
defaultAuthProfileId | किसी specific OpenClaw auth profile को preference दें |
authEpochMode | तय करें कि auth changes stored CLI sessions को कैसे invalidate करते हैं |
nativeToolMode | घोषित करें कि CLI में always-on native tools हैं या नहीं |
sideQuestionToolMode | /btw side questions के लिए disabled native tools घोषित करें |
bundleMcp / bundleMcpMode | OpenClaw के loopback MCP tool bridge में opt in करें |
ownsNativeCompaction | Backend अपनी compaction का स्वामी है - OpenClaw defer करता है |
ctx.executionMode सामान्य turns के लिए "agent" और
ephemeral /btw calls के लिए "side-question" होता है। इसका उपयोग तब करें जब CLI को अलग one-shot flags चाहिए हों, जैसे
BTW के लिए native tools, session persistence, या resume behavior disable करना। यदि कोई
backend सामान्यतः nativeToolMode: "always-on" रखता है लेकिन उसका side-question argv
उन tools को भरोसेमंद रूप से disable करता है, तो sideQuestionToolMode: "disabled" भी set करें;
अन्यथा जब BTW को no-tools CLI run चाहिए होता है तो OpenClaw fail closed करता है।
ownsNativeCompaction: OpenClaw compaction से opt out करना
यदि आपका backend ऐसा agent चलाता है जो अपने स्वयं के transcript को compact करता है, तो
ownsNativeCompaction: true set करें ताकि OpenClaw का safeguard summarizer उसकी
sessions के विरुद्ध कभी न चले - CLI compaction lifecycle no-op लौटाता है और turn आगे बढ़ता है। claude-cli
इसे घोषित करता है क्योंकि Claude Code बिना harness endpoint के internally compact करता है। Native-harness
sessions जैसे Codex इसके बजाय अपने harness compaction endpoint पर route होते रहते हैं।
इसे केवल तब घोषित करें जब नीचे की सभी बातें सही हों, अन्यथा deferred over-budget session
budget से ऊपर रह सकता है / stale हो सकता है (OpenClaw अब उसे rescue नहीं करता):
- backend अपनी window के पास पहुँचते समय भरोसेमंद रूप से अपने transcript को compact या bound करता है;
- यह resumable session persist करता है ताकि compacted state turns के बीच बची रहे
(उदा.
--resume/--session-id); - यह native-harness compaction session नहीं है - matching
agentHarnessIdsessions इसके बजाय harness endpoint पर route होते हैं।
MCP tool bridge
CLI backends को default रूप से OpenClaw tools नहीं मिलते। यदि CLI कोई MCP configuration consume कर सकता है, तो स्पष्ट रूप से opt in करें:| Mode | उपयोग |
|---|---|
claude-config-file | CLIs जो MCP config file स्वीकार करते हैं |
codex-config-overrides | CLIs जो argv पर config overrides स्वीकार करते हैं |
gemini-system-settings | CLIs जो अपने system settings directory से MCP settings पढ़ते हैं |
nativeToolMode: "always-on" set करें ताकि जब caller को no native tools चाहिए हों तो OpenClaw fail closed कर सके।
User configuration
Users किसी भी backend default को override कर सकते हैं:command होता है जब binary PATH से बाहर हो।
सत्यापन
bundled Plugin के लिए, बिल्डर और सेटअप पंजीकरण के आसपास एक केंद्रित टेस्ट जोड़ें, फिर Plugin की लक्षित टेस्ट लेन चलाएँ:चेकलिस्ट
package.json में प्रकाशित पैकेजों के लिए openclaw.extensions और निर्मित runtime एंट्रियाँ हैंopenclaw.plugin.json cliBackends और आशयित activation.onStartup घोषित करता हैजब सेटअप/मॉडल डिस्कवरी को बैकएंड को cold देखना चाहिए, तब
setup.cliBackends मौजूद हैapi.registerCliBackend(...) manifest के समान बैकएंड id का उपयोग करता हैagents.defaults.cliBackends.<id> के अंतर्गत उपयोगकर्ता ओवरराइड अब भी जीतते हैंसत्र, सिस्टम प्रॉम्प्ट, इमेज, और आउटपुट पार्सर सेटिंग्स वास्तविक CLI अनुबंध से मेल खाती हैं
लक्षित टेस्ट और कम से कम एक लाइव CLI स्मोक बैकएंड पाथ को साबित करते हैं
संबंधित
- CLI बैकएंड - उपयोगकर्ता कॉन्फ़िगरेशन और runtime व्यवहार
- Plugin बनाना - पैकेज और manifest की मूल बातें
- Plugin SDK अवलोकन - पंजीकरण API संदर्भ
- Plugin manifest -
cliBackendsऔर सेटअप descriptor - एजेंट हार्नेस - पूर्ण बाहरी एजेंट runtime