diff --git a/examples/hello-koa/dubbo/dubbo.js b/examples/hello-koa/dubbo/dubbo.js
index 558926e..a57aec9 100644
--- a/examples/hello-koa/dubbo/dubbo.js
+++ b/examples/hello-koa/dubbo/dubbo.js
@@ -20,6 +20,11 @@
   dubboSetting,
 }));
 
+dubbo.use(async (ctx, next) => {
+  await next();
+  console.log('-providerAttachments-->', ctx.providerAttachments);
+});
+
 // dubbo.ready().then(() => {
 //   console.log('dubbo was ready');
 // });
diff --git a/java/dubbo-demo/dubbo-demo-api/pom.xml b/java/dubbo-demo/dubbo-demo-api/pom.xml
index af2220c..39639a9 100644
--- a/java/dubbo-demo/dubbo-demo-api/pom.xml
+++ b/java/dubbo-demo/dubbo-demo-api/pom.xml
@@ -34,7 +34,7 @@
     <parent>
         <groupId>com.alibaba</groupId>
         <artifactId>dubbo-demo</artifactId>
-        <version>2.5.7</version>
+        <version>2.6.3</version>
     </parent>
     <artifactId>dubbo-demo-api</artifactId>
     <packaging>jar</packaging>
diff --git a/java/dubbo-demo/dubbo-demo-consumer/pom.xml b/java/dubbo-demo/dubbo-demo-consumer/pom.xml
index 47d77ff..0eb0797 100644
--- a/java/dubbo-demo/dubbo-demo-consumer/pom.xml
+++ b/java/dubbo-demo/dubbo-demo-consumer/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>com.alibaba</groupId>
         <artifactId>dubbo-demo</artifactId>
-        <version>2.5.7</version>
+        <version>2.6.3</version>
     </parent>
     <artifactId>dubbo-demo-consumer</artifactId>
     <packaging>jar</packaging>
diff --git a/java/dubbo-demo/dubbo-demo-provider/pom.xml b/java/dubbo-demo/dubbo-demo-provider/pom.xml
index f437da6..fdc2a86 100644
--- a/java/dubbo-demo/dubbo-demo-provider/pom.xml
+++ b/java/dubbo-demo/dubbo-demo-provider/pom.xml
@@ -1,12 +1,12 @@
 <!--
  - Copyright 1999-2011 Alibaba Group.
- -  
+ -
  - Licensed under the Apache License, Version 2.0 (the "License");
  - you may not use this file except in compliance with the License.
  - You may obtain a copy of the License at
- -  
+ -
  -      http://www.apache.org/licenses/LICENSE-2.0
- -  
+ -
  - Unless required by applicable law or agreed to in writing, software
  - distributed under the License is distributed on an "AS IS" BASIS,
  - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -19,7 +19,7 @@
     <parent>
         <groupId>com.alibaba</groupId>
         <artifactId>dubbo-demo</artifactId>
-        <version>2.5.7</version>
+        <version>2.6.3</version>
     </parent>
     <artifactId>dubbo-demo-provider</artifactId>
     <packaging>jar</packaging>
@@ -125,4 +125,4 @@
             </plugin>
         </plugins>
     </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/java/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml b/java/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
index 702026c..59c1a8f 100644
--- a/java/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
+++ b/java/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
  - Copyright 1999-2011 Alibaba Group.
- -  
+ -
  - Licensed under the Apache License, Version 2.0 (the "License");
  - you may not use this file except in compliance with the License.
  - You may obtain a copy of the License at
- -  
+ -
  -      http://www.apache.org/licenses/LICENSE-2.0
- -  
+ -
  - Unless required by applicable law or agreed to in writing, software
  - distributed under the License is distributed on an "AS IS" BASIS,
  - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -23,7 +23,7 @@
     <!-- 提供方应用信息，用于计算依赖关系 -->
     <dubbo:application name="demo-provider"/>
 
-    <dubbo:registry protocol="zookeeper" address="localhost:2181"/>
+    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
 
     <dubbo:provider timeout="1500"/>
 
@@ -44,4 +44,4 @@
     <dubbo:service interface="com.alibaba.dubbo.demo.BasicTypeProvider" ref="basicTypeProvider" version="2.0.0"/>
     <dubbo:service interface="com.alibaba.dubbo.demo.ErrorProvider" ref="errorProvider" version="1.0.0"/>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/java/dubbo-demo/pom.xml b/java/dubbo-demo/pom.xml
