एजेंट क्लाइंट प्रोटोकॉल · स्थिर प्रोटोकॉल v1

अपने उत्पाद में कोडिंग एजेंट लाएँ—या लाएँ संपादक में आपका एजेंट।

ACP एक कोडिंग इंटरफ़ेस और एक कोडिंग एजेंट को एक प्रोजेक्ट खोलने, संकेतों का आदान-प्रदान करने, प्रगति स्ट्रीम करने, अनुमोदन मांगने, काम रद्द करने और उसी सत्र को जारी रखने का एक साझा तरीका देता है। ADK-Rust उस रिश्ते के दोनों पक्षों को लागू करता है।

आधिकारिक SDK संदेश प्रारूपग्राहक + एजेंट भूमिकाएँलगातार सत्रलाइव टाइप किए गए अपडेटAsync मानव अनुमोदनरद्दीकरणजीवनचक्र दृढ़ता

ADK-Rust ACP वास्तुकला

एक प्रोटोकॉल, दो उपयोगी दिशा-निर्देश।

इंटरफ़ेस वाला प्रोग्राम ACP क्लाइंट है। कोडिंग का कार्य करने वाला प्रोग्राम ACP एजेंट है। ADK-Rust उस रिश्ते के दोनों ओर बैठ सकता है।

01 · ADK-Rust ACP क्लाइंट/होस्ट है

ADK-Rust एक बाहरी कोडिंग एजेंट का उपयोग करता है

इस दिशा को चुनें

एडीके समन्वयक

यह निर्णय लेता है कि रिपॉजिटरी कार्य के लिए एक कोडिंग विशेषज्ञ की आवश्यकता है।

टूल कॉल

एसीपीएजेंटटूल · एसीपीसेशन

प्रक्रिया शुरू करता है, कार्यक्षेत्र चुनता है, संदर्भ रखता है और अनुमति नीति लागू करता है।

ACP v1 · stdio

बाहरी ACP एजेंट

कोड का निरीक्षण करता है, संपादन प्रस्तावित करता है, टूल लागू करता है और उसकी प्रगति को स्ट्रीम करता है।

The shared ACP v1 contract

Both directions use the same message vocabulary.

initializesession/newsession/promptsession/updaterequest_permissioncancelclose · list · resume · delete

02 · ADK-Rust ACP एजेंट/सर्वर है

एक संपादक ADK-Rust एजेंट का उपयोग करता है

इस दिशा को चुनें

संपादक या ACP क्लाइंट

वार्तालाप यूआई का स्वामी है और ADK-Rust बाइनरी प्रारंभ करता है।

ACP v1 · stdio

आधिकारिक SDK + सत्र हैंडलर

क्षमताओं पर बातचीत करता है, सत्रों को मान्य करता है, स्ट्रीम अपडेट करता है, और रद्दीकरण को संभालता है।

टाइप किया गया मंगलाचरण

Runner + ADK एजेंट

टर्न को पूरा करने के लिए मॉडल, Rust टूल, वर्कफ़्लो, सत्र, मेमोरी और कलाकृतियों का उपयोग करता है।

सत्र सेवा

एक ACP सत्र एक निरंतर ADK-Rust सत्र को मैप करता है।

अनुमति सीमा

ग्राहक उस विकल्प का चयन करता है जो एजेंट ने वास्तव में पेश किया था।

टाइप किए गए अपडेट

पाठ, विचार, उपकरण प्रारंभ और उपकरण पूर्णता स्ट्रीम session/update के रूप में।

प्रक्रिया सीमा

स्थिर ACP v1 एक स्थानीय उपप्रक्रिया और stdio पर JSON-RPC का उपयोग करता है।

ACP संपादक और कोडिंग एजेंट को एक एप्लिकेशन में मर्ज नहीं करता है। यह उन्हें एक साझा सत्र अनुबंध देता है जबकि प्रत्येक पक्ष अपना स्वयं का इंटरफ़ेस, रनटाइम, टूल और सुरक्षा जिम्मेदारियां रखता है।

रिश्ते से शुरुआत करें

ACP किस समस्या का समाधान करता है?

