diff --git a/README.md b/README.md
index 2580701..3a337e7 100644
--- a/README.md
+++ b/README.md
@@ -1,64 +1,106 @@
-# GURU Dof kcp Client
+# GURU Dof Client Library
 
 ### VERSION 0.0.1
 
 ## 插件介绍
 
-基于upm_guru_kcp库,服务与dof项目的客户端类封装.
-在更新了prot文件之后,需要重新生成对应的cs文件。请按以下步骤进行操作:
+> 本插件是基于 `upm_guru_kcp` 库,服务与 `dof` 项目的客户端类封装.
+>
+> 当客户端或服务端更新了 `prot` 文件之后,需要重新生成对应的cs文件。
+> 
+> 具体请按以下步骤进行操作:
+>
 
-## 安装 .NET 6.0 运行时(必须使用6.0版本)
+
+
+## 环境部署
+
+### 安装 .NET 6.0 运行时(必须使用6.0版本)
 * 下载离线安装包
   - Mac: https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-6.0.413-macos-x64-installer
   - Windows: https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/sdk-6.0.413-windows-x64-installer 
 
 * Mac下建议使用 homebrew
-brew tap isen-ng/dotnet-sdk-versions
-brew install --cask dotnet-sdk6-0-400
+  ```shell
+  brew tap isen-ng/dotnet-sdk-versions
+  
+  brew install --cask dotnet-sdk6-0-400
+  ```
 
-## 安装 protobuf-net.Protogen 命令行程序
-dotnet tool install --global protobuf-net.Protogen --version 3.2.12
+### 安装 protobuf-net.Protogen 命令行程序
+
+* 命令行安装 protobuf-net.Protogen 工具
+  ```shell  
+  dotnet tool install --global protobuf-net.Protogen --version 3.2.12
+  ```
 
 * Windows
-protogen 的安装目录为 C:\Users\用户名\.dotnet\tools ,可直接在 cmd 命令行下运行 protogen
+protogen 的安装目录为 `C:\Users\用户名\.dotnet\tools` ,可直接在 cmd 命令行下运行 protogen
 
-* Macos
-在 Macos 下 protogen 的安装目录为 /Users/用户名/.dotnet/tools,可能需要手动将
-```
-PATH=PATH:/Users/用户名/.dotnet/tools
-```
-加入到 ~/.bash_profile中,因为 homebrew 加入的 PATH ~/.dotnet/tools 无效
+* Macos 
+在 Macos 下 protogen 的安装目录为 `/Users/用户名/.dotnet/tools`,可能需要手动将
+  ```shell
+  PATH=PATH:/Users/用户名/.dotnet/tools
+  ```
+  加入到 `~/.bash_profile` 中,因为 homebrew 加入的 `PATH ~/.dotnet/tools` 无效
 
-## 生成 cs 文件
+
+
+## 文件构建
+
+### 生成 cs 文件
 
 * Windows
-```
-cd upm_guru_dof_lib\Runtime\ServerProto
-protogen messages.proto --csharp_out=..\NetworkGen
-```
+  ```shell
+  cd upm_guru_dof_lib\Runtime\ServerProto
+  protogen messages.proto --csharp_out=..\NetworkGen
+  ```
 
 * MacOS
-```
-cd upm_guru_dof_lib/Runtime/ServerProto
-~/.dotnet/tools/protogen messages.proto --csharp_out=../NetworkGen
-```
+  ```shell
+  cd upm_guru_dof_lib/Runtime/ServerProto
+  ~/.dotnet/tools/protogen messages.proto --csharp_out=../NetworkGen
+  ```
+
 
-## 安装和接入
+## UPM 安装和接入
 
 ### 插件引入
 
-- 本插件需要使用公司内部的Gitlab加载对应的repo, 详见 [Castbox内部git服务器Gitea使用指南](https://docs.google.com/document/d/1DiGPDD5Teu2QcYaBhqAcsqMbb3DJ5sdnTQMuvVzJSUk/edit#heading=h.w9tkkzwwyjxf)
-- 根据文档部署好本机配置后, 请在Unity内部配置如下参数
-  - 修改位于项目Packages/manifest.json文件,在dependencies中添加
-  ```
-  {
-  "dependencies": {
-    "com.guru.unity.gurudoflib": "git@git.chengdu.pundit.company:castbox/upm_guru_dof_lib.git",
-    ...
+* 本插件需要使用公司内部的Gitlab加载对应的repo, 详见 [Castbox内部git服务器Gitea使用指南](https://docs.google.com/document/d/1DiGPDD5Teu2QcYaBhqAcsqMbb3DJ5sdnTQMuvVzJSUk/edit#heading=h.w9tkkzwwyjxf)
+* 根据文档部署好本机配置后, 请在Unity内部配置如下参数
+  - 修改位于项目 `Packages/manifest.json` 文件,在dependencies中添加
+    ```json
+    {
+      "dependencies": {
+        "com.guru.unity.gurudoflib": "git@git.chengdu.pundit.company:castbox/upm_guru_dof_lib.git",
+        ...
+      }
     }
-  }
-  ``` 
+    ``` 
   - 修改link.xml文件,添加
-  ```
-  
-  ```
\ No newline at end of file
+    ```xml
+    
+    ```
+
+## UPM 发布
+
+在项目研发中, 根据业务需求, 将会需要更改接口的逻辑及结构. 并更新此库. 需要项目组自行维护和发布 dof_lib 的版本.
+
+插件更新流程如下:
+
+1. 研发流中正常修改 `proto` 接口和对应的业务逻辑, 并提交推送至 `main` 分支
+2. 手动修改 `./Makefile` 中的 `Version` 字段并提交. (该字段为插件的版本号, 请遵循三位版本号规范, 如: `1.0.0`) 
+3. 在此路径中, 执行命令行, 项目会自动提交并打入Tag标签 
+   ```shell
+   make publish
+   ```
+4. 在游戏主项目中, 修改 `Packages/manifest.json` 文件, 将 `com.guru.unity.gurudoflib` 的版本号改为刚刚发布的版本号, 并等待编译结束. (没有的需要再repo地址后添加 `#x.x.x` 作为版本标记)
+    ```json
+    {
+      "dependencies": {
+        "com.guru.unity.gurudoflib": "git@git.chengdu.pundit.company:castbox/upm_guru_dof_lib.git#0.0.1",
+        ...
+      }
+    }
+    ```
\ No newline at end of file
diff --git a/helper.py b/helper.py
index face09b..e44da10 100644
--- a/helper.py
+++ b/helper.py
@@ -2,16 +2,15 @@
 import argparse
 import json
 
-
+# Change Version to json file with 'version' key
 def set_version(path, version):
     s = json.loads(open(path).read())
     s["version"] = version
     # print('json', s)
-    json.dump(s, open(path, "w"))
+    json.dump(s, open(path, "w"), indent=1)
     print('Packge version set to', version)
 
-
-
+# Entry
 if __name__ == '__main__':
     # 解析参数
     parser = argparse.ArgumentParser(description='Process some integers.')
@@ -24,13 +23,13 @@ if __name__ == '__main__':
     path = args.path
     if len(path) == 0:
         print('no path found')
-        
-    
-    ver = args.ver
+        exit(1)
 
+    ver = args.ver
+    if len(ver) == 0:
+        ver = '0.0.1'
 
     if args.action == 'set_ver':
         set_version(path, ver)    
 
-
-
+    #------ main end ------
\ No newline at end of file