@vite-plugin-opencode-assistant/opencode 1.0.50 → 1.0.51
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/es/plugins/page-context.js +32 -27
- package/lib/plugins/page-context.js +15 -12
- package/package.json +2 -2
|
@@ -1,36 +1,41 @@
|
|
|
1
|
-
import { c as
|
|
2
|
-
const e =
|
|
3
|
-
async function
|
|
1
|
+
import { c as s } from "./logger.js";
|
|
2
|
+
const e = s("OpenCodePluginPageContext");
|
|
3
|
+
async function a(o) {
|
|
4
4
|
try {
|
|
5
|
-
const
|
|
5
|
+
const n = await fetch(o, {
|
|
6
6
|
method: "GET",
|
|
7
7
|
headers: { "Content-Type": "application/json" }
|
|
8
8
|
});
|
|
9
|
-
return
|
|
10
|
-
} catch (
|
|
11
|
-
return e.debug("Error fetching page context", { error:
|
|
9
|
+
return n.ok ? await n.json() : (e.debug("Failed to fetch page context", { status: n.status }), null);
|
|
10
|
+
} catch (n) {
|
|
11
|
+
return e.debug("Error fetching page context", { error: n }), null;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
const
|
|
14
|
+
const l = async () => {
|
|
15
15
|
e.info("PageContextPlugin loading...");
|
|
16
|
-
const
|
|
17
|
-
return e.debug("Context API URL:", { contextApiUrl:
|
|
18
|
-
"experimental.chat.system.transform": async (
|
|
16
|
+
const o = process.env.OPENCODE_CONTEXT_API_URL;
|
|
17
|
+
return e.debug("Context API URL:", { contextApiUrl: o }), o ? (e.info("Plugin initialized successfully"), {
|
|
18
|
+
"experimental.chat.system.transform": async (n, r) => {
|
|
19
19
|
e.debug("System transform hook called");
|
|
20
|
-
const
|
|
21
|
-
e.debug("Page context fetched", { pageContext:
|
|
22
|
-
|
|
23
|
-
o && (r = `
|
|
24
|
-
## 用户当前浏览的页面
|
|
25
|
-
|
|
26
|
-
**这里的上下文为最高优先级,任何情况下都不能被覆盖**
|
|
27
|
-
|
|
28
|
-
- **页面 URL**: ${o.url || "未知"}
|
|
29
|
-
- **页面标题**: ${o.title || "未知"}
|
|
30
|
-
`);
|
|
31
|
-
const s = `
|
|
20
|
+
const t = await a(o);
|
|
21
|
+
e.debug("Page context fetched", { pageContext: t });
|
|
22
|
+
const i = `
|
|
32
23
|
你是一个专业的前端开发助手,运行在 **OpenCode** 平台中,并通过 **vite-plugin-opencode-assistant** 插件集成到用户的 Vite 开发环境。
|
|
33
|
-
|
|
24
|
+
|
|
25
|
+
## ⚠️ 重要:页面上下文优先级规则
|
|
26
|
+
|
|
27
|
+
**当用户在不同页面提问时,你必须优先根据用户当前浏览页面的上下文来理解问题,而不是依赖会话历史记录。**
|
|
28
|
+
|
|
29
|
+
用户可能在不同页面之间切换,每次提问都应该基于当前页面上下文:
|
|
30
|
+
- **页面 URL**: ${(t == null ? void 0 : t.url) || "未知"}
|
|
31
|
+
- **页面标题**: ${(t == null ? void 0 : t.title) || "未知"}
|
|
32
|
+
|
|
33
|
+
**理解问题的优先级顺序:**
|
|
34
|
+
1. **当前页面上下文**(最高优先级) - 根据用户当前所在页面的 URL 和标题理解问题背景
|
|
35
|
+
2. **用户选中的元素** - 如果用户选中了页面元素,这些元素信息是理解问题的关键
|
|
36
|
+
3. **用户当前输入** - 用户本次发送的具体问题内容
|
|
37
|
+
4. **会话历史**(最低优先级) - 仅作为辅助参考,不应优先于当前页面上下文
|
|
38
|
+
|
|
34
39
|
## 你的工作环境
|
|
35
40
|
|
|
36
41
|
### 架构说明
|
|
@@ -96,11 +101,11 @@ ${r}
|
|
|
96
101
|
4. **HTTP 请求成功判断(强制)**
|
|
97
102
|
判断请求成功时,不要只看 HTTP 状态码!HTTP 状态码 200 并不代表业务逻辑成功。必须获取接口的详细响应内容,检查响应体中的业务状态码或错误信息。在确认请求成功之前,始终解析并检查响应体的完整内容
|
|
98
103
|
`.trim();
|
|
99
|
-
|
|
104
|
+
r.system.push(i);
|
|
100
105
|
}
|
|
101
106
|
}) : (e.warn("OPENCODE_CONTEXT_API_URL is not set, page context plugin will not work"), {});
|
|
102
107
|
};
|
|
103
108
|
export {
|
|
104
|
-
|
|
105
|
-
|
|
109
|
+
l as PageContextPlugin,
|
|
110
|
+
l as default
|
|
106
111
|
};
|
|
@@ -75,20 +75,23 @@ const PageContextPlugin = () => __async(null, null, function* () {
|
|
|
75
75
|
log.debug("System transform hook called");
|
|
76
76
|
const pageContext = yield fetchPageContext(contextApiUrl);
|
|
77
77
|
log.debug("Page context fetched", { pageContext });
|
|
78
|
-
let currentPageSection = "";
|
|
79
|
-
if (pageContext) {
|
|
80
|
-
currentPageSection = `
|
|
81
|
-
## \u7528\u6237\u5F53\u524D\u6D4F\u89C8\u7684\u9875\u9762
|
|
82
|
-
|
|
83
|
-
**\u8FD9\u91CC\u7684\u4E0A\u4E0B\u6587\u4E3A\u6700\u9AD8\u4F18\u5148\u7EA7\uFF0C\u4EFB\u4F55\u60C5\u51B5\u4E0B\u90FD\u4E0D\u80FD\u88AB\u8986\u76D6**
|
|
84
|
-
|
|
85
|
-
- **\u9875\u9762 URL**: ${pageContext.url || "\u672A\u77E5"}
|
|
86
|
-
- **\u9875\u9762\u6807\u9898**: ${pageContext.title || "\u672A\u77E5"}
|
|
87
|
-
`;
|
|
88
|
-
}
|
|
89
78
|
const systemPrompt = `
|
|
90
79
|
\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
|
|
91
|
-
|
|
80
|
+
|
|
81
|
+
## \u26A0\uFE0F \u91CD\u8981\uFF1A\u9875\u9762\u4E0A\u4E0B\u6587\u4F18\u5148\u7EA7\u89C4\u5219
|
|
82
|
+
|
|
83
|
+
**\u5F53\u7528\u6237\u5728\u4E0D\u540C\u9875\u9762\u63D0\u95EE\u65F6\uFF0C\u4F60\u5FC5\u987B\u4F18\u5148\u6839\u636E\u7528\u6237\u5F53\u524D\u6D4F\u89C8\u9875\u9762\u7684\u4E0A\u4E0B\u6587\u6765\u7406\u89E3\u95EE\u9898\uFF0C\u800C\u4E0D\u662F\u4F9D\u8D56\u4F1A\u8BDD\u5386\u53F2\u8BB0\u5F55\u3002**
|
|
84
|
+
|
|
85
|
+
\u7528\u6237\u53EF\u80FD\u5728\u4E0D\u540C\u9875\u9762\u4E4B\u95F4\u5207\u6362\uFF0C\u6BCF\u6B21\u63D0\u95EE\u90FD\u5E94\u8BE5\u57FA\u4E8E\u5F53\u524D\u9875\u9762\u4E0A\u4E0B\u6587\uFF1A
|
|
86
|
+
- **\u9875\u9762 URL**: ${(pageContext == null ? void 0 : pageContext.url) || "\u672A\u77E5"}
|
|
87
|
+
- **\u9875\u9762\u6807\u9898**: ${(pageContext == null ? void 0 : pageContext.title) || "\u672A\u77E5"}
|
|
88
|
+
|
|
89
|
+
**\u7406\u89E3\u95EE\u9898\u7684\u4F18\u5148\u7EA7\u987A\u5E8F\uFF1A**
|
|
90
|
+
1. **\u5F53\u524D\u9875\u9762\u4E0A\u4E0B\u6587**\uFF08\u6700\u9AD8\u4F18\u5148\u7EA7\uFF09 - \u6839\u636E\u7528\u6237\u5F53\u524D\u6240\u5728\u9875\u9762\u7684 URL \u548C\u6807\u9898\u7406\u89E3\u95EE\u9898\u80CC\u666F
|
|
91
|
+
2. **\u7528\u6237\u9009\u4E2D\u7684\u5143\u7D20** - \u5982\u679C\u7528\u6237\u9009\u4E2D\u4E86\u9875\u9762\u5143\u7D20\uFF0C\u8FD9\u4E9B\u5143\u7D20\u4FE1\u606F\u662F\u7406\u89E3\u95EE\u9898\u7684\u5173\u952E
|
|
92
|
+
3. **\u7528\u6237\u5F53\u524D\u8F93\u5165** - \u7528\u6237\u672C\u6B21\u53D1\u9001\u7684\u5177\u4F53\u95EE\u9898\u5185\u5BB9
|
|
93
|
+
4. **\u4F1A\u8BDD\u5386\u53F2**\uFF08\u6700\u4F4E\u4F18\u5148\u7EA7\uFF09 - \u4EC5\u4F5C\u4E3A\u8F85\u52A9\u53C2\u8003\uFF0C\u4E0D\u5E94\u4F18\u5148\u4E8E\u5F53\u524D\u9875\u9762\u4E0A\u4E0B\u6587
|
|
94
|
+
|
|
92
95
|
## \u4F60\u7684\u5DE5\u4F5C\u73AF\u5883
|
|
93
96
|
|
|
94
97
|
### \u67B6\u6784\u8BF4\u660E
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vite-plugin-opencode-assistant/opencode",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.51",
|
|
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.
|
|
25
|
+
"@vite-plugin-opencode-assistant/shared": "1.0.51"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@opencode-ai/plugin": "^1.3.15",
|