एक कोडिंग एजेंट एक रिपॉजिटरी के बारे में तर्क कर सकता है और टूल का उपयोग कर सकता है, लेकिन लोगों को अभी भी एक इंटरफ़ेस की आवश्यकता होती है जहां वे नौकरी का वर्णन कर सकते हैं, देख सकते हैं कि एजेंट क्या कर रहा है, सवालों के जवाब दे सकते हैं, संवेदनशील कार्यों को मंजूरी दे सकते हैं और एक मोड़ रोक सकते हैं। किसी मानक के बिना, प्रत्येक संपादक और प्रत्येक कोडिंग एजेंट को उन बुनियादी बातों के लिए एक कस्टम एकीकरण की आवश्यकता होती है।

ACP उस लुप्त वार्तालाप को परिभाषित करता है। क्लाइंट उस इंटरफ़ेस और कार्य वातावरण का स्वामी होता है जिसे वह प्रदान करना चुनता है। एजेंट कोडिंग इंटेलिजेंस का मालिक है। वे कार्यान्वयन कोड साझा करने की आवश्यकता के बिना सत्र, संकेत, सामग्री, लाइव अपडेट, टूल कॉल, अनुमति विकल्प, रद्दीकरण और समापन पर सहमत होते हैं।

ADK-Rust दोनों व्यावहारिक दिशाओं का समर्थन करता है। एक ADK एजेंट एक उपकरण के रूप में बाहरी ACP कोडिंग एजेंट को काम सौंप सकता है। सर्वर सुविधा के साथ, एक संपादक एक ADK-Rust बाइनरी शुरू कर सकता है और उसी ACP v1 अनुबंध के माध्यम से अपने Runner, मॉडल, टूल, सत्र, मेमोरी और वर्कफ़्लो का उपयोग कर सकता है।

ग्राहक/मेज़बान

जिस एप्लिकेशन के साथ लोग इंटरैक्ट करते हैं

आमतौर पर एक संपादक, डेस्कटॉप ऐप, CLI, या ADK-Rust समन्वयक। यह कोडिंग एजेंट शुरू करता है, एक प्रोजेक्ट सत्र खोलता है, प्रगति दिखाता है, और यह तय करता है कि अनुमति प्रश्न उपयोगकर्ता तक कैसे पहुंचेंगे।

ACP एजेंट

वह प्रक्रिया जो कोडिंग कार्य करती है

यह रिपॉजिटरी के बारे में संकेत, कारण प्राप्त करता है, टूल गतिविधि की रिपोर्ट करता है, संवेदनशील कार्यों से पहले पूछता है, और बारी समाप्त होने पर रुकने का कारण बताता है।

सत्र

साझा कामकाजी बातचीत

एक सत्र में एक आईडी, एक पूर्ण कार्यशील निर्देशिका, वैकल्पिक कार्यक्षेत्र जड़ें, कई संकेत, स्ट्रीम किए गए अपडेट और एक स्पष्ट समापन या फिर से शुरू जीवनचक्र होता है।

अनुमति

कार्रवाई के बिंदु पर एक निर्णय

एजेंट सटीक टूल कॉल का वर्णन करता है और विकल्प प्रदान करता है। क्लाइंट उन विकल्पों में से एक लौटाता है, इसलिए एप्लिकेशन-एजेंट नहीं-यह नियंत्रित करता है कि कार्रवाई आगे बढ़ती है या नहीं।

One ACP turn

The interface stays responsive while the agent works.

Read from top to bottom. Initialization establishes the contract once. A session then carries several prompts, live updates, approval questions, cancellation, and a final stop reason.

Client / host

Editor or ADK-Rust

ACP agent

Coding process or ADK-Rust

initialize

protocolVersion: 1

capabilities

What this agent really supports

session/new

Absolute cwd + workspace roots

session/prompt

Typed content blocks

session/update

Text · thought · tool call

session/request_permission

Choose from offered options

permission response

Allow once · always · reject

PromptResponse

end_turn · cancelled

Cancellation is part of the conversation. ADK-Rust forwards session/cancel into the Runner cancellation token and returns a typed cancelled stop reason.

