diff --git a/src/api/ai/writer/index.ts b/src/api/ai/writer/index.ts
new file mode 100644
index 00000000..4ce4e2d0
--- /dev/null
+++ b/src/api/ai/writer/index.ts
@@ -0,0 +1,53 @@
+import request from '@/config/axios'
+import { fetchEventSource } from '@microsoft/fetch-event-source'
+
+import { getAccessToken } from '@/utils/auth'
+import { config } from '@/config/axios/config'
+
+export interface WriteParams {
+ /**
+ * 1:撰写 2:回复
+ */
+ type: 1 | 2
+ /**
+ * 写作内容提示 1。撰写 2回复
+ */
+ prompt: string
+ /**
+ * 原文
+ */
+ originalContent: string
+ /**
+ * 长度
+ */
+ length: number
+ /**
+ * 格式
+ */
+ format: number
+ /**
+ * 语气
+ */
+ tone: number
+ /**
+ * 语言
+ */
+ language: number
+}
+export const writeStream = (data: WriteParams, onMessage, onError, onClose, ctrl) => {
+ // return request.post({ url: '/ai/write/generate-stream', data })
+ const token = getAccessToken()
+ return fetchEventSource(`${config.base_url}/ai/write/generate-stream`, {
+ method: 'post',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: `Bearer ${token}`
+ },
+ openWhenHidden: true,
+ body: JSON.stringify(data),
+ onmessage: onMessage,
+ onerror: onError,
+ onclose: onClose,
+ signal: ctrl.signal
+ })
+}
diff --git a/src/views/ai/writer/components/Left.vue b/src/views/ai/writer/components/Left.vue
new file mode 100644
index 00000000..9c3031ae
--- /dev/null
+++ b/src/views/ai/writer/components/Left.vue
@@ -0,0 +1,175 @@
+
+
+
+
+ {{ text }}
+
+
+
+
+
+ {{ label }}
+
+
+ {{ hint }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 重置
+ 生成
+
+
+
+
+
+
+
diff --git a/src/views/ai/writer/components/Right.vue b/src/views/ai/writer/components/Right.vue
new file mode 100644
index 00000000..a11b7c24
--- /dev/null
+++ b/src/views/ai/writer/components/Right.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/src/views/ai/writer/components/Tag.vue b/src/views/ai/writer/components/Tag.vue
new file mode 100644
index 00000000..4a32e572
--- /dev/null
+++ b/src/views/ai/writer/components/Tag.vue
@@ -0,0 +1,32 @@
+
+
+
+ {{ tag.label }}
+
+
+
+
+
+
+
diff --git a/src/views/ai/writer/index.vue b/src/views/ai/writer/index.vue
new file mode 100644
index 00000000..3cb4a7d7
--- /dev/null
+++ b/src/views/ai/writer/index.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+