@templmf/temp-solf-lmf 0.0.55 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package//345/242/236/351/207/217/351/234/200/346/261/202prompt +72 -0
- package/guanwang/README.md +0 -95
- package/guanwang/docs/changelog.md +0 -145
- package/guanwang/docs/doc-maintenance.md +0 -229
- package/guanwang/docs/product.md +0 -181
- package/guanwang/docs/test-cases.md +0 -395
- package/guanwang/docs/usage.md +0 -291
- package/guanwang/env.example +0 -27
- package/guanwang/index.html +0 -13
- package/guanwang/package-lock.json +0 -3825
- package/guanwang/package.json +0 -32
- package/guanwang/public/favicon.svg +0 -4
- package/guanwang/public/react-runtime/babel.min.js +0 -4
- package/guanwang/public/react-runtime/react-dom.min.js +0 -267
- package/guanwang/public/react-runtime/react.min.js +0 -31
- package/guanwang/public/vue-repl-assets/compiler-sfc.esm-browser.js +0 -50795
- package/guanwang/public/vue-repl-assets/runtime-dom.esm-browser.js +0 -12758
- package/guanwang/public/vue-repl-assets/server-renderer.esm-browser.js +0 -8600
- package/guanwang/public/vue-repl-assets/vue.esm-browser.js +0 -18672
- package/guanwang/src/App.vue +0 -61
- package/guanwang/src/chat-sdk/core/components/ChatBox.vue +0 -305
- package/guanwang/src/chat-sdk/core/components/ChatSidebar.vue +0 -84
- package/guanwang/src/chat-sdk/core/components/InputBar.vue +0 -354
- package/guanwang/src/chat-sdk/core/components/MessageBubble.vue +0 -703
- package/guanwang/src/chat-sdk/core/useTheme.js +0 -31
- package/guanwang/src/chat-sdk/features/artifact/ArtifactCard.vue +0 -172
- package/guanwang/src/chat-sdk/features/artifact/ArtifactPanel.vue +0 -963
- package/guanwang/src/chat-sdk/features/artifact/index.js +0 -13
- package/guanwang/src/chat-sdk/features/artifact/useArtifactStore.js +0 -275
- package/guanwang/src/chat-sdk/features/codepreview/CodePreview.vue +0 -523
- package/guanwang/src/chat-sdk/features/codepreview/index.js +0 -7
- package/guanwang/src/chat-sdk/features/markdown/index.js +0 -13
- package/guanwang/src/chat-sdk/features/markdown/useMarkdown.js +0 -724
- package/guanwang/src/chat-sdk/features/mermaid/MermaidZoom.vue +0 -254
- package/guanwang/src/chat-sdk/features/upload/FileAttachment.vue +0 -142
- package/guanwang/src/chat-sdk/features/upload/index.js +0 -17
- package/guanwang/src/chat-sdk/features/upload/useFileHandler.js +0 -336
- package/guanwang/src/chat-sdk/headless/api/adapters/openai.js +0 -76
- package/guanwang/src/chat-sdk/headless/api/chatApi.js +0 -126
- package/guanwang/src/chat-sdk/headless/buildSystemPrompt.js +0 -351
- package/guanwang/src/chat-sdk/headless/index.js +0 -15
- package/guanwang/src/chat-sdk/headless/useChat.js +0 -77
- package/guanwang/src/chat-sdk/headless/useChatDB.js +0 -147
- package/guanwang/src/chat-sdk/headless/useChatStore.js +0 -529
- package/guanwang/src/chat-sdk/index.js +0 -79
- package/guanwang/src/chat-sdk/modes/architect.js +0 -27
- package/guanwang/src/chat-sdk/modes/ask.js +0 -26
- package/guanwang/src/chat-sdk/modes/code.js +0 -25
- package/guanwang/src/chat-sdk/modes/index.js +0 -36
- package/guanwang/src/chat-sdk/modes/requirements.js +0 -175
- package/guanwang/src/chat-sdk/settings/SettingsPanel.vue +0 -170
- package/guanwang/src/chat-sdk/settings/index.js +0 -9
- package/guanwang/src/chat-sdk/settings/useSettings.js +0 -122
- package/guanwang/src/chat-sdk/tools/defaults.js +0 -89
- package/guanwang/src/chat-sdk/tools/index.js +0 -16
- package/guanwang/src/chat-sdk/tools/parser.js +0 -116
- package/guanwang/src/components/CustomCursor.vue +0 -69
- package/guanwang/src/components/Footer.vue +0 -24
- package/guanwang/src/components/LoginModal.vue +0 -109
- package/guanwang/src/components/Navbar.vue +0 -193
- package/guanwang/src/components/ThemeToggle.vue +0 -25
- package/guanwang/src/composables/useArtifactStore.js +0 -253
- package/guanwang/src/composables/useAuth.js +0 -88
- package/guanwang/src/composables/useChatDB.js +0 -147
- package/guanwang/src/composables/useCountUp.js +0 -24
- package/guanwang/src/composables/useFileHandler.js +0 -345
- package/guanwang/src/composables/useTheme.js +0 -31
- package/guanwang/src/config/api.js +0 -71
- package/guanwang/src/main.js +0 -23
- package/guanwang/src/router/index.js +0 -23
- package/guanwang/src/services/authApi.js +0 -27
- package/guanwang/src/services/chatApi.js +0 -66
- package/guanwang/src/styles/global.css +0 -478
- package/guanwang/src/tracker/analyze.js +0 -73
- package/guanwang/src/tracker/config.js +0 -82
- package/guanwang/src/tracker/index.js +0 -18
- package/guanwang/src/tracker/service.js +0 -102
- package/guanwang/src/tracker/useChatTracker.js +0 -179
- package/guanwang/src/tracker/useTracker.js +0 -45
- package/guanwang/src/views/ChatView.vue +0 -65
- package/guanwang/src/views/HomeView.vue +0 -156
- package/guanwang/src/views/MarketView.vue +0 -143
- package/guanwang/src/views/PracticesView.vue +0 -190
- package/guanwang/src/views/SkillsView.vue +0 -129
- package/guanwang/temp +0 -19
- package/guanwang/vite.config.js +0 -6
package/guanwang/docs/usage.md
DELETED
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
# chat-sdk 使用文档
|
|
2
|
-
|
|
3
|
-
## 两种接入方式
|
|
4
|
-
|
|
5
|
-
### 方式一:完整视图模式
|
|
6
|
-
|
|
7
|
-
挂载整套对话界面,无需自己写 UI。
|
|
8
|
-
|
|
9
|
-
```js
|
|
10
|
-
import { createAIChat } from '@/chat-sdk'
|
|
11
|
-
|
|
12
|
-
createAIChat({
|
|
13
|
-
el: '#chat-container',
|
|
14
|
-
|
|
15
|
-
models: [
|
|
16
|
-
{ id: 'qwen3-32b', name: 'Qwen3 32B', baseURL: 'http://192.168.1.100:8080', apiKey: 'sk-xxx', vision: false },
|
|
17
|
-
{ id: 'qwen-vl', name: 'Qwen VL', baseURL: 'http://192.168.1.101:8080', apiKey: 'sk-yyy', vision: true },
|
|
18
|
-
],
|
|
19
|
-
defaultModel: 'qwen3-32b',
|
|
20
|
-
autoVision: true,
|
|
21
|
-
|
|
22
|
-
features: {
|
|
23
|
-
artifact: true,
|
|
24
|
-
markdown: true,
|
|
25
|
-
upload: true,
|
|
26
|
-
codepreview: true,
|
|
27
|
-
},
|
|
28
|
-
|
|
29
|
-
userControls: {
|
|
30
|
-
modelSelector: true,
|
|
31
|
-
artifact: true,
|
|
32
|
-
upload: true,
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
modes: ['code', 'ask', 'architect', 'requirements'],
|
|
36
|
-
defaultMode: 'code',
|
|
37
|
-
customInstructions: '你是公司内部 AI 助手,回答请简洁专业。',
|
|
38
|
-
})
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
### 方式二:Headless 模式
|
|
44
|
-
|
|
45
|
-
只接入能力,自己控制视图。
|
|
46
|
-
|
|
47
|
-
```vue
|
|
48
|
-
<script setup>
|
|
49
|
-
import { useChat } from '@/chat-sdk/headless'
|
|
50
|
-
|
|
51
|
-
const {
|
|
52
|
-
messages,
|
|
53
|
-
isLoading,
|
|
54
|
-
currentMode,
|
|
55
|
-
selectedModel,
|
|
56
|
-
availableModels,
|
|
57
|
-
activeArtifacts,
|
|
58
|
-
send,
|
|
59
|
-
abort,
|
|
60
|
-
switchMode,
|
|
61
|
-
selectModel,
|
|
62
|
-
clearSession,
|
|
63
|
-
newSession,
|
|
64
|
-
onToolCall,
|
|
65
|
-
} = useChat({
|
|
66
|
-
models: [
|
|
67
|
-
{ id: 'qwen3-32b', name: 'Qwen3 32B', baseURL: 'http://192.168.1.100:8080', apiKey: 'sk-xxx', vision: false },
|
|
68
|
-
],
|
|
69
|
-
defaultModel: 'qwen3-32b',
|
|
70
|
-
modes: ['code', 'ask'],
|
|
71
|
-
defaultMode: 'code',
|
|
72
|
-
features: { artifact: true, markdown: true },
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
// 可选:覆盖工具默认行为
|
|
76
|
-
onToolCall('ask_followup_question', ({ params, resolve }) => {
|
|
77
|
-
// 自己渲染选项 UI,用户选择后调用 resolve(answer)
|
|
78
|
-
showMyOptions(params.suggests, resolve)
|
|
79
|
-
})
|
|
80
|
-
</script>
|
|
81
|
-
|
|
82
|
-
<template>
|
|
83
|
-
<div v-for="msg in messages" :key="msg.id">
|
|
84
|
-
<span>{{ msg.role }}</span>
|
|
85
|
-
<span>{{ msg.content }}</span>
|
|
86
|
-
<!-- activeArtifacts 自己决定如何渲染 -->
|
|
87
|
-
</div>
|
|
88
|
-
<button @click="send({ text: '你好' })">发送</button>
|
|
89
|
-
</template>
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## config 完整字段说明
|
|
95
|
-
|
|
96
|
-
| 字段 | 类型 | 必填 | 说明 |
|
|
97
|
-
|---|---|---|---|
|
|
98
|
-
| `el` | `string \| HTMLElement` | 完整视图必填 | 挂载节点,如 `'#app'` |
|
|
99
|
-
| `models` | `ModelConfig[]` | 是 | 模型列表,见下方 |
|
|
100
|
-
| `defaultModel` | `string` | 是 | 默认模型 id |
|
|
101
|
-
| `autoVision` | `boolean` | 否 | 消息含图片时自动切 `vision:true` 的模型 |
|
|
102
|
-
| `features` | `FeaturesConfig` | 否 | 控制哪些 chunk 加载,见下方 |
|
|
103
|
-
| `userControls` | `UserControlsConfig` | 否 | 控制哪些开关对用户可见 |
|
|
104
|
-
| `modes` | `string[]` | 否 | 启用的模式,默认 `['code']` |
|
|
105
|
-
| `defaultMode` | `string` | 否 | 默认模式 id |
|
|
106
|
-
| `customInstructions` | `string` | 否 | 追加到所有模式 prompt 末尾的自定义指令 |
|
|
107
|
-
| `title` | `string` | 否 | 对话框标题,默认 `'AI 助手'` |
|
|
108
|
-
| `placeholder` | `string` | 否 | 输入框占位文字 |
|
|
109
|
-
|
|
110
|
-
### ModelConfig
|
|
111
|
-
|
|
112
|
-
```ts
|
|
113
|
-
{
|
|
114
|
-
id: string // 模型唯一标识(也是发给 API 的 model 字段)
|
|
115
|
-
name: string // 显示名称
|
|
116
|
-
baseURL: string // 接口地址,如 'http://192.168.1.100:8080'
|
|
117
|
-
apiKey: string // API Key,内网可传空字符串
|
|
118
|
-
vision: boolean // 是否支持图片输入
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### FeaturesConfig
|
|
123
|
-
|
|
124
|
-
控制对应 chunk 是否下载,`false` 时代码完全不加载。
|
|
125
|
-
|
|
126
|
-
| key | 说明 |
|
|
127
|
-
|---|---|
|
|
128
|
-
| `artifact` | 代码文件生成面板 |
|
|
129
|
-
| `markdown` | Markdown / 代码高亮 / KaTeX 渲染 |
|
|
130
|
-
| `upload` | 文件和图片上传 |
|
|
131
|
-
| `codepreview` | 代码预览弹框(含 Vue SFC / HTML 预览)|
|
|
132
|
-
|
|
133
|
-
### UserControlsConfig
|
|
134
|
-
|
|
135
|
-
声明哪些开关在设置面板里对用户可见。
|
|
136
|
-
|
|
137
|
-
| 值 | 含义 |
|
|
138
|
-
|---|---|
|
|
139
|
-
| `true` | 显示开关,默认开启,用户可关闭 |
|
|
140
|
-
| `false` | 显示开关,默认关闭,用户可开启 |
|
|
141
|
-
| 不填 | 不显示开关,强制开启 |
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
## useChat() 返回值
|
|
146
|
-
|
|
147
|
-
### 状态(只读 ref)
|
|
148
|
-
|
|
149
|
-
| 名称 | 类型 | 说明 |
|
|
150
|
-
|---|---|---|
|
|
151
|
-
| `messages` | `Ref<Message[]>` | 当前会话消息列表 |
|
|
152
|
-
| `isLoading` | `Ref<boolean>` | 是否请求中 |
|
|
153
|
-
| `currentMode` | `Ref<string>` | 当前模式 id |
|
|
154
|
-
| `selectedModel` | `ComputedRef<ModelConfig>` | 当前选中模型 |
|
|
155
|
-
| `availableModels` | `ModelConfig[]` | 全部可用模型(非响应式) |
|
|
156
|
-
| `activeArtifacts` | `Ref<Artifact[]>` | 当前会话的 artifact 列表 |
|
|
157
|
-
|
|
158
|
-
### 方法
|
|
159
|
-
|
|
160
|
-
| 名称 | 签名 | 说明 |
|
|
161
|
-
|---|---|---|
|
|
162
|
-
| `send` | `(input: SendInput) => void` | 发送消息 |
|
|
163
|
-
| `abort` | `() => void` | 中止当前流式请求 |
|
|
164
|
-
| `switchMode` | `(modeId: string) => void` | 切换模式 |
|
|
165
|
-
| `selectModel` | `(modelId: string) => void` | 切换模型 |
|
|
166
|
-
| `clearSession` | `() => void` | 清空当前会话 |
|
|
167
|
-
| `newSession` | `() => number` | 新建会话,返回会话 id |
|
|
168
|
-
| `onToolCall` | `(name, handler) \| (handler)` | 注册工具回调 |
|
|
169
|
-
|
|
170
|
-
### SendInput
|
|
171
|
-
|
|
172
|
-
```ts
|
|
173
|
-
// 纯文本
|
|
174
|
-
send({ text: '帮我写一个登录组件' })
|
|
175
|
-
|
|
176
|
-
// 带附件
|
|
177
|
-
send({
|
|
178
|
-
text: '分析这张截图',
|
|
179
|
-
attachments: [{ type: 'image', file: File }],
|
|
180
|
-
})
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### Message 格式
|
|
184
|
-
|
|
185
|
-
```ts
|
|
186
|
-
{
|
|
187
|
-
id: number
|
|
188
|
-
role: 'user' | 'assistant' | 'system-tip' | 'followup'
|
|
189
|
-
content: string // AI / 用户文字内容
|
|
190
|
-
parts: Part[] // 结构化内容(text / image / file)
|
|
191
|
-
streaming: boolean // 是否流式输出中
|
|
192
|
-
error: boolean // 是否出错
|
|
193
|
-
artifacts: string[] // 关联的 artifact id 列表
|
|
194
|
-
}
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
---
|
|
198
|
-
|
|
199
|
-
## 模式说明
|
|
200
|
-
|
|
201
|
-
| 模式 id | 名称 | 职责 |
|
|
202
|
-
|---|---|---|
|
|
203
|
-
| `code` | Code | 编写、修改、重构代码,输出完整代码文件 |
|
|
204
|
-
| `ask` | Ask | 解释概念、回答技术问题,不生成代码文件 |
|
|
205
|
-
| `architect` | Architect | 系统设计、技术方案、架构拆解,输出技术文档 |
|
|
206
|
-
| `requirements` | 需求 | 梳理需求,输出用户故事和功能拆解列表 |
|
|
207
|
-
|
|
208
|
-
模式切换方式:
|
|
209
|
-
```js
|
|
210
|
-
// 代码切换
|
|
211
|
-
switchMode('architect')
|
|
212
|
-
|
|
213
|
-
// AI 自动触发(通过 switch_mode 工具)
|
|
214
|
-
// 消费方监听
|
|
215
|
-
onToolCall('switch_mode', ({ params, resolve }) => {
|
|
216
|
-
if (confirm(`切换到 ${params.mode_slug} 模式?`)) {
|
|
217
|
-
switchMode(params.mode_slug)
|
|
218
|
-
resolve()
|
|
219
|
-
}
|
|
220
|
-
})
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
---
|
|
224
|
-
|
|
225
|
-
## 埋点接入
|
|
226
|
-
|
|
227
|
-
### 官网页面埋点
|
|
228
|
-
|
|
229
|
-
在 `App.vue` 路由钩子和登录成功回调里接入:
|
|
230
|
-
|
|
231
|
-
```js
|
|
232
|
-
import { useTracker } from '@/tracker'
|
|
233
|
-
const tracker = useTracker()
|
|
234
|
-
|
|
235
|
-
// 路由 afterEach
|
|
236
|
-
router.afterEach((to) => tracker.pageView(to.path))
|
|
237
|
-
|
|
238
|
-
// 按钮点击
|
|
239
|
-
tracker.btnClick('hero_cta', '立即体验')
|
|
240
|
-
|
|
241
|
-
// 登录成功
|
|
242
|
-
tracker.loginSuccess(user.name)
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
### 对话框埋点
|
|
246
|
-
|
|
247
|
-
对话行为埋点(发消息、回复、中止、模式切换)已内置在 `useChatStore` 中,只需在 `createAIChat` config 里注入 `getUser`:
|
|
248
|
-
|
|
249
|
-
```js
|
|
250
|
-
createAIChat({
|
|
251
|
-
// ...其他配置
|
|
252
|
-
getUser: () => ({ name: currentUser.name, id: currentUser.id }),
|
|
253
|
-
})
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
采纳行为埋点(复制、下载)在 `ArtifactPanel` 和 `MessageBubble` 里通过 `chatStore.tracker` 调用,已自动处理,无需额外接入。
|
|
257
|
-
|
|
258
|
-
### 环境变量
|
|
259
|
-
|
|
260
|
-
```env
|
|
261
|
-
VITE_ACKEE_URL=http://your-ackee-server:3000 # Ackee 服务地址
|
|
262
|
-
VITE_ACKEE_DOMAIN=your-domain-uuid # Ackee Domain ID
|
|
263
|
-
VITE_TRACK_ENABLED=true # false 时全部静默,默认 true
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
### 自定义关键词字典
|
|
267
|
-
|
|
268
|
-
在 `src/tracker/config.js` 的 `INTENT_KEYWORDS` 里维护意图匹配关键词,修改后无需改动其他文件。
|
|
269
|
-
|
|
270
|
-
---
|
|
271
|
-
|
|
272
|
-
## 环境变量(guanwang 项目专用)
|
|
273
|
-
|
|
274
|
-
项目根目录创建 `.env.local`:
|
|
275
|
-
|
|
276
|
-
```env
|
|
277
|
-
VITE_API_BASE_URL=http://192.168.1.100:8080
|
|
278
|
-
VITE_API_KEY=sk-xxx
|
|
279
|
-
VITE_MODEL=qwen3-32b
|
|
280
|
-
|
|
281
|
-
# 多模型(逗号分隔)
|
|
282
|
-
VITE_MODELS=qwen3-32b,qwen3-7b,qwen-vl
|
|
283
|
-
|
|
284
|
-
# 调试:AI 气泡底部显示原始文本
|
|
285
|
-
VITE_SHOW_RAW_TEXT=false
|
|
286
|
-
|
|
287
|
-
# 埋点
|
|
288
|
-
VITE_ACKEE_URL=http://192.168.1.200:3000
|
|
289
|
-
VITE_ACKEE_DOMAIN=your-domain-uuid
|
|
290
|
-
VITE_TRACK_ENABLED=true
|
|
291
|
-
```
|
package/guanwang/env.example
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# 复制此文件为 .env.local 并填入真实配置
|
|
2
|
-
# .env.local 已加入 .gitignore,不会提交到代码库
|
|
3
|
-
|
|
4
|
-
# ─────────────────────────────────────────────
|
|
5
|
-
# LLM 接口(默认模型,必填)
|
|
6
|
-
# ─────────────────────────────────────────────
|
|
7
|
-
VITE_VL_API_BASE_URL=http://192.168.1.100:8080 # vl 独立 endpoint
|
|
8
|
-
VITE_VL_API_KEY=sk-your-key-here # vl 独立 key
|
|
9
|
-
VITE_VL_MODEL=qwen3-vl-8b-instruct
|
|
10
|
-
|
|
11
|
-
VITE_API_BASE_URL=http://192.168.1.100:8080
|
|
12
|
-
VITE_API_KEY=sk-your-key-here
|
|
13
|
-
VITE_MODEL=qwen3-32b
|
|
14
|
-
|
|
15
|
-
# ─────────────────────────────────────────────
|
|
16
|
-
# 埋点(Ackee,选填)
|
|
17
|
-
# 不填 VITE_ACKEE_URL 则埋点自动关闭
|
|
18
|
-
# ─────────────────────────────────────────────
|
|
19
|
-
VITE_ACKEE_URL=http://192.168.1.200:3000
|
|
20
|
-
VITE_ACKEE_DOMAIN=your-domain-id-here
|
|
21
|
-
VITE_TRACK_ENABLED=true
|
|
22
|
-
|
|
23
|
-
# ─────────────────────────────────────────────
|
|
24
|
-
# 调试(开发时使用,生产环境保持 false)
|
|
25
|
-
# ─────────────────────────────────────────────
|
|
26
|
-
# AI 气泡底部显示原始文本,方便调试 Markdown 渲染
|
|
27
|
-
VITE_SHOW_RAW_TEXT=false
|
package/guanwang/index.html
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="zh-CN">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<title>Citic Frontend</title>
|
|
8
|
-
</head>
|
|
9
|
-
<body>
|
|
10
|
-
<div id="app"></div>
|
|
11
|
-
<script type="module" src="/src/main.js"></script>
|
|
12
|
-
</body>
|
|
13
|
-
</html>
|