दिशा एक · ADK-Rust ग्राहक है

एक ADK एजेंट को रिपॉजिटरी को एक कोडिंग एजेंट को काम सौंपने दें।

बाहरी ACP प्रक्रिया ADK-Rust के अंदर एक नामित टूल के रूप में दिखाई देती है। आपका समन्वयक यह तय कर सकता है कि इसका उपयोग कब करना है, प्रोजेक्ट निर्देशिका चुनें, जब कार्य कई मोड़ों तक फैला हो तो संदर्भ को संरक्षित करें, प्रगति को अपने इंटरफ़ेस में प्रवाहित करें और अनुमोदन नीति को कोडिंग एजेंट के बाहर रखें।

AcpAgentTool

एक काम, नई प्रक्रिया

सबसे अच्छा तब होता है जब कोई ADK एजेंट कभी-कभी एक स्व-निहित रिपॉजिटरी कार्य सौंपता है। प्रत्येक कॉल एक ACP प्रक्रिया शुरू करती है और अपना टेक्स्ट सामान्य टूल आउटपुट के रूप में लौटाती है।

AcpToolset

कई कोडिंग विशेषज्ञ

समीक्षा, परीक्षण, माइग्रेशन या दस्तावेज़ीकरण एजेंट नामक एक समन्वयक दें। उनके टूल विवरण मॉडल को प्रत्येक कार्य को सही प्रक्रिया तक ले जाने में मदद करते हैं।

AcpSession

एक सतत बातचीत

संकेतों के बीच प्रक्रिया और ACP सत्र को सक्रिय रखें। एजेंट को याद रहता है कि उसने पहले से क्या निरीक्षण किया है, और एक रद्दीकरण हैंडल उड़ान के दौरान किसी मोड़ को रोक सकता है।

stream_prompt

लाइव उत्पाद यूआई

एक संयुक्त स्ट्रिंग की प्रतीक्षा करने के बजाय पाठ, विचार, टूल-कॉल, अनुमति, पूर्णता और त्रुटि खंड प्राप्त करें जैसे वे होते हैं।

orchestrator.rsएक-शॉट प्रतिनिधिमंडल
use adk_acp::{AcpAgentTool, PermissionPolicy};

  let coder = AcpAgentTool::new("my-coding-agent --acp")
      .name("repository_coder")
      .description("Inspect and improve this Rust project")
      .working_dir("/absolute/path/to/project")
      .permission_policy(PermissionPolicy::DenyAll);

  let coordinator = LlmAgentBuilder::new("coordinator")
      .model(model)
      .tool(Arc::new(coder))
      .build()?;
session.rsस्थायी + रद्द करने योग्य
let mut session = AcpSession::start(
      AcpAgentConfig::new("my-coding-agent --acp")
          .working_dir("/absolute/path/to/project"),
      Arc::new(permission_policy),
  ).await?;

  let cancel = session.cancellation_handle()?;
  tokio::spawn(async move {
      shutdown.cancelled().await;
      cancel.cancel().await
  });

  let result = session
      .prompt("Trace the failing test and propose a fix")
      .await?;

ग्राहक कार्य वातावरण प्रदान कर सकता है

चुनें कि कोडिंग एजेंट किस तक पहुंच सकता है।

ACP यह नहीं मानता कि कोई कोडिंग एजेंट आपकी डिस्क को पढ़ सकता है या सीधे कमांड चला सकता है। ग्राहक उन सेवाओं की घोषणा करता है जो वह प्रदान करने के लिए तैयार है, प्रत्येक अनुरोध को संभालता है, और सुरक्षा नियमों को उत्पाद और उपयोगकर्ता के करीब रखता है।

ADK-Rust अब टाइप की गई फ़ाइल और टर्मिनल होस्ट इंटरफेस को उजागर करता है और क्लाइंट द्वारा आपूर्ति किए गए MCP सर्वर को सत्र निर्माण में पास करता है। डिफ़ॉल्ट रूप से कुछ भी सक्षम नहीं है. एक केवल-पढ़ने योग्य दस्तावेज़ीकरण उपकरण, बिना सहेजे गए बफ़र्स वाला एक डेस्कटॉप संपादक, और एक पृथक बिल्ड वर्कर प्रत्येक एक अलग, सटीक क्षमता सेट प्रकाशित कर सकता है।