index dd8f575..8223eca 100644
--- a/java/dubbo-demo/pom.xml
+++ b/java/dubbo-demo/pom.xml
@@ -19,7 +19,7 @@
     <parent>
         <groupId>com.alibaba</groupId>
         <artifactId>dubbo-parent</artifactId>
-        <version>2.5.7</version>
+        <version>2.6.3</version>
     </parent>
     <artifactId>dubbo-demo</artifactId>
     <packaging>pom</packaging>
diff --git a/java/pom.xml b/java/pom.xml
index f604d2a..f0447f3 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -1,12 +1,12 @@
  <!--
  - Copyright 1999-2011 Alibaba Group.
- -  
+ -
  - Licensed under the Apache License, Version 2.0 (the "License");
  - you may not use this file except in compliance with the License.
  - You may obtain a copy of the License at
- -  
+ -
  -	  http://www.apache.org/licenses/LICENSE-2.0
- -  
+ -
  - Unless required by applicable law or agreed to in writing, software
  - distributed under the License is distributed on an "AS IS" BASIS,
  - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -18,7 +18,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.alibaba</groupId>
     <artifactId>dubbo-parent</artifactId>
-    <version>2.5.7</version>
+    <version>2.6.3</version>
     <packaging>pom</packaging>
     <name>${project.artifactId}</name>
     <description>The parent project of dubbo</description>
@@ -581,4 +581,4 @@
             <timezone>+8</timezone>
         </developer>
     </developers>
-</project> 
+</project>
diff --git a/packages/dubbo/src/context.ts b/packages/dubbo/src/context.ts
index 6de61e7..f298e62 100644
--- a/packages/dubbo/src/context.ts
+++ b/packages/dubbo/src/context.ts
@@ -33,6 +33,7 @@
     this._body = {err: null, res: null};
     this._application = {name: 'dubbo2.js'};
     this._attachments = {};
+    this._providerAttachments = {};
     this._request = <IContextRequestParam>{
       requestId: id(),
     };
@@ -98,6 +99,12 @@
    */
   private _attachments: Object;
 
+  /**
+   * dubbo2.6.3 增加了 provider => consumer的attachments的能力
+   * https://github.com/apache/incubator-dubbo/issues/889
+   */
+  private _providerAttachments: Object;
+
   static create<T = any>() {
     return new Context<T>();
   }
@@ -316,6 +323,23 @@
     return this._attachments;
   }
 
+  /**
+   * 设置provider传递过来的attachments
+   * @since dubbo2.6.3
+   */
+  set providerAttachments(param: Object) {
+    log('set provider attachments->%o', param);
+    this._providerAttachments = param;
+  }
+
+  /**
+   * 设置provider传递过来的attachments
+   * @since dubbo2.6.3
+   */
+  get providerAttachments() {
+    return this._providerAttachments;
+  }
+
   //===============private method==========================
   private static _checkHessianParam(param: any): param is IHessianType {
     return (
diff --git a/packages/dubbo/src/decode.ts b/packages/dubbo/src/decode.ts
index 4de4265..671b167 100644
--- a/packages/dubbo/src/decode.ts
+++ b/packages/dubbo/src/decode.ts
@@ -43,12 +43,17 @@
   RESPONSE_WITH_EXCEPTION = 0,
   RESPONSE_VALUE = 1,
   RESPONSE_NULL_VALUE = 2,
+  //@since dubbo2.6.3
+  RESPONSE_WITH_EXCEPTION_WITH_ATTACHMENTS = 3,
+  RESPONSE_VALUE_WITH_ATTACHMENTS = 4,
+  RESPONSE_NULL_VALUE_WITH_ATTACHMENTS = 5,
 }
 
 //com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encodeResponse/decode
 export function decode<T>(bytes: Buffer): IDubboResponse<T> {
   let res = null;
   let err = null;
+  let attachments = {};
 
   // set request and serialization flag.
   //字节位置[4-11] 8 bytes
@@ -71,6 +76,7 @@
     return {
       err: new DubboDecodeError(bytes.slice(HEADER_LENGTH).toString()),
       res: null,
+      attachments,
       requestId,
     };
   }
@@ -89,10 +95,12 @@
     case DUBBO_RESPONSE_BODY_FLAG.RESPONSE_VALUE:
       err = null;
       res = body.read();
+      attachments = {};
       break;
     case DUBBO_RESPONSE_BODY_FLAG.RESPONSE_NULL_VALUE:
       err = null;
       res = null;
+      attachments = {};
       break;
     case DUBBO_RESPONSE_BODY_FLAG.RESPONSE_WITH_EXCEPTION:
       const exception = body.read();
@@ -101,10 +109,27 @@
           ? exception
           : new DubboDecodeError(exception);
       res = null;
+      attachments = {};
+      break;
+    case DUBBO_RESPONSE_BODY_FLAG.RESPONSE_NULL_VALUE_WITH_ATTACHMENTS:
+      err = null;
+      res = null;
+      attachments = body.read();
+      break;
+    case DUBBO_RESPONSE_BODY_FLAG.RESPONSE_VALUE_WITH_ATTACHMENTS:
+      err = null;
+      res = body.read();
+      attachments = body.read();
+      break;
+    case DUBBO_RESPONSE_BODY_FLAG.RESPONSE_WITH_EXCEPTION_WITH_ATTACHMENTS:
+      const exp = body.read();
+      err = exp instanceof Error ? exp : new DubboDecodeError(exp);
+      res = null;
+      attachments = body.read();
       break;
     default:
       err = new DubboDecodeError(
-        `Unknown result flag, expect '0' '1' '2', get  ${flag})`,
+        `Unknown result flag, expect '0/1/2/3/4/5', get  ${flag})`,
       );
       res = null;
   }
