diff --git a/html/src/components/terminal/xterm/index.ts b/html/src/components/terminal/xterm/index.ts
index 18caf62..ffd9bc0 100644
--- a/html/src/components/terminal/xterm/index.ts
+++ b/html/src/components/terminal/xterm/index.ts
@@ -104,9 +104,10 @@ export class Xterm {
     private intervalID: NodeJS.Timeout;
     private writeFunc = (data: ArrayBuffer) => this.writeData(new Uint8Array(data));
     private status = false;
-    private titleStatus = false;
-    private checkStatus = false;
-    private connectStatus = false;
+    private hostTitle = "";
+    private postAttachCommand = [];
+    private postAttachCommandStatus = false;
+    private workdir = "";
     private beforeCommand?: string;
     constructor(
         private options: XtermOptions,
@@ -352,26 +353,17 @@ export class Xterm {
         )
             .then(response => response.json())
             .then(data => {
+                if (this.workdir === ''){
+                    this.workdir = data.workdir;
+                }
                 if (data.status !== '4' && data.status !== '0') {
                     this.sendData(data.command);
                 } else {
                     clearInterval(this.intervalID);
                     if (data.status === '4') {
-                        fetch(
-                            'http://' + options.get('domain') + ':'+ options.get('port') +'/' +
-                                options.get('user') +
-                                '/' +
-                                options.get('repo') +
-                                '/devcontainer/command?' +
-                                params
-                        )
-                            .then(response => response.json())
-                            .then(data => {
-                                this.sendData(data.command);
-                            })
-                            .catch(error => {
-                                console.error('Error:', error);
-                            });
+                        const parts = data.command.split('\n');
+                        this.sendData(parts[0]+"\n");
+                        this.postAttachCommand = parts;
                     }
                 }
             })
@@ -422,50 +414,40 @@ export class Xterm {
         const data = rawData.slice(1);
         switch (cmd) {
             case Command.OUTPUT:
-                console.log(this.status + ': ' + textDecoder.decode(data) + this.connectStatus + ' ' + this.checkStatus + ' ' + this.titleStatus );
+                console.log(this.status + ': ' + textDecoder.decode(data));
                 const options = new URLSearchParams(decodeURIComponent(window.location.search));
                 if (options.get('type') === 'docker') {
+                    // 保存host的标题
+                    if (this.hostTitle === ""){
+                        this.hostTitle = textDecoder.decode(data).replace(/\s/g, '');
+                    }
+                    // 检测是否退出devcontainer,标题等于host的标题
+                    if (this.status && textDecoder.decode(data).replace(/\s/g, '').includes(this.hostTitle)){
+                        this.status = false
+                    }
+                    // this.status = true 连接完成
                     if (
                         this.status === false &&
-                        textDecoder.decode(data).replace(/\s/g, '').includes('Successfully connected to the container'.replace(/\s/g, ''))
+                        textDecoder.decode(data).replace(/\s/g, '').includes('Successfully connected to the devcontainer'.replace(/\s/g, ''))
                     ) {
-                        if(this.connectStatus == true){
-                            this.status = true;
-                        }
-                        this.connectStatus = true;
-                    }
-                    if (this.checkStatus) {
-                        if (textDecoder.decode(data).replace(/\s/g, '').includes('You have out the container. Please refresh the terminal to reconnect.'.replace(/\s/g, ''))) {
-                            this.checkStatus = false;
-                            this.status = false;
-                            this.connectStatus = false;
-                        }
-                        if(textDecoder.decode(data).includes('\x1b')){
-                            this.checkStatus = false;
-                        }
-                    }
-                    if (this.titleStatus && textDecoder.decode(data).includes('\x1b')) {
-                        this.titleStatus = false;
-                        this.checkStatus = true;
-                        this.sendData(
-                            `echo $WEB_TERMINAL\n`
-                        );
+                        this.status = true;
                     }
+                    // 连接完成之前,不输出标题和docker命令
                     if ( 
-                        !(this.status === false && (textDecoder.decode(data).includes('\x1b') || textDecoder.decode(data).replace(/\s/g, '').includes('docker'))) &&
-                        this.titleStatus !== true &&
-                        this.checkStatus !== true
+                        !(this.status === false && (textDecoder.decode(data).includes('\x1b') || textDecoder.decode(data).replace(/\s/g, '').includes('docker')))
                     ){
                         this.writeFunc(data);
                     }
-                    if (textDecoder.decode(data).replace(/\s/g, '').includes('exit')) {
-                        this.titleStatus = true;
+                    if (this.status && textDecoder.decode(data).replace(/\s/g, '').includes(this.workdir) && !this.postAttachCommandStatus){
+                        for (let i = 1; i < this.postAttachCommand.length; i++){
+                            this.sendData(this.postAttachCommand[i]+"\n");
+                        }
+                        this.postAttachCommandStatus = true;
                     }
-                    
                 } else {
                     this.writeFunc(data);
                 }
-                console.log(this.status + ': ' + textDecoder.decode(data) + this.connectStatus + ' ' + this.checkStatus + ' ' + this.titleStatus );
+                console.log(this.status + ': ' + textDecoder.decode(data));
                 break;
             case Command.SET_WINDOW_TITLE:
                 console.log('SET_WINDOW_TITLESET_WINDOW_TITLE');