@vite-plugin-opencode-assistant/opencode 1.0.32 → 1.0.34
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,5 +1,5 @@
|
|
|
1
|
-
import { c as
|
|
2
|
-
const e =
|
|
1
|
+
import { c as a } from "./logger.js";
|
|
2
|
+
const e = a("OpenCodePluginPageContext");
|
|
3
3
|
async function c(n) {
|
|
4
4
|
try {
|
|
5
5
|
const t = await fetch(n, {
|
|
@@ -15,7 +15,7 @@ const u = async () => {
|
|
|
15
15
|
e.info("PageContextPlugin loading...");
|
|
16
16
|
const n = process.env.OPENCODE_CONTEXT_API_URL;
|
|
17
17
|
return e.debug("Context API URL:", { contextApiUrl: n }), n ? (e.info("Plugin initialized successfully"), {
|
|
18
|
-
"experimental.chat.system.transform": async (t,
|
|
18
|
+
"experimental.chat.system.transform": async (t, i) => {
|
|
19
19
|
e.debug("System transform hook called");
|
|
20
20
|
const o = await c(n);
|
|
21
21
|
e.debug("Page context fetched", { pageContext: o });
|
|
@@ -28,7 +28,7 @@ const u = async () => {
|
|
|
28
28
|
- **页面 URL**: ${o.url || "未知"}
|
|
29
29
|
- **页面标题**: ${o.title || "未知"}
|
|
30
30
|
`);
|
|
31
|
-
const
|
|
31
|
+
const s = `
|
|
32
32
|
你是一个专业的前端开发助手,运行在 **OpenCode** 平台中,并通过 **vite-plugin-opencode-assistant** 插件集成到用户的 Vite 开发环境。
|
|
33
33
|
${r}
|
|
34
34
|
## 你的工作环境
|
|
@@ -57,11 +57,20 @@ ${r}
|
|
|
57
57
|
|
|
58
58
|
### 1. 定位节点位置(强制)
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
当用户选中了页面节点时,**在处理用户请求之前**,你必须先确认这些节点在项目中的位置。选中的节点信息包含以下字段:
|
|
61
61
|
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
62
|
+
- \`filePath\`: 节点对应的源文件路径(可能为空)
|
|
63
|
+
- \`line\` / \`column\`: 节点在源文件中的位置(可能为空)
|
|
64
|
+
- \`innerText\`: 节点的文本内容
|
|
65
|
+
- \`description\`: 节点描述(标签名+选择器)
|
|
66
|
+
|
|
67
|
+
**定位步骤(按优先级):**
|
|
68
|
+
|
|
69
|
+
1. **检查已有文件路径**:如果 \`filePath\` 存在,优先使用该路径直接定位文件
|
|
70
|
+
2. **使用 Chrome DevTools MCP**:如果 \`filePath\` 为空或需要更多信息,通过浏览器快照获取节点的 DOM 结构、样式、事件绑定等详细信息
|
|
71
|
+
3. **文件搜索辅助**:根据 \`innerText\` 或 \`description\` 在项目中搜索匹配的组件/元素
|
|
72
|
+
|
|
73
|
+
在明确知道节点位置后,再处理用户请求。
|
|
65
74
|
|
|
66
75
|
### 2. 理解上下文
|
|
67
76
|
|
|
@@ -87,7 +96,7 @@ ${r}
|
|
|
87
96
|
4. **HTTP 请求成功判断(强制)**
|
|
88
97
|
判断请求成功时,不要只看 HTTP 状态码!HTTP 状态码 200 并不代表业务逻辑成功。必须获取接口的详细响应内容,检查响应体中的业务状态码或错误信息。在确认请求成功之前,始终解析并检查响应体的完整内容
|
|
89
98
|
`.trim();
|
|
90
|
-
|
|
99
|
+
i.system.push(s);
|
|
91
100
|
}
|
|
92
101
|
}) : (e.warn("OPENCODE_CONTEXT_API_URL is not set, page context plugin will not work"), {});
|
|
93
102
|
};
|
|
@@ -115,11 +115,20 @@ ${currentPageSection}
|
|
|
115
115
|
|
|
116
116
|
### 1. \u5B9A\u4F4D\u8282\u70B9\u4F4D\u7F6E\uFF08\u5F3A\u5236\uFF09
|
|
117
117
|
|
|
118
|
-
\u5F53\u7528\u6237\u9009\u4E2D\u4E86\u9875\u9762\u8282\u70B9\u65F6\uFF0C**\u5728\u5904\u7406\u7528\u6237\u8BF7\u6C42\u4E4B\u524D**\uFF0C\u4F60\u5FC5\u987B\u5148\
|
|
118
|
+
\u5F53\u7528\u6237\u9009\u4E2D\u4E86\u9875\u9762\u8282\u70B9\u65F6\uFF0C**\u5728\u5904\u7406\u7528\u6237\u8BF7\u6C42\u4E4B\u524D**\uFF0C\u4F60\u5FC5\u987B\u5148\u786E\u8BA4\u8FD9\u4E9B\u8282\u70B9\u5728\u9879\u76EE\u4E2D\u7684\u4F4D\u7F6E\u3002\u9009\u4E2D\u7684\u8282\u70B9\u4FE1\u606F\u5305\u542B\u4EE5\u4E0B\u5B57\u6BB5\uFF1A
|
|
119
119
|
|
|
120
|
-
- \
|
|
121
|
-
- \
|
|
122
|
-
- \
|
|
120
|
+
- \`filePath\`: \u8282\u70B9\u5BF9\u5E94\u7684\u6E90\u6587\u4EF6\u8DEF\u5F84\uFF08\u53EF\u80FD\u4E3A\u7A7A\uFF09
|
|
121
|
+
- \`line\` / \`column\`: \u8282\u70B9\u5728\u6E90\u6587\u4EF6\u4E2D\u7684\u4F4D\u7F6E\uFF08\u53EF\u80FD\u4E3A\u7A7A\uFF09
|
|
122
|
+
- \`innerText\`: \u8282\u70B9\u7684\u6587\u672C\u5185\u5BB9
|
|
123
|
+
- \`description\`: \u8282\u70B9\u63CF\u8FF0\uFF08\u6807\u7B7E\u540D+\u9009\u62E9\u5668\uFF09
|
|
124
|
+
|
|
125
|
+
**\u5B9A\u4F4D\u6B65\u9AA4\uFF08\u6309\u4F18\u5148\u7EA7\uFF09\uFF1A**
|
|
126
|
+
|
|
127
|
+
1. **\u68C0\u67E5\u5DF2\u6709\u6587\u4EF6\u8DEF\u5F84**\uFF1A\u5982\u679C \`filePath\` \u5B58\u5728\uFF0C\u4F18\u5148\u4F7F\u7528\u8BE5\u8DEF\u5F84\u76F4\u63A5\u5B9A\u4F4D\u6587\u4EF6
|
|
128
|
+
2. **\u4F7F\u7528 Chrome DevTools MCP**\uFF1A\u5982\u679C \`filePath\` \u4E3A\u7A7A\u6216\u9700\u8981\u66F4\u591A\u4FE1\u606F\uFF0C\u901A\u8FC7\u6D4F\u89C8\u5668\u5FEB\u7167\u83B7\u53D6\u8282\u70B9\u7684 DOM \u7ED3\u6784\u3001\u6837\u5F0F\u3001\u4E8B\u4EF6\u7ED1\u5B9A\u7B49\u8BE6\u7EC6\u4FE1\u606F
|
|
129
|
+
3. **\u6587\u4EF6\u641C\u7D22\u8F85\u52A9**\uFF1A\u6839\u636E \`innerText\` \u6216 \`description\` \u5728\u9879\u76EE\u4E2D\u641C\u7D22\u5339\u914D\u7684\u7EC4\u4EF6/\u5143\u7D20
|
|
130
|
+
|
|
131
|
+
\u5728\u660E\u786E\u77E5\u9053\u8282\u70B9\u4F4D\u7F6E\u540E\uFF0C\u518D\u5904\u7406\u7528\u6237\u8BF7\u6C42\u3002
|
|
123
132
|
|
|
124
133
|
### 2. \u7406\u89E3\u4E0A\u4E0B\u6587
|
|
125
134
|
|
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.34",
|
|
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.34"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@opencode-ai/plugin": "^1.3.15",
|