Chrome系列7:ScriptCat云控系列需求汇总
需求描述
服务端
在cloud-server目录下使用java实现以下功能。
1. 支持mcp服务能力,支持动态注册,客户端连接时需要进行授权,仅能获取到授权的客户端能力。
2. 支持websocket协议,定义客户端和服务端的交互逻辑,支持对客户端的云控能力。
- 客户单具备脚本名称,标识key,目标网址,和执行相关脚本的能力,支持关键词能力。
3. 将websocket协议编写markdown文档到本地目录。
4. 输出lm-studio的mcp.json的url协议配置示例。
客户端
1. 支持类似headerEditor的能力,对CSP的请求响应进行修改,防止无法远程执行,注意规则需要在后台管理可以配置。
- 规则管理页面名称:CSP处理
- 可以增加一系列规则,规则包含 path,名称,描述,优先级,创建时间,更新时间等,注意 规则能力需要持久化。
2. 支持自动化脚本能力,目标实现打开目标页面,调用相关函数,实现数据的发送和接收,并且单次任务具备唯一性。
- 客户端能力管理页面名称:自动化规则脚本
- 支持一系列的自动脚本管理,其中标识key是唯一的,支持客户端的能力定义,包含名称,标识key,目标网址,执行的相关脚本
- 支持对脚本进行测试,并且自动化记录历史测试日志,可以对历史的json进行重复测试
3. 支持websocket连接服务端,支持服务端协议,客户端连接的时候需要填写信息,配置相关认证。
## 补充
其中测试部分或者执行代码部分请参考:async "ai-execute-code"(message: any, _sender: RuntimeMessageSender) {
const { tabId, code } = message;
if (!tabId) return { success: false, error: "No tabId" };
try {
const result = await chrome.scripting.executeScript({
target: { tabId },
world: "MAIN",
func: (codeToExecute: string) => {
try {
const fn = new Function(codeToExecute);
const result = fn();
return { success: true, result: String(result), type: typeof result };
} catch (error: any) {
return { success: false, error: String(error), errorType: error.constructor.name };
}
},
args: [code],
});
return result[0]?.result;
} catch (error: any) {
return { success: false, error: error.message };
}
}
消息的结果返回使用postMessage方式传递消息,传递消息的key是任务id。效果


对话能力如下:


坑点摸排
部分网站有CSP拦截
解决办法:类似HeaderEditor能力,对CSP进行拦截处理,但是注意是不要所有拦截,否则不安全。
服务端交互提示词
请制定一份详细的开发计划,用于在当前cloud-server目录下开发基于Java的服务端应用程序。该服务端需通过WebSocket协议与Chrome插件建立实时连接,以实现插件端的自动化脚本执行能力。计划应包含以下关键内容:
1. 项目规划与准备阶段:
- 明确项目架构设计,包括模块划分、组件交互关系
- 制定详细的技术选型方案,确定WebSocket实现方式(Spring WebSocket)
- 设计项目目录结构和开发规范
- 准备开发环境与依赖管理配置
2. 核心功能开发阶段:服务端可以管理一系列的客户端,并且客户端之间的信息需要隔离,鉴权需要账号和密码,第一阶段密码不需要鉴权。
- WebSocket服务实现:
* 设计并开发WebSocket连接管理机制
* 实现连接认证与授权流程
* 开发消息接收与发送处理逻辑
- 插件交互功能开发:
* 实现插件端auth信息接收与验证机制
* 开发脚本列表接收与存储功能
* 设计并实现主动调用插件端脚本的触发机制
* 开发脚本执行状态跟踪与反馈系统(执行中、成功、失败等状态)
3. 接口与协议设计阶段:
- 设计插件端向服务端提供脚本列表的接口规范
- 定义脚本相关配置信息的数据结构与JSON传输格式
- 制定WebSocket消息格式标准,包括请求类型、脚本标识、参数传递等要素
- 设计消息校验机制与数据传输安全策略
- 实现连接重连机制与连接稳定性保障方案
4. 质量保障与测试阶段:
- 开发高并发处理能力的优化方案
- 实现全面的错误处理与异常恢复机制
- 编写单元测试、集成测试用例
- 进行性能测试与压力测试
- 验证脚本执行状态反馈机制的准确性
5. 文档与交付准备阶段:
- 整理完整的服务端源代码及配置文件
- 编写详细的API文档,说明WebSocket消息格式及交互流程
- 开发简单的测试用例,验证服务端基本功能
- 准备部署说明与环境配置指南
6. 完成插件端的管理页面开发,实现与服务端的交互,标准采用上述标准
- 管理页面:云控管理连接
请提供上述开发计划的详细内容,包括各阶段的具体任务、时间估计、技术难点及解决方案,以便确认后执行开发工作。
现在服务端完成了,接下来请按照协议编写chrome plugin端的技术方案,请让我确认后再执行。
1. 请在plugin端的管理页面新增:云控管理。
2. 页面具备对web socket的链接配置,当前链接状态,定时心跳发送,鉴权配置等能力,可以查看web socket的通信日志。
3. 自动上报scriptList功能,1min主动更新上报一次,并且在当前页面可以对部分script进行不上报,在这里具备配置能力。
期望这个连接配置是在后台自动连接的,不期望刷新页面后就断开。现在看起来刷新页面就断开了,还有为什么脚本你上报配置是空的,暂无脚本,但是 Automation Scripts 有脚本呢
期望服务端的index.html管理页面可以具备获取当前有哪些用户连接,并且获取哪些可用脚本,然后可以发送数据到客户端进行执行的动作,达到执行云控的目的,请补充能力及相关代码。MCP服务端建设教程
## 需求
当前服务端已经具备和chrome plugin交互的能力,可以获取到plugin端的脚本,也可以去执行。现在期望服务端暴露server的mcp能力,通过Bearer 用户能够在mcp连接时将plugin端的脚本直接暴露成tools,在mcp触发调用时直接去执行将结果返回。
## 支持
### MCP技术实现
请使用MCP的Java Spring Boot SDK,官网:https://docs.spring.io/spring-ai/reference/api/mcp/mcp-server-boot-starter-docs.html
使用Streamable-HTTP MCP Servers模式。
### LM-Studio 连接示例
{
"mcpServers": {
"hf-mcp-server": {
"url": "https://huggingface.co/mcp",
"headers": {
"Authorization": "Bearer <YOUR_HF_TOKEN>"
}
}
}
}
## MCP代码参考
https://github.com/alexandredavi/mcp-webmvc-server
### 注意事项
1. 假设plugin端用户是boommanpro,则LM-Studio示例则是:Authorization Bearer boommanpro
2. 如果plugin端的脚本出现更新,也需要动态更新对应用户的tools
3. 不同用户的tools是隔离的,即每个用户通过Authorization获取自己的tools,调用自己的tools
4. 完成后请使用curl 对sse,message等mcp接口进行自测
因为mcp的信息较少,ai能够分析的结果并不好,经常出错分析不出根本原因,建议从协议层入手重新编写。
如果是demo,无鉴权情况,直接使用spring boot ai框架
License:
晋ICP备16009994号-1