@@ -113,5 +138,6 @@
     requestId,
     err,
     res,
+    attachments,
   };
 }
diff --git a/packages/dubbo/src/queue.ts b/packages/dubbo/src/queue.ts
index e6fc390..08f63b2 100644
--- a/packages/dubbo/src/queue.ts
+++ b/packages/dubbo/src/queue.ts
@@ -131,7 +131,7 @@
     this._requestQueue.clear();
   }
 
-  failed(requestId: TRequestId, err: Error) {
+  failed(requestId: TRequestId, err: Error, attachments: Object = {}) {
     const ctx = this._requestQueue.get(requestId);
     if (!ctx) {
       return;
@@ -149,6 +149,8 @@
     if (err['cause']) {
       delete err['cause']['cause'];
     }
+    //dubbo2.6.3
+    ctx.providerAttachments = attachments;
     ctx.cleanTimeout();
     ctx.reject(err);
     this._clear(requestId);
@@ -178,12 +180,14 @@
     }
   }
 
-  resolve(requestId, res) {
+  resolve(requestId: TRequestId, res: any, attachments: Object = {}) {
     const ctx = this._requestQueue.get(requestId);
     if (!ctx) {
       return;
     }
     log('resolve requestId#%d, res: %O', requestId, res);
+    //dubbo2.6.3
+    ctx.providerAttachments = attachments;
     ctx.cleanTimeout();
     ctx.resolve(res);
     this._clear(requestId);
diff --git a/packages/dubbo/src/scheduler.ts b/packages/dubbo/src/scheduler.ts
index 9c35c7c..941978d 100644
--- a/packages/dubbo/src/scheduler.ts
+++ b/packages/dubbo/src/scheduler.ts
@@ -19,7 +19,7 @@
 import DubboAgent from './dubbo-agent';
 import {ScheduleError, SocketError, ZookeeperTimeoutError} from './err';
 import Queue from './queue';
-import {IZkClientProps} from './types';
+import {IDubboResponse, IZkClientProps} from './types';
 import {traceErr, traceInfo} from './util';
 import {ZkRegistry} from './zookeeper';
 
@@ -127,7 +127,7 @@
   /**
    * 处理zookeeper的错误
    */
-  private _handleZkClientError = err => {
+  private _handleZkClientError = (err: Error) => {
     log(err);
     //说明zookeeper连接不上
     if (err instanceof ZookeeperTimeoutError) {
@@ -199,11 +199,16 @@
   /**
    * 当收到数据的时候
    */
-  private _handleOnData = ({requestId, res, err}) => {
+  private _handleOnData = ({
+    requestId,
+    res,
+    err,
+    attachments,
+  }: IDubboResponse<any>) => {
     if (err) {
-      this._queue.failed(requestId, err);
+      this._queue.failed(requestId, err, attachments);
     } else {
-      this._queue.resolve(requestId, res);
+      this._queue.resolve(requestId, res, attachments);
     }
   };
 
diff --git a/packages/dubbo/src/types.ts b/packages/dubbo/src/types.ts
index f1988c9..7bda9a0 100644
--- a/packages/dubbo/src/types.ts
+++ b/packages/dubbo/src/types.ts
@@ -123,6 +123,7 @@
   requestId: number;
   err: Error | null;
   res: T | null;
+  attachments: Object;
 }
 
 export interface IHessianType {