AcpFileSystem

Files from the real workspace

Your editor or application decides how reads and writes work. It can return an unsaved buffer, enforce approved roots, reject a symlink escape, or make the session read-only.

AcpTerminal

Managed command execution

The coding agent can start a command, collect output, wait, stop it, and release it through the client. Terminal support stays disabled until the host implements the complete lifecycle.

MCP over stdio

Tools supplied for this session

Attach an MCP server when the ACP session opens. ADK-Rust starts it inside the selected project, exposes its tools only to that session, and cancels it when the session closes.

ACP सत्र सेटअप में MCP क्यों दिखाई देता है

क्लाइंट एक कोडिंग सत्र के लिए टूल सर्वर उधार दे सकता है।

उदाहरण के लिए, एक संपादक सत्र खोलते समय अपने इश्यू ट्रैकर या रिपॉजिटरी सर्च MCP सर्वर को संलग्न कर सकता है। कोडिंग एजेंट उन उपकरणों को उनकी साख या कॉन्फ़िगरेशन के बिना प्राप्त करता है। ADK-Rust स्थिर ACP v1 के लिए आवश्यक stdio ट्रांसपोर्ट का समर्थन करता है, प्रत्येक सर्वर को एक बाउंडेड हैंडशेक के साथ शुरू करता है, और इसे सत्र के साथ हटा देता है। वैकल्पिक HTTP और SSE ट्रांसपोर्ट क्लाइंट द्वारा तभी स्वीकार किए जाते हैं जब बाहरी एजेंट उनका विज्ञापन करता है।

अनुमोदन मेज़बान का है

निर्णय लें कि उपयोगकर्ता और नीति कहाँ रहते हैं।

एक कोडिंग एजेंट को किसी फ़ाइल को संपादित करने, कमांड निष्पादित करने, निर्भरता स्थापित करने या जेनरेट किए गए आउटपुट को हटाने की आवश्यकता हो सकती है। ACP उस प्रस्तावित ऑपरेशन को वैध विकल्पों के मेनू के साथ क्लाइंट को वापस भेजता है। ADK-Rust सुरक्षा-प्रासंगिक विवरण सुरक्षित रखता है और डिफ़ॉल्ट रूप से अनुरोधों को अस्वीकार करता है।

एक विश्वसनीय स्थानीय वर्कफ़्लो के लिए, एक नियम ज्ञात संचालन को मंजूरी दे सकता है। एक इंटरैक्टिव उत्पाद के लिए, PermissionPolicy::async_custom एक डेस्कटॉप डायलॉग, एक वेब अनुमोदन स्क्रीन, या एक संगठन नीति सेवा की प्रतीक्षा कर सकता है। ADK-Rust एजेंट द्वारा प्रदान की गई सटीक अपारदर्शी विकल्प आईडी लौटाता है; यह कभी भी अनुमोदन मूल्य का आविष्कार नहीं करता है।

01

एजेंट ऑपरेशन का वर्णन करता है

अनुरोध में सत्र आईडी, टूल-कॉल आईडी, शीर्षक, टूल प्रकार, कच्चा इनपुट और एजेंट द्वारा समर्थित प्रत्येक प्रतिक्रिया विकल्प होता है।

02

आपका आवेदन नीति लागू करता है

डिफ़ॉल्ट रूप से अस्वीकार करें, सिंक्रोनस नियम का उपयोग करें, या async_custom के माध्यम से मानव संवाद या दूरस्थ नीति सेवा की प्रतीक्षा करें।

03

ADK-Rust एक वास्तविक विकल्प का चयन करता है

अनुमति दें और अस्वीकार करें विकल्पों का मिलान ACP अर्थ से किया जाता है, फिर मूल अपारदर्शी विकल्प आईडी वापस कर दी जाती है। एक मनगढ़ंत आईडी रद्दीकरण बन जाती है।

