8000 GitHub - jkxiongxin/openlink: OpenLink让网页版 AI直接访问你的本地文件系统和执行命令。 · GitHub
[go: up one dir, main page]

Skip to content
jkxiongxinPublic
forked from afumu/openlink

About

OpenLink让网页版 AI直接访问你的本地文件系统和执行命令。

Resources

Stars

8 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

OpenLink

⚠️ 学习研究项目,非生产用途

本项目是作者为研究底层 Agent 工作原理而创建的个人学习项目,代码结构和实现均以探索为目的,不适合用于生产环境。

目前实测效果并不理想:网页版 AI 对工具调用的支持参差不齐,稳定性和准确性均有较大局限,距离实用仍有差距。

OpenLink 通过浏览器扩展模拟用户操作来驱动网页 AI,并不是一个 API 接口,不适合作为日常 API 调用使用。请合理使用,勿滥用。

让网页版 AI(Gemini、AI Studio)直接访问你的本地文件系统和执行命令。

工作原理

AI 网页 → 输出 <tool> 指令 → Chrome 扩展拦截 → 本地 Go 服务执行 → 结果返回 AI

快速安装

第一步:安装本地服务

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/jkxiongxin/openlink/main/install.sh | sh

Windows(PowerShell)

irm https://raw.githubusercontent.com/jkxiongxin/openlink/main/install.ps1 | iex

安装完成后运行:

openlink

服务默认监听 http://127.0.0.1:39527,启动后会输出认证 URL。

第二步:安装 Chrome 扩展

Chrome Web Store 版本即将上线,目前请手动安装。

  1. 下载最新 Release 中的 openlink-extension.zip 并解压
  2. 打开 Chrome,访问 chrome://extensions/
  3. 开启右上角「开发者模式」
  4. 点击「加载已解压的扩展程序」,选择解压后的目录

第三步:连接扩展与服务

  1. 点击浏览器工具栏中的 OpenLink 图标
  2. 将终端输出的认证 URL 粘贴到「API 地址」输入框
  3. 点击保存

第四步:开始使用

访问 Gemini、AI Studio 或 LMArena / Arena,点击页面右下角的「🔗 初始化」按钮,AI 即可开始使用本地工具。

如果你要使用 Google Labs Flow 的图片 / 视频生成能力,则不需要点击「🔗 初始化」。Flow 通过 OpenLink 提供的 OpenAI 兼容接口下发任务,由浏览器扩展在已登录的 Flow 页面中代为执行。

如果你要使用浏览器网页作为 OpenAI 兼容的文本接口,也不需要点击「🔗 初始化」。保持对应网站的已登录页面打开,服务端会把 /v1/chat/completions 文本任务交给扩展在页面中提交并等待回答。Gemini 文本接口同时支持 gemini.google.com 和 aistudio.google.com 页面接单。


推荐平台

目前测试效果最佳的平台是 Google AI Studio

AI Studio 原生支持配置系统提示词(System Instructions),点击「🔗 初始化」后会自动将工具说明写入系统提示词,无需占用对话上下文,工具调用更稳定、更准确。

其他平台通过对话消息注入提示词,效果因模型而异。

支持的 AI 平台

平台 状态 备注
Google AI Studio ✅ 推荐,原生支持系统提示词
Google Gemini ✅
LMArena / Arena (arena.ai) ✅ 支持 /text/direct 和进入对话后的 /c/... 页面
ChatGPT (chatgpt.com) ✅ 支持工具卡片、图片任务和 Phase 1 浏览器文本接口
Claude (claude.ai) ✅ 新增 Phase 1 浏览器文本接口,建议先开 debugMode 验证选择器
DeepSeek (chat.deepseek.com) ✅ 支持工具卡片和 Phase 1 浏览器文本接口
Kimi (kimi.com / moonshot.cn) ✅ 新增 Phase 1 浏览器文本接口,建议先开 debugMode 验证选择器
Perplexity (perplexity.ai) ✅ 新增 Phase 1 浏览器文本接口,建议先开 debugMode 验证选择器
通义千问 / Qwen (chat.qwen.ai) ✅ 支持工具卡片、图片任务和 Phase 1 浏览器文本接口
豆包 / Doubao (doubao.com) ✅ 支持工具卡片和 Phase 1 浏览器文本接口
z.ai / GLM International (chat.z.ai) ✅ 新增 Phase 1 浏览器文本接口,建议先开 debugMode 验证选择器
Google Labs Flow (labs.google/fx) ✅ 支持图片 / 视频生成;通过 OpenAI 兼容接口调用;无需初始化

LMArena / Arena 目前通过对话消息注入提示词工作,兼容性和工具调用稳定性仍依赖具体模型与页面结构。

Flow 不是通过网页对话里的 <tool> 调用来工作的,而是由扩展在已打开的 Flow 页面里执行生成任务,所以不需要「初始化」步骤。

OpenAI 兼容浏览器接口

OpenLink 现在可以把一部分 OpenAI 兼容请求路由到已打开的浏览器网页:

  • GET /v1/models:返回媒体模型和浏览器文本模型
  • POST /v1/chat/completions:文本模型返回普通 chat completion;媒体模型保持原有图片 / 视频响应
  • POST /v1/images/generations:图片生成
  • POST /v1/images/edits:图片编辑 / 参考图生成

Phase 1 文本模型:

模型 ID 网站
gemini-web/gemini-2.5-pro Gemini
chatgpt-web/gpt-4o ChatGPT
claude-web/claude-sonnet-4-6 Claude
kimi-web/moonshot-v1-32k Kimi
perplexity-web/perplexity-web Perplexity
glm-intl-web/glm-4-plus z.ai / GLM International
qwen-web/qwen-plus Qwen
deepseek-web/deepseek-chat DeepSeek
doubao-web/doubao-seed-2.0 Doubao

