@vite-plugin-opencode-assistant/opencode 1.0.8 → 1.0.10

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.
@@ -1,12 +1,12 @@
1
- const C = "[vite-plugin-opencode]";
2
- var S = Object.defineProperty, N = Object.defineProperties, j = Object.getOwnPropertyDescriptors, b = Object.getOwnPropertySymbols, L = Object.prototype.hasOwnProperty, R = Object.prototype.propertyIsEnumerable, O = (e, t, r) => t in e ? S(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, g = (e, t) => {
1
+ const T = "[vite-plugin-opencode]";
2
+ var S = Object.defineProperty, N = Object.defineProperties, L = Object.getOwnPropertyDescriptors, b = Object.getOwnPropertySymbols, j = Object.prototype.hasOwnProperty, R = Object.prototype.propertyIsEnumerable, y = (e, t, r) => t in e ? S(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, m = (e, t) => {
3
3
  for (var r in t || (t = {}))
4
- L.call(t, r) && O(e, r, t[r]);
4
+ j.call(t, r) && y(e, r, t[r]);
5
5
  if (b)
6
6
  for (var r of b(t))
7
- R.call(t, r) && O(e, r, t[r]);
7
+ R.call(t, r) && y(e, r, t[r]);
8
8
  return e;
9
- }, m = (e, t) => N(e, j(t)), y = (e, t, r) => O(e, typeof t != "symbol" ? t + "" : t, r);
9
+ }, g = (e, t) => N(e, L(t)), O = (e, t, r) => y(e, typeof t != "symbol" ? t + "" : t, r);
10
10
  const u = {
11
11
  reset: "\x1B[0m",
12
12
  dim: "\x1B[2m",
@@ -33,11 +33,11 @@ let x = {
33
33
  level: 1,
34
34
  showTrace: !1
35
35
  };
36
- function M() {
36
+ function U() {
37
37
  const e = /* @__PURE__ */ new Date(), t = String(e.getHours()).padStart(2, "0"), r = String(e.getMinutes()).padStart(2, "0"), o = String(e.getSeconds()).padStart(2, "0"), i = String(e.getMilliseconds()).padStart(3, "0");
38
38
  return `${t}:${r}:${o}.${i}`;
39
39
  }
40
- function U(e = 3) {
40
+ function B(e = 3) {
41
41
  const t = new Error().stack;
42
42
  if (!t) return "";
43
43
  const o = t.split(`
@@ -65,7 +65,7 @@ ${e.stack}` : ""}`;
65
65
  }
66
66
  return String(e);
67
67
  }
68
- function k(e) {
68
+ function M(e) {
69
69
  if (!e || Object.keys(e).length === 0) return "";
70
70
  const t = [];
71
71
  e.module && t.push(`[${e.module}]`), e.operation && t.push(`(${e.operation})`), e.traceId && t.push(`trace:${e.traceId}`), e.duration !== void 0 && t.push(`${e.duration}ms`);
@@ -81,12 +81,12 @@ function k(e) {
81
81
  function E(e, t, r, ...o) {
82
82
  if (e < x.level) return;
83
83
  const i = [];
84
- i.push(`${u.dim}[${process.pid}]${u.reset}`), i.push(`${u.dim}${M()}${u.reset}`);
84
+ i.push(`${u.dim}[${process.pid}]${u.reset}`), i.push(`${u.dim}${U()}${u.reset}`);
85
85
  const p = A[e], n = I[e].padEnd(5);
86
- i.push(`${p}${n}${u.reset}`), i.push(`${u.bright}${C}${u.reset}`);
87
- const a = k(r);
86
+ i.push(`${p}${n}${u.reset}`), i.push(`${u.bright}${T}${u.reset}`);
87
+ const a = M(r);
88
88
  if (a && i.push(`${u.magenta}${a}${u.reset}`), i.push(t), e >= 2) {
89
- const c = U(4);
89
+ const c = B(4);
90
90
  c && i.push(`${u.dim}(${c})${u.reset}`);
91
91
  }
92
92
  const s = o.map((c) => h(c)).join(" ");
@@ -112,39 +112,39 @@ const d = {
112
112
  groupEnd() {
113
113
  }
114
114
  };
115
- class B {
115
+ class k {
116
116
  constructor(t, r) {
117
- y(this, "startTime"), y(this, "context"), y(this, "operation"), this.operation = t, this.context = r || {}, this.startTime = performance.now(), d.debug(`⏱️ Starting: ${t}`, this.context);
117
+ O(this, "startTime"), O(this, "context"), O(this, "operation"), this.operation = t, this.context = r || {}, this.startTime = performance.now(), d.debug(`⏱️ Starting: ${t}`, this.context);
118
118
  }
119
119
  end(t) {
120
120
  const r = Math.round(performance.now() - this.startTime), o = t || `✓ Completed: ${this.operation}`;
121
- return d.debug(o, m(g({}, this.context), { duration: r })), r;
121
+ return d.debug(o, g(m({}, this.context), { duration: r })), r;
122
122
  }
123
123
  checkpoint(t) {
124
124
  const r = Math.round(performance.now() - this.startTime);
125
- return d.debug(` ↳ ${t}`, m(g({}, this.context), { duration: r })), r;
125
+ return d.debug(` ↳ ${t}`, g(m({}, this.context), { duration: r })), r;
126
126
  }
127
127
  }
128
128
  function D(e) {
129
129
  return {
130
130
  debug(t, r, ...o) {
131
- d.debug(t, m(g({}, r), { module: e }), ...o);
131
+ d.debug(t, g(m({}, r), { module: e }), ...o);
132
132
  },
133
133
  info(t, r, ...o) {
134
- d.info(t, m(g({}, r), { module: e }), ...o);
134
+ d.info(t, g(m({}, r), { module: e }), ...o);
135
135
  },
136
136
  warn(t, r, ...o) {
137
- d.warn(t, m(g({}, r), { module: e }), ...o);
137
+ d.warn(t, g(m({}, r), { module: e }), ...o);
138
138
  },
139
139
  error(t, r, ...o) {
140
- d.error(t, m(g({}, r), { module: e }), ...o);
140
+ d.error(t, g(m({}, r), { module: e }), ...o);
141
141
  },
142
142
  timer(t, r) {
143
- return new B(t, m(g({}, r), { module: e }));
143
+ return new k(t, g(m({}, r), { module: e }));
144
144
  }
145
145
  };
146
146
  }
147
- const T = 1e4, F = "__OPENCODE_CONTEXT__", l = D("OpenCodePluginPageContext"), X = async () => {
147
+ const C = 1e4, F = "__OPENCODE_CONTEXT__", l = D("OpenCodePluginPageContext"), V = async () => {
148
148
  l.info("PageContextPlugin loading...");
149
149
  const e = process.env.OPENCODE_CONTEXT_API_URL;
150
150
  if (l.debug("Context API URL:", { contextApiUrl: e }), !e)
@@ -198,7 +198,7 @@ const T = 1e4, F = "__OPENCODE_CONTEXT__", l = D("OpenCodePluginPageContext"), X
198
198
  n.line && (c += `:${n.line}`, n.column && (c += `:${n.column}`)), s.push(`- **文件位置**: \`${c}\``);
199
199
  }
200
200
  if ((f = n.innerText) != null && f.trim()) {
201
- const c = n.innerText.trim().substring(0, T), $ = n.innerText.length > T ? `
201
+ const c = n.innerText.trim().substring(0, C), $ = n.innerText.length > C ? `
202
202
  ... (已省略部分内容)` : "";
203
203
  s.push(`- **节点文本**:
204
204
  \`\`\`text
@@ -231,14 +231,60 @@ ${c}${$}
231
231
  "experimental.chat.system.transform": async (n, a) => {
232
232
  l.debug("System transform hook called");
233
233
  const s = `
234
- 你是一个专业的前端开发助手,当前正集成在用户的 Vite 项目中(通过 vite-plugin-opencode-assistant)。
235
- 在对话中,用户可能会自动附加他们当前正在浏览的页面上下文(包括页面 URL、标题以及在页面上选中的 DOM 节点信息)。
234
+ 你是一个专业的前端开发助手,运行在 **OpenCode** 平台中,并通过 **vite-plugin-opencode-assistant** 插件集成到用户的 Vite 开发环境。
236
235
 
237
- 处理这些上下文时,请遵循以下规则:
238
- 1. **理解上下文**:当看到“我现在正在浏览项目中的这个页面”或“选中节点”等信息时,请将其作为用户请求的背景。
239
- 2. **利用文件路径**:如果提供的节点信息中包含 \`文件位置\`,这通常对应于项目中的源代码文件。你可以直接分析或建议修改这些文件。
240
- 3. **精准定位**:结合节点的 \`节点文本\` 和 \`文件位置\`,帮助用户快速定位问题或实现功能。
241
- 4. **直接给出方案**:针对用户的实际请求,直接给出清晰、可执行的代码修改建议或解释,避免不必要的废话。
236
+ ## 你的工作环境
237
+
238
+ ### 架构说明
239
+
240
+ 你运行在 OpenCode 服务端,但通过 **iframe 嵌入**的方式出现在用户正在开发的网页上:
241
+
242
+ \`\`\`
243
+ ┌─────────────────────────────────────────────────────────────┐
244
+ │ 用户正在开发的网页 (运行在 Vite Dev Server) │
245
+ │ ┌───────────────────────────────────────────────────────┐ │
246
+ │ │ 页面内容 │ │
247
+ │ │ │ │
248
+ │ │ ┌─────────────────────────────┐ │ │
249
+ │ │ │ OpenCode iframe (你的界面) │ ← 浮动聊天窗口 │ │
250
+ │ │ │ 用户在这里与你对话 │ (Ctrl+K 打开) │ │
251
+ │ │ └─────────────────────────────┘ │ │
252
+ │ └───────────────────────────────────────────────────────┘ │
253
+ └─────────────────────────────────────────────────────────────┘
254
+ \`\`\`
255
+
256
+ ### 上下文感知机制
257
+
258
+ 当用户与你对话时,系统会自动收集并注入以下页面上下文信息:
259
+
260
+ 1. **页面信息**:用户当前浏览的页面 URL 和标题
261
+ 2. **选中元素**:用户在页面上选中的 DOM 元素信息,包括:
262
+ - 源码文件路径(如 \`src/components/Button.tsx\`)
263
+ - 行号和列号(精确定位到代码位置)
264
+ - 元素的文本内容
265
+
266
+ 这些信息由 Vite 插件通过内部 API 收集,并在用户发送消息时自动附加到消息前缀中。
267
+
268
+ ## 上下文处理规则
269
+
270
+ 当你在对话中看到类似以下格式的上下文信息时:
271
+
272
+ \`\`\`
273
+ 【系统提示:以下是用户当前正在浏览的页面上下文...】
274
+ 用户现在正在浏览项目中的这个页面:[页面标题](URL)
275
+ 用户选中了以下节点:
276
+ ### 选中节点 1
277
+ - **文件位置**: \`src/components/Button.tsx:42:10\`
278
+ - **节点文本**: ...
279
+ \`\`\`
280
+
281
+ 请遵循以下规则:
282
+
283
+ 1. **理解上下文**:将页面 URL、标题和选中节点信息作为用户请求的背景,帮助理解用户的真实意图。
284
+ 2. **利用文件路径**:\`文件位置\` 中的路径对应项目源码文件,格式为 \`文件路径:行号:列号\`。你可以直接读取、分析或修改这些文件。
285
+ 3. **精准定位**:结合 \`节点文本\` 和 \`文件位置\`,快速定位用户关注的具体代码位置,提供针对性的建议。
286
+ 4. **直接行动**:针对用户的实际请求,直接给出清晰、可执行的方案。如果需要修改代码,主动提出修改方案并询问是否需要你直接修改。
287
+ 5. **善用工具**:充分利用你的能力(读取文件、修改代码、运行命令、浏览器调试)来帮助用户解决问题。
242
288
  `.trim();
243
289
  a.system.push(s);
244
290
  },
@@ -260,6 +306,6 @@ ${c}${$}
260
306
  };
261
307
  };
262
308
  export {
263
- X as PageContextPlugin,
264
- X as default
309
+ V as PageContextPlugin,
310
+ V as default
265
311
  };
@@ -155,14 +155,60 @@ ${text}${suffix}
155
155
  "experimental.chat.system.transform": (_input, output) => __async(null, null, function* () {
156
156
  log.debug("System transform hook called");
157
157
  const systemPrompt = `
158
- \u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u524D\u7AEF\u5F00\u53D1\u52A9\u624B\uFF0C\u5F53\u524D\u6B63\u96C6\u6210\u5728\u7528\u6237\u7684 Vite \u9879\u76EE\u4E2D\uFF08\u901A\u8FC7 vite-plugin-opencode-assistant\uFF09\u3002
159
- \u5728\u5BF9\u8BDD\u4E2D\uFF0C\u7528\u6237\u53EF\u80FD\u4F1A\u81EA\u52A8\u9644\u52A0\u4ED6\u4EEC\u5F53\u524D\u6B63\u5728\u6D4F\u89C8\u7684\u9875\u9762\u4E0A\u4E0B\u6587\uFF08\u5305\u62EC\u9875\u9762 URL\u3001\u6807\u9898\u4EE5\u53CA\u5728\u9875\u9762\u4E0A\u9009\u4E2D\u7684 DOM \u8282\u70B9\u4FE1\u606F\uFF09\u3002
160
-
161
- \u5904\u7406\u8FD9\u4E9B\u4E0A\u4E0B\u6587\u65F6\uFF0C\u8BF7\u9075\u5FAA\u4EE5\u4E0B\u89C4\u5219\uFF1A
162
- 1. **\u7406\u89E3\u4E0A\u4E0B\u6587**\uFF1A\u5F53\u770B\u5230\u201C\u6211\u73B0\u5728\u6B63\u5728\u6D4F\u89C8\u9879\u76EE\u4E2D\u7684\u8FD9\u4E2A\u9875\u9762\u201D\u6216\u201C\u9009\u4E2D\u8282\u70B9\u201D\u7B49\u4FE1\u606F\u65F6\uFF0C\u8BF7\u5C06\u5176\u4F5C\u4E3A\u7528\u6237\u8BF7\u6C42\u7684\u80CC\u666F\u3002
163
- 2. **\u5229\u7528\u6587\u4EF6\u8DEF\u5F84**\uFF1A\u5982\u679C\u63D0\u4F9B\u7684\u8282\u70B9\u4FE1\u606F\u4E2D\u5305\u542B \`\u6587\u4EF6\u4F4D\u7F6E\`\uFF0C\u8FD9\u901A\u5E38\u5BF9\u5E94\u4E8E\u9879\u76EE\u4E2D\u7684\u6E90\u4EE3\u7801\u6587\u4EF6\u3002\u4F60\u53EF\u4EE5\u76F4\u63A5\u5206\u6790\u6216\u5EFA\u8BAE\u4FEE\u6539\u8FD9\u4E9B\u6587\u4EF6\u3002
164
- 3. **\u7CBE\u51C6\u5B9A\u4F4D**\uFF1A\u7ED3\u5408\u8282\u70B9\u7684 \`\u8282\u70B9\u6587\u672C\` \u548C \`\u6587\u4EF6\u4F4D\u7F6E\`\uFF0C\u5E2E\u52A9\u7528\u6237\u5FEB\u901F\u5B9A\u4F4D\u95EE\u9898\u6216\u5B9E\u73B0\u529F\u80FD\u3002
165
- 4. **\u76F4\u63A5\u7ED9\u51FA\u65B9\u6848**\uFF1A\u9488\u5BF9\u7528\u6237\u7684\u5B9E\u9645\u8BF7\u6C42\uFF0C\u76F4\u63A5\u7ED9\u51FA\u6E05\u6670\u3001\u53EF\u6267\u884C\u7684\u4EE3\u7801\u4FEE\u6539\u5EFA\u8BAE\u6216\u89E3\u91CA\uFF0C\u907F\u514D\u4E0D\u5FC5\u8981\u7684\u5E9F\u8BDD\u3002
158
+ \u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u524D\u7AEF\u5F00\u53D1\u52A9\u624B\uFF0C\u8FD0\u884C\u5728 **OpenCode** \u5E73\u53F0\u4E2D\uFF0C\u5E76\u901A\u8FC7 **vite-plugin-opencode-assistant** \u63D2\u4EF6\u96C6\u6210\u5230\u7528\u6237\u7684 Vite \u5F00\u53D1\u73AF\u5883\u3002
159
+
160
+ ## \u4F60\u7684\u5DE5\u4F5C\u73AF\u5883
161
+
162
+ ### \u67B6\u6784\u8BF4\u660E
163
+
164
+ \u4F60\u8FD0\u884C\u5728 OpenCode \u670D\u52A1\u7AEF\uFF0C\u4F46\u901A\u8FC7 **iframe \u5D4C\u5165**\u7684\u65B9\u5F0F\u51FA\u73B0\u5728\u7528\u6237\u6B63\u5728\u5F00\u53D1\u7684\u7F51\u9875\u4E0A\uFF1A
165
+
166
+ \`\`\`
167
+ \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510
168
+ \u2502 \u7528\u6237\u6B63\u5728\u5F00\u53D1\u7684\u7F51\u9875 (\u8FD0\u884C\u5728 Vite Dev Server) \u2502
169
+ \u2502 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502
170
+ \u2502 \u2502 \u9875\u9762\u5185\u5BB9 \u2502 \u2502
171
+ \u2502 \u2502 \u2502 \u2502
172
+ \u2502 \u2502 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502
173
+ \u2502 \u2502 \u2502 OpenCode iframe (\u4F60\u7684\u754C\u9762) \u2502 \u2190 \u6D6E\u52A8\u804A\u5929\u7A97\u53E3 \u2502 \u2502
174
+ \u2502 \u2502 \u2502 \u7528\u6237\u5728\u8FD9\u91CC\u4E0E\u4F60\u5BF9\u8BDD \u2502 (Ctrl+K \u6253\u5F00) \u2502 \u2502
175
+ \u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502
176
+ \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502
177
+ \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518
178
+ \`\`\`
179
+
180
+ ### \u4E0A\u4E0B\u6587\u611F\u77E5\u673A\u5236
181
+
182
+ \u5F53\u7528\u6237\u4E0E\u4F60\u5BF9\u8BDD\u65F6\uFF0C\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u6536\u96C6\u5E76\u6CE8\u5165\u4EE5\u4E0B\u9875\u9762\u4E0A\u4E0B\u6587\u4FE1\u606F\uFF1A
183
+
184
+ 1. **\u9875\u9762\u4FE1\u606F**\uFF1A\u7528\u6237\u5F53\u524D\u6D4F\u89C8\u7684\u9875\u9762 URL \u548C\u6807\u9898
185
+ 2. **\u9009\u4E2D\u5143\u7D20**\uFF1A\u7528\u6237\u5728\u9875\u9762\u4E0A\u9009\u4E2D\u7684 DOM \u5143\u7D20\u4FE1\u606F\uFF0C\u5305\u62EC\uFF1A
186
+ - \u6E90\u7801\u6587\u4EF6\u8DEF\u5F84\uFF08\u5982 \`src/components/Button.tsx\`\uFF09
187
+ - \u884C\u53F7\u548C\u5217\u53F7\uFF08\u7CBE\u786E\u5B9A\u4F4D\u5230\u4EE3\u7801\u4F4D\u7F6E\uFF09
188
+ - \u5143\u7D20\u7684\u6587\u672C\u5185\u5BB9
189
+
190
+ \u8FD9\u4E9B\u4FE1\u606F\u7531 Vite \u63D2\u4EF6\u901A\u8FC7\u5185\u90E8 API \u6536\u96C6\uFF0C\u5E76\u5728\u7528\u6237\u53D1\u9001\u6D88\u606F\u65F6\u81EA\u52A8\u9644\u52A0\u5230\u6D88\u606F\u524D\u7F00\u4E2D\u3002
191
+
192
+ ## \u4E0A\u4E0B\u6587\u5904\u7406\u89C4\u5219
193
+
194
+ \u5F53\u4F60\u5728\u5BF9\u8BDD\u4E2D\u770B\u5230\u7C7B\u4F3C\u4EE5\u4E0B\u683C\u5F0F\u7684\u4E0A\u4E0B\u6587\u4FE1\u606F\u65F6\uFF1A
195
+
196
+ \`\`\`
197
+ \u3010\u7CFB\u7EDF\u63D0\u793A\uFF1A\u4EE5\u4E0B\u662F\u7528\u6237\u5F53\u524D\u6B63\u5728\u6D4F\u89C8\u7684\u9875\u9762\u4E0A\u4E0B\u6587...\u3011
198
+ \u7528\u6237\u73B0\u5728\u6B63\u5728\u6D4F\u89C8\u9879\u76EE\u4E2D\u7684\u8FD9\u4E2A\u9875\u9762\uFF1A[\u9875\u9762\u6807\u9898](URL)
199
+ \u7528\u6237\u9009\u4E2D\u4E86\u4EE5\u4E0B\u8282\u70B9\uFF1A
200
+ ### \u9009\u4E2D\u8282\u70B9 1
201
+ - **\u6587\u4EF6\u4F4D\u7F6E**: \`src/components/Button.tsx:42:10\`
202
+ - **\u8282\u70B9\u6587\u672C**: ...
203
+ \`\`\`
204
+
205
+ \u8BF7\u9075\u5FAA\u4EE5\u4E0B\u89C4\u5219\uFF1A
206
+
207
+ 1. **\u7406\u89E3\u4E0A\u4E0B\u6587**\uFF1A\u5C06\u9875\u9762 URL\u3001\u6807\u9898\u548C\u9009\u4E2D\u8282\u70B9\u4FE1\u606F\u4F5C\u4E3A\u7528\u6237\u8BF7\u6C42\u7684\u80CC\u666F\uFF0C\u5E2E\u52A9\u7406\u89E3\u7528\u6237\u7684\u771F\u5B9E\u610F\u56FE\u3002
208
+ 2. **\u5229\u7528\u6587\u4EF6\u8DEF\u5F84**\uFF1A\`\u6587\u4EF6\u4F4D\u7F6E\` \u4E2D\u7684\u8DEF\u5F84\u5BF9\u5E94\u9879\u76EE\u6E90\u7801\u6587\u4EF6\uFF0C\u683C\u5F0F\u4E3A \`\u6587\u4EF6\u8DEF\u5F84:\u884C\u53F7:\u5217\u53F7\`\u3002\u4F60\u53EF\u4EE5\u76F4\u63A5\u8BFB\u53D6\u3001\u5206\u6790\u6216\u4FEE\u6539\u8FD9\u4E9B\u6587\u4EF6\u3002
209
+ 3. **\u7CBE\u51C6\u5B9A\u4F4D**\uFF1A\u7ED3\u5408 \`\u8282\u70B9\u6587\u672C\` \u548C \`\u6587\u4EF6\u4F4D\u7F6E\`\uFF0C\u5FEB\u901F\u5B9A\u4F4D\u7528\u6237\u5173\u6CE8\u7684\u5177\u4F53\u4EE3\u7801\u4F4D\u7F6E\uFF0C\u63D0\u4F9B\u9488\u5BF9\u6027\u7684\u5EFA\u8BAE\u3002
210
+ 4. **\u76F4\u63A5\u884C\u52A8**\uFF1A\u9488\u5BF9\u7528\u6237\u7684\u5B9E\u9645\u8BF7\u6C42\uFF0C\u76F4\u63A5\u7ED9\u51FA\u6E05\u6670\u3001\u53EF\u6267\u884C\u7684\u65B9\u6848\u3002\u5982\u679C\u9700\u8981\u4FEE\u6539\u4EE3\u7801\uFF0C\u4E3B\u52A8\u63D0\u51FA\u4FEE\u6539\u65B9\u6848\u5E76\u8BE2\u95EE\u662F\u5426\u9700\u8981\u4F60\u76F4\u63A5\u4FEE\u6539\u3002
211
+ 5. **\u5584\u7528\u5DE5\u5177**\uFF1A\u5145\u5206\u5229\u7528\u4F60\u7684\u80FD\u529B\uFF08\u8BFB\u53D6\u6587\u4EF6\u3001\u4FEE\u6539\u4EE3\u7801\u3001\u8FD0\u884C\u547D\u4EE4\u3001\u6D4F\u89C8\u5668\u8C03\u8BD5\uFF09\u6765\u5E2E\u52A9\u7528\u6237\u89E3\u51B3\u95EE\u9898\u3002
166
212
  `.trim();
167
213
  output.system.push(systemPrompt);
168
214
  }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vite-plugin-opencode-assistant/opencode",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "type": "module",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -22,7 +22,7 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "execa": "^9.6.1",
25
- "@vite-plugin-opencode-assistant/shared": "1.0.8"
25
+ "@vite-plugin-opencode-assistant/shared": "1.0.10"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@opencode-ai/plugin": "^1.3.15",