04

एजेंट जारी रखता है या रुक जाता है

कोडिंग एजेंट उसी सत्र में निर्णय प्राप्त करता है और टूल कॉल जारी रख सकता है, दूसरा पथ चुन सकता है, या मोड़ समाप्त कर सकता है।

permissions.rsASYNC मानव अनुमोदन
let policy = PermissionPolicy::async_custom(|request| async move {
      let choice = approval_ui.ask(ApprovalPrompt {
          title: request.title,
          kind: request.kind,
          input: request.raw_input,
          options: request.options,
      }).await;

      match choice {
          Approval::Once => PermissionDecision::AllowOnce,
          Approval::Always => PermissionDecision::AllowAlways,
          Approval::Reject => PermissionDecision::Deny,
      }
  });

प्रोजेक्ट निर्देशिका संदर्भ है, सैंडबॉक्स नहीं।

ACP दोनों पक्षों को बताता है कि कौन सा प्रोजेक्ट और अतिरिक्त रूट सत्र से संबंधित हैं। यह ऑपरेटिंग-सिस्टम सुरक्षा सीमा नहीं बनाता है। यदि कोडिंग प्रक्रिया को मशीन के बाकी हिस्सों से अलग किया जाना चाहिए, तो इसे चलाएं adk-sandbox, एक कंटेनर, या अन्य प्रक्रिया नीति।

Keep credentials in the process environment or the client's secret store. Protocol stdout must contain only ACP JSON-RPC messages.

दिशा दो · ADK-Rust ACP एजेंट है

एक संपादक के समक्ष संपूर्ण ADK-Rust रनटाइम प्रदर्शित करें।

संपादक आपके Rust बाइनरी को ACP उपप्रक्रिया के रूप में प्रारंभ करता है। आधिकारिक SDK के पास JSON-RPC फ़्रेमिंग, अनुरोध आईडी, टाइप की गई डिकोडिंग और stdio है। सत्र हैंडलर एक ACP सत्र को एक ADK-Rust सत्र में मैप करता है, फिर Runner मॉडल और टूल इवेंट को लाइव session/update सूचनाओं के रूप में स्ट्रीम करता है।

यह दिशा तब उपयोगी होती है जब आपके एजेंट के पास डोमेन-विशिष्ट निर्देश, Rust उपकरण, वर्कफ़्लो एजेंट, मेमोरी, या आंतरिक सेवाएँ हों जो कोडिंग इंटरफ़ेस से उपलब्ध होनी चाहिए। संपादक को उन आंतरिक बातों को समझने की आवश्यकता नहीं है; यह बाइनरी द्वारा ईमानदारी से प्रकाशित की जाने वाली क्षमताओं और जीवनचक्र को देखता है।

main.rsएजेंट को बेनकाब करें
use adk_acp::server::{
      AcpServer, AcpServerConfigBuilder
  };

  let config = AcpServerConfigBuilder::new()
      .agent(Arc::new(repository_agent))
      .session_service(Arc::new(session_service))
      .agent_name("repository-guide")
      .agent_description("Explains and improves this workspace")
      .max_sessions(16)
      .build()?;

  let server = AcpServer::run(config).await?;
  server.wait().await?;
acp-agent.jsonसंपादक प्रक्रिया कॉन्फिग
{
    "name": "repository-guide",
    "command": "/absolute/path/to/repository-guide",
    "args": [],
    "env": {
      "MODEL_API_KEY": "from-the-editor-secret-store"
    }
  }
session-prompt.jsonअनुरोध
{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "session/prompt",
    "params": {
      "sessionId": "session-7f2a",
      "prompt": [{
        "type": "text",
        "text": "Explain error handling in src/main.rs"
      }]
    }
  }
stdout.jsonlलाइव अपडेट + अंतिम प्रतिक्रिया
{"jsonrpc":"2.0","method":"session/update","params":{
    "sessionId":"session-7f2a",
    "update":{"sessionUpdate":"agent_message_chunk","content":{
      "type":"text","text":"The entry point uses..."
    }}
  }}
  {"jsonrpc":"2.0","id":3,"result":{
    "stopReason":"end_turn"
  }}

सत्यापित दायरा

एकीकरण को डिज़ाइन करने से पहले ठीक से जान लें कि क्या तैयार है।

ADK-Rust अब दोनों भूमिकाओं के लिए आधिकारिक agent-client-protocol क्रेट का उपयोग करता है। तालिका इंटरऑपरेबल v1 सतह को उन सुविधाओं से अलग करती है जिन्हें अभी भी कार्यान्वयन की आवश्यकता है, इसलिए एक संपादक या उत्पाद को एकीकरण कार्य शुरू होने के बाद एक लापता क्षमता का पता नहीं चलता है।

Protocol and transport

ACP protocol v1 · official Rust SDK 1.2 · JSON-RPC over local stdio

Implemented

ADK-Rust as client

Initialize, new session, prompt, live updates, tool permissions, one-shot, persistent, streaming

Implemented

Client cancellation

Cloneable handle sends session/cancel while another task awaits the prompt

Implemented

ADK-Rust as agent

Initialize, new, prompt, update, cancel, close, list, resume, delete

Implemented

Prompt content

Text and resource links; unsupported media types are rejected and not advertised

Implemented scope

Client filesystem / terminal callbacks

Opt-in host traits advertise only the file and terminal operations the application implements

Implemented API

Client-supplied MCP servers

Typed session configuration, required stdio server support, per-session ADK toolsets, bounded startup and cleanup

Implemented · stdio

ADK tool approval → ACP

The runtime can await an exact-call decision; the server bridge is held back because the official SDK currently loses the outer prompt response in the nested-request test

SDK limitation

Remote transport

HTTP or WebSocket ACP between machines

Protocol work is evolving; stdio only

इंटरऑपरेबिलिटी गेट

वार्तालाप के रूप में परीक्षण किया गया, डिस्कनेक्टेड JSON के रूप में नहीं।

एक आधिकारिक SDK क्लाइंट इन-मेमोरी ट्रांसपोर्ट के माध्यम से ADK-Rust SDK एजेंट से जुड़ता है और इनिशियलाइज़ → नया → प्रॉम्प्ट → अपडेट → क्लोज़ → लिस्ट → रिज्यूम → क्लोज़ → डिलीट पूरा करता है। रद्दीकरण परीक्षण ACP सत्र/रद्दीकरण और JSON-RPC अनुरोध रद्दीकरण दोनों को कवर करते हैं, फिर साबित करते हैं कि सत्र सफाई के बाद एक और संकेत स्वीकार कर सकता है। अनुमति परीक्षण में अस्वीकार-प्रथम मेनू, अपारदर्शी आईडी, मनगढ़ंत चयन और प्रतीक्षित मानव निर्णय शामिल हैं। एक अलग लाइव गेट एक वास्तविक stdio MCP चाइल्ड शुरू करता है और ACP सत्रों द्वारा उपयोग किए गए उसी McpToolset के माध्यम से इसके टूल कैटलॉग की खोज करता है।

सीमा चुनें

ACP, A2A, और MCP विभिन्न एकीकरण समस्याओं का समाधान करते हैं।

यह पूछकर प्रारंभ करें कि दूसरी ओर क्या बैठता है। एक कोडिंग एजेंट को एक प्रोजेक्ट सत्र और एक इंटरैक्टिव होस्ट की आवश्यकता होती है। एक दूरस्थ व्यवसाय एजेंट को नेटवर्क कार्य अनुबंध की आवश्यकता होती है। किसी उपकरण या डेटा सेवा को कॉल करने योग्य क्षमता अनुबंध की आवश्यकता होती है।

आपको जिस भूमिका की आवश्यकता है, उसके साथ निर्माण करें

एक कोडिंग विशेषज्ञ जोड़ें—या अपने ADK एजेंट को वहां उपलब्ध कराएं जहां डेवलपर पहले से ही काम करते हैं।

Start with stdio, one absolute workspace, and DenyAll. Add a custom approval experience, persistent sessions, and stronger process isolation as the product's trust boundary becomes clear.