文本调用示例:

curl http://127.0.0.1:39527/v1/chat/completions \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-web/deepseek-chat",
    "messages": [
      {
        "role": "user",
        "content": "用三句话解释 OpenLink 的浏览器文本接口"
      }
    ]
  }'

当前限制:

  • 需要先打开并登录目标网站页面,扩展会在该页面轮询任务。
  • 文本接口 Phase 1 只支持非流式响应;stream: true 会返回明确的暂不支持错误。
  • 文本任务使用最近一条用户消息作为主要提示词;图片引用的文本多模态输入还没有在所有文本网站上做完整适配。
  • 网页 DOM 变化可能影响提交按钮和回答提取,调试新站点时请先打开扩展的 debugMode。
  • 新增的 Claude / Kimi / Perplexity / z.ai 站点采用 DOM 选择器方式接入,第一次使用时建议在真实登录页面上做一次端到端冒烟验证。

Flow 使用说明

Flow 主要用于媒体生成,不用于本地工具调用。

前置条件

  1. 启动本地 OpenLink 服务
  2. 加载最新版浏览器扩展
  3. 打开并登录 Google Labs Flow
  4. 保持 Flow 页面处于打开状态

使用方式

Flow 不需要点击右下角的「🔗 初始化」按钮。

你可以直接通过 OpenLink 提供的 OpenAI 兼容接口发起生成请求:

  • POST /v1/images/generations
  • POST /v1/chat/completions

其中:

  • labs-google-fx / labs-google-fx-image 用于图片生成
  • labs-google-fx-video / labs-google-fx-veo 用于纯文本视频生成
  • labs-google-fx-video-reference / labs-google-fx-veo-reference 用于参考图视频生成
  • labs-google-fx-video-start-end / labs-google-fx-veo-start-end 用于首尾帧视频生成

图片生成示例

curl http://127.0.0.1:39527/v1/images/generations \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "labs-google-fx",
    "prompt": "一只戴墨镜的橘猫,电影感,海报风格"
  }'

视频生成示例

curl http://127.0.0.1:39527/v1/chat/completions \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "labs-google-fx-video",
    "messages": [
      {
        "role": "user",
        "content": "一只海龟飞出海面,电影感镜头"
      }
    ]
  }'

参考图 / 首尾帧

Flow 也支持基于图片生成:

  • 图片生成时可传 image / images / reference_images
  • 视频生成时可在 chat/completions 的用户消息中传 image_url
  • 参考图视频请使用 labs-google-fx-video-reference
  • 首尾帧视频请使用 labs-google-fx-video-start-end
  • 首尾帧模式会取前 2 张参考图作为首帧和尾帧

生成完成后,媒体文件会保存到当前工作目录下的 .openlink/generated/,接口响应会返回 OpenLink 代理后的访问地址。


可用工具

工具 说明
exec_cmd 执行 Shell 命令
list_dir 列出目录内容
read_file 读取文件内容(支持分页)
write_file 写入文件内容(支持追加/覆盖)
glob 按文件名模式搜索文件
grep 正则搜索文件内容
edit 精确替换文件中的字符串
web_fetch 获取网页内容
question 向用户提问并等待回答
skill 加载自定义 Skill
todo_write 写入待办事项

输入框快捷补全

在任意支持的 AI 平台输入框中,OpenLink 提供两种快捷触发:

触发方式 效果
输入 / 弹出当前项目所有 Skills 列表,选择后自动插入工具调用 XML
输入 @ 弹出工作目录文件路径补全列表,选择后插入文件路径

操作方式:

  • ↑ / ↓ 键盘导航
  • Enter 确认选择
  • Escape 或点击外部关闭

Skills 扩展

Skills 是放在本地的 Markdown 文件,AI 可以按需加载,用于扩展特定领域的能力(如部署流程、代码规范、项目约定等)。

Skills 目录(按优先级)

OpenLink 会依次扫描以下目录,同名 Skill 以先找到的为准:

<工作目录>/.skills/
<工作目录>/.openlink/skills/
<工作目录>/.agent/skills/
<工作目录>/.claude/skills/
~/.openlink/skills/
~/.agent/skills/
~/.claude/skills/

创建 Skill

在任意 Skills 目录下创建子目录,并在其中放置 SKILL.md:

.skills/
└── deploy/
    └── SKILL.md

SKILL.md 格式:

---
name: deploy
description: 项目部署流程
---

## 部署步骤
...

AI 通过 skill 工具加载:

<tool name="skill">
  <parameter name="skill">deploy</parameter>
</tool>

安全机制

  • 沙箱隔离:所有文件操作限制在指定工作目录内
  • 危险命令拦截:rm -rf、sudo、curl 等命令被屏蔽
  • 超时控制:命令执行默认 60 秒超时

命令行参数

openlink [选项]

选项:
  -dir string    工作目录(默认:当前目录)
  -port int      监听端口(默认:39527)
  -timeout int   命令超时秒数(默认:60)

从源码构建

详见 docs/development.md


问题反馈

提交 Issue


群交流

加微信:afumudev

备注:openlink

致谢

本项目在开发过程中参考了以下优秀的开源项目:

感谢这些项目的作者和贡献者。


免责声明

本项目仅供学习和研究使用,严禁用于任何商业用途。

About

OpenLink让网页版 AI直接访问你的本地文件系统和执行命令。

Resources

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

0