feat: release v0.89.0 and rename Proxycast to Lime

This commit is contained in:
coso
2026-03-17 07:16:33 +08:00
parent f617fc4bb7
commit d15d9aa65d
731 changed files with 13559 additions and 10612 deletions
+1 -1
View File
@@ -47,4 +47,4 @@ jobs:
- name: Run OpenClaw install regression tests
shell: pwsh
run: cargo test -p proxycast-core openclaw_install --manifest-path "src-tauri/Cargo.toml"
run: cargo test -p lime-core openclaw_install --manifest-path "src-tauri/Cargo.toml"
+7 -7
View File
@@ -125,7 +125,7 @@ jobs:
fi
{
echo "RELEASE_BODY<<RELEASE_BODY_EOF"
echo "## ProxyCast ${TAG}"
echo "## Lime ${TAG}"
echo ""
echo "### Changes"
echo "${CHANGELOG}"
@@ -177,7 +177,7 @@ jobs:
tauriScript: npx tauri
projectPath: src-tauri
tagName: ${{ github.event.inputs.version || github.ref_name }}
releaseName: "ProxyCast ${{ github.event.inputs.version || github.ref_name }}"
releaseName: "Lime ${{ github.event.inputs.version || github.ref_name }}"
releaseBody: ${{ env.RELEASE_BODY }}
releaseDraft: false
prerelease: false
@@ -200,7 +200,7 @@ jobs:
tauriScript: npx tauri
projectPath: src-tauri
tagName: ${{ github.event.inputs.version || github.ref_name }}
releaseName: "ProxyCast ${{ github.event.inputs.version || github.ref_name }}"
releaseName: "Lime ${{ github.event.inputs.version || github.ref_name }}"
releaseBody: ${{ env.RELEASE_BODY }}
releaseDraft: false
prerelease: false
@@ -225,7 +225,7 @@ jobs:
tauriScript: npx tauri
projectPath: src-tauri
tagName: ${{ github.event.inputs.version || github.ref_name }}
releaseName: "ProxyCast ${{ github.event.inputs.version || github.ref_name }}"
releaseName: "Lime ${{ github.event.inputs.version || github.ref_name }}"
releaseBody: ${{ env.RELEASE_BODY }}
releaseDraft: false
prerelease: false
@@ -260,7 +260,7 @@ jobs:
tauriScript: npx tauri
projectPath: src-tauri
tagName: ${{ github.event.inputs.version || github.ref_name }}
releaseName: "ProxyCast ${{ github.event.inputs.version || github.ref_name }}"
releaseName: "Lime ${{ github.event.inputs.version || github.ref_name }}"
releaseBody: ${{ env.RELEASE_BODY }}
releaseDraft: false
prerelease: false
@@ -289,7 +289,7 @@ jobs:
tauriScript: npx tauri
projectPath: src-tauri
tagName: ${{ github.event.inputs.version || github.ref_name }}
releaseName: "ProxyCast ${{ github.event.inputs.version || github.ref_name }}"
releaseName: "Lime ${{ github.event.inputs.version || github.ref_name }}"
releaseBody: ${{ env.RELEASE_BODY }}
releaseDraft: false
prerelease: false
@@ -312,7 +312,7 @@ jobs:
tauriScript: npx tauri
projectPath: src-tauri
tagName: ${{ github.event.inputs.version || github.ref_name }}
releaseName: "ProxyCast ${{ github.event.inputs.version || github.ref_name }}"
releaseName: "Lime ${{ github.event.inputs.version || github.ref_name }}"
releaseBody: ${{ env.RELEASE_BODY }}
releaseDraft: false
prerelease: false
+16 -16
View File
@@ -34,14 +34,14 @@ jobs:
# 下载 ARM64 DMG
echo "下载 ARM64 DMG..."
curl -sL -o arm64.dmg "https://github.com/aiclientproxy/proxycast/releases/download/v${VERSION}/proxycast_${VERSION}_aarch64.dmg"
curl -sL -o arm64.dmg "https://github.com/aiclientproxy/lime/releases/download/v${VERSION}/lime_${VERSION}_aarch64.dmg"
ARM64_SHA=$(shasum -a 256 arm64.dmg | awk '{print $1}')
echo "ARM64 SHA256: $ARM64_SHA"
echo "arm64_sha=$ARM64_SHA" >> $GITHUB_OUTPUT
# 下载 x64 DMG
echo "下载 x64 DMG..."
curl -sL -o x64.dmg "https://github.com/aiclientproxy/proxycast/releases/download/v${VERSION}/proxycast_${VERSION}_x64.dmg"
curl -sL -o x64.dmg "https://github.com/aiclientproxy/lime/releases/download/v${VERSION}/lime_${VERSION}_x64.dmg"
X64_SHA=$(shasum -a 256 x64.dmg | awk '{print $1}')
echo "x64 SHA256: $X64_SHA"
echo "x64_sha=$X64_SHA" >> $GITHUB_OUTPUT
@@ -59,37 +59,37 @@ jobs:
ARM64_SHA="${{ steps.sha.outputs.arm64_sha }}"
X64_SHA="${{ steps.sha.outputs.x64_sha }}"
cat > homebrew-tap/Casks/proxycast.rb << EOF
cask "proxycast" do
cat > homebrew-tap/Casks/lime.rb << EOF
cask "lime" do
version "$VERSION"
on_arm do
sha256 "$ARM64_SHA"
url "https://github.com/aiclientproxy/proxycast/releases/download/v#{version}/proxycast_#{version}_aarch64.dmg"
url "https://github.com/aiclientproxy/lime/releases/download/v#{version}/lime_#{version}_aarch64.dmg"
end
on_intel do
sha256 "$X64_SHA"
url "https://github.com/aiclientproxy/proxycast/releases/download/v#{version}/proxycast_#{version}_x64.dmg"
url "https://github.com/aiclientproxy/lime/releases/download/v#{version}/lime_#{version}_x64.dmg"
end
name "ProxyCast"
name "Lime"
desc "AI API 代理桌面应用 - 将 AI 客户端凭证转换为 OpenAI 兼容接口"
homepage "https://github.com/aiclientproxy/proxycast"
homepage "https://github.com/aiclientproxy/lime"
livecheck do
url :url
strategy :github_latest
end
app "ProxyCast.app"
app "Lime.app"
zap trash: [
"~/.config/com.proxycast.app",
"~/Library/Application Support/com.proxycast.app",
"~/Library/Caches/com.proxycast.app",
"~/Library/Preferences/com.proxycast.app.plist",
"~/Library/Saved Application State/com.proxycast.app.savedState",
"~/.config/com.lime.app",
"~/Library/Application Support/com.lime.app",
"~/Library/Caches/com.lime.app",
"~/Library/Preferences/com.lime.app.plist",
"~/Library/Saved Application State/com.lime.app.savedState",
]
end
EOF
@@ -99,6 +99,6 @@ jobs:
cd homebrew-tap
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add Casks/proxycast.rb
git commit -m "chore: bump proxycast to ${{ steps.version.outputs.version }}"
git add Casks/lime.rb
git commit -m "chore: bump lime to ${{ steps.version.outputs.version }}"
git push
+1 -1
View File
@@ -32,7 +32,7 @@ docs/prd/
# Internal roadmap&gongzonghao (private)
docs/roadmap/
docs/gongzonghao/
docs/bussniss/
# Issues tracking (internal use only)
.issues/
+2 -2
View File
@@ -153,14 +153,14 @@ Kiro 凭证采用完全独立的副本策略:
### 修改凭证管理
- 凭证文件存储在应用数据目录下的 `proxycast/credentials/`;`~/Library/Application Support/proxycast/credentials/` 仅作为 macOS 示例,Windows 请使用对应的应用数据目录
- 凭证文件存储在应用数据目录下的 `lime/credentials/`;`~/Library/Application Support/lime/credentials/` 仅作为 macOS 示例,Windows 请使用对应的应用数据目录
- 数据库存储凭证元数据和状态
- Token 缓存在数据库中,避免频繁读取文件
### 调试技巧
- 日志输出使用 `tracing` 宏
- API 请求调试文件保存在应用日志目录;`~/.proxycast/logs/` 仅作为 macOS 示例,实现与排障时不要写死该路径
- API 请求调试文件保存在应用日志目录;`~/.lime/logs/` 仅作为 macOS 示例,实现与排障时不要写死该路径
- 使用 `debug_kiro_credentials` 命令调试凭证加载
## 文档维护
+9 -9
View File
@@ -1,6 +1,6 @@
<div align="center">
# ProxyCast
# Lime
**以创作为中心的本地优先 AI Agent 交互工作台**
@@ -12,7 +12,7 @@
## 这是什么
ProxyCast 是一个基于 Tauri 的桌面应用,面向创作者、内容团队与轻知识工作者。它把 Workspace、Agent、Skills、MCP、Claw 渠道和 Artifact 交付整合到同一个桌面环境里,让工作从输入需求直接走向可沉淀、可复用、可继续执行的结果。
Lime 是一个基于 Tauri 的桌面应用,面向创作者、内容团队与轻知识工作者。它把 Workspace、Agent、Skills、MCP、Claw 渠道和 Artifact 交付整合到同一个桌面环境里,让工作从输入需求直接走向可沉淀、可复用、可继续执行的结果。
你可以在一个地方完成:
@@ -34,13 +34,13 @@ ProxyCast 是一个基于 Tauri 的桌面应用,面向创作者、内容团队
- Skills 封装 prompt、references、scripts、assets 和调用规则
- Skills 既定义如何交互,也定义任务如何推进
- 它们是 ProxyCast 中经验复用、流程复用和领域方法沉淀的核心单元
- 它们是 Lime 中经验复用、流程复用和领域方法沉淀的核心单元
### 3. MCP 是标准能力层
- 基于 MCP 接入 tools、resources、prompts 和工作边界
- 让浏览器、文件、终端和外部服务成为 Agent 的标准化能力网络
- 让 ProxyCast 的能力扩展建立在开放标准之上
- 让 Lime 的能力扩展建立在开放标准之上
### 4. Claw 渠道是异步协作入口
@@ -101,7 +101,7 @@ ProxyCast 是一个基于 Tauri 的桌面应用,面向创作者、内容团队
## 如何工作
ProxyCast 的核心工作方式是:
Lime 的核心工作方式是:
1. 在 Workspace 内组织项目、素材、记忆和风格
2. 用 Skills 定义经验交互与流程推进
@@ -119,15 +119,15 @@ ProxyCast 的核心工作方式是:
```bash
brew tap aiclientproxy/tap
brew install --cask proxycast
brew install --cask lime
```
#### 手动下载
从 [Releases](https://github.com/aiclientproxy/proxycast/releases) 下载对应平台安装包。
从 [Releases](https://github.com/aiclientproxy/lime/releases) 下载对应平台安装包。
- Windows 用户默认优先下载 `ProxyCast_*_x64-online-setup.exe`(NSIS 在线安装器,体积更小)
- 如果处于离线、内网或受限网络环境,请改用 `ProxyCast_*_x64-offline-setup.exe`
- Windows 用户默认优先下载 `Lime_*_x64-online-setup.exe`(NSIS 在线安装器,体积更小)
- 如果处于离线、内网或受限网络环境,请改用 `Lime_*_x64-offline-setup.exe`
- 如被 SmartScreen 拦截,属于未签名或签名信誉不足的 Windows 常见提示,不代表安装包必然损坏
---
+14 -35
View File
@@ -1,52 +1,31 @@
## ProxyCast v0.88.0
## Lime v0.89.0
### ✨ 新功能
### ✨ 主要更新
- **自动化任务中心**:新增 `automation` 命令、服务、DAO 与设置页,支持定时任务、计划预览、健康检查、运行历史,以及 `Agent 对话任务 / 浏览器会话任务` 两种执行形态
- **浏览器资料与环境预设**:新增 Browser Profile / Browser Environment Preset 管理,支持托管浏览器与附着当前 Chrome 两种资料模式,并可直接复用于浏览器运行时
- **浏览器现有会话接管**:补齐 existing session attach、页签切换、桥接状态同步与 Browser Runtime 工作区协同链路
- **Agent Chat 决策与空状态升级**:新增 `DecisionPanel`、空状态 Hero / Quick Actions、A2UI 预览卡、线程分组与消息轮次分组,强化新任务入口与浏览器协助预热
- **品牌正式更名为 Lime**:主程序名称、仓库链接、安装包命名、Tauri `productName` / `identifier`、深链 scheme、浏览器桥扩展目录与发布文案已统一从 `Proxycast` 切换到 `Lime`
- **版本事实源继续收口**:统一 `package.json`、Cargo workspace / package、两份 Tauri 配置与 `RELEASE_NOTES.md` 的版本入口,发布流程继续只读取这一套版本源
- **运行时命名继续收口**:Tool Calling、Web Search、Durable Memory、workspace sandbox、真实测试与浏览器桥接等运行时环境变量统一以 `LIME_*` / `__LIME_*` 为现役事实源,旧 `PROXYCAST_*` 仅保留兼容读取
- **生态入口同步完成**:README、插件升级入口、About 页、扩展说明与下载地址等对外入口统一使用 `Lime`
### 🔧 优化与重构
### ⚠️ 兼容性说明
- **执行系统收敛**:移除旧 `batch` 页面/API 与 `heartbeat` 命令/设置入口,统一收口到 `automation` 与 `execution tracker`
- **OpenClaw 工作台重做**:重排安装、配置、运行、Dashboard 与进度页,补强 Windows 环境检测、修复引导与诊断复制
- **Settings v2 持续整理**:合并媒体服务设置,重构 Chrome Relay、Execution Tracker、About、Appearance 等页面,统一导航与信息架构
- **资源与创作工作台更新**:重构资源页、图像生成、视频画布、项目选择器与多处内容创作界面,提升工作区一致性
### 🐛 修复
- **插件兼容与更新提示补强**:插件管理页新增 Windows 主程序升级入口和最低版本提示,降低插件与主程序版本错配的排障成本
- **Browser Runtime / DevBridge 稳定性提升**:补齐浏览器会话启动参数、流诊断、桥接 mock 与状态同步,减少运行时偏差
- **Provider 配置读写修复**:完善 API Key Provider 的 `api_version`、`project` 等配置项读写与表单校验
- **Windows 启动与安装诊断改进**:补充安装说明、常见问题与构建文档,降低受限网络与依赖缺失场景下的排障摩擦
### ⚠️ 兼容性调整
- 旧 `Batch` / `Heartbeat` 相关前端入口与后端命令已下线;既有流程请迁移到新的 `Automation` 设置页与统一执行记录
- 旧 `proxycast` 数据目录、数据库文件与历史路径仍保留启动迁移兼容,现有数据会继续被识别并迁移到 `lime` 目录
- 后续对外暴露的现役命名统一使用 `Lime`;旧 `Proxycast` 命名仅作为兼容层保留,不再继续扩展
### 🧪 测试
- 新增 Automation、Browser Profile / Environment Preset、Existing Session Attach、Agent Chat 分组与插件版本提示等测试覆盖
- 补充 Browser Runtime、OpenClaw、Execution Tracker、Chrome Relay 与多处设置页交互测试
- 发布前已执行:`cargo fmt --all`、`cargo test`、`cargo clippy`、`npm run lint`
- 发布前执行:`cargo test`、`cargo fmt --all`、`cargo clippy`、`npm run lint`
### 📝 文档
- 更新 README、架构概览、安装、故障排查、构建与运维文档
- 补充 NextBrowser 相关研究资料与浏览器自动化设计记录
### 🛠️ 开发体验
- **Windows 发布流程增强**:Release Workflow 现同时产出在线 / 离线两个 Windows 安装包
- **版本源保持一致**:统一 `package.json`、Cargo workspace、两份 Tauri 配置与 `RELEASE_NOTES.md` 的发布版本入口
- 更新发布说明、仓库链接、安装与分发文案,统一使用 `Lime`
### 📦 Windows 下载说明
- `ProxyCast_*_x64-online-setup.exe`:默认推荐,体积更小,安装时按需下载 WebView2
- `ProxyCast_*_x64-offline-setup.exe`:适用于离线、内网或受限网络环境
- `Lime_*_x64-online-setup.exe`:默认推荐,体积更小,安装时按需下载 WebView2
- `Lime_*_x64-offline-setup.exe`:适用于离线、内网或受限网络环境
- 如果在线安装失败,请改用离线安装包
---
**完整变更**: v0.87.0...v0.88.0
**完整变更**: v0.88.0...v0.89.0
+3 -2
View File
@@ -2,7 +2,7 @@
## 目录定位
`docs/` 是 ProxyCast 文档中心,分为两类受众:
`docs/` 是 Lime 文档中心,分为两类受众:
- 普通创作者:优先阅读 `content/` 下的入门与用户指南
- 开发者与维护者:阅读 `aiprompts/`、`develop/`、`tests/` 等工程文档
@@ -13,6 +13,7 @@
- `content/`:对外文档站正文(产品介绍、用户指南、进阶能力)
- `aiprompts/`:模块级工程文档(前后端组件、服务、命令、数据层)
- `bussniss/`:商务合作与代理运营方案
- `develop/`:开发流程与协作规范
- `plugins/`:插件与扩展相关文档
- `tests/`:测试策略与用例文档
@@ -24,7 +25,7 @@
- `develop/execution-tracker-p0-acceptance-report.md`:统一执行追踪 P0 验收报告
- `develop/execution-tracker-p1-p2-roadmap.md`:统一执行追踪后续路线(P1/P2)
- `develop/scheduler-task-governance-p1.md`:调度任务治理 P1(连续失败、自动停用、冷却恢复)
- `roadmap/proxycast-skills-standardization-roadmap.md`:Skills 标准化与产品化路线图
- `roadmap/lime-skills-standardization-roadmap.md`:Skills 标准化与产品化路线图
- `ops.md`:运维与发布说明
- `app.config.ts` / `nuxt.config.ts` / `package.json`:文档站配置
+2 -2
View File
@@ -1,8 +1,8 @@
# ProxyCast 技术规格文档
# Lime 技术规格文档
## 项目概述
ProxyCast 是一个桌面端 AI API 代理工具,将各种大模型客户端 API(Gemini CLI、Qwen Code、Kiro Claude 等)统一转换为本地 OpenAI 兼容接口。
Lime 是一个桌面端 AI API 代理工具,将各种大模型客户端 API(Gemini CLI、Qwen Code、Kiro Claude 等)统一转换为本地 OpenAI 兼容接口。
## 技术栈
+3 -3
View File
@@ -2,7 +2,7 @@
## 集成状态 ✅
ProxyCast 已完整集成 aster-rust 框架,包括凭证池桥接。
Lime 已完整集成 aster-rust 框架,包括凭证池桥接。
**后端模块** (`src-tauri/src/agent/`):
@@ -49,7 +49,7 @@ ProxyCast 已完整集成 aster-rust 框架,包括凭证池桥接。
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────────────────┐ │
│ │ ProxyCast 凭证池 │ │
│ │ Lime 凭证池 │ │
│ │ - ProviderPoolService │ │
│ │ - ApiKeyProviderService │ │
│ └─────────────────────────────────────┘ │
@@ -69,7 +69,7 @@ ProxyCast 已完整集成 aster-rust 框架,包括凭证池桥接。
### 支持的凭证类型映射
| ProxyCast 凭证类型 | Aster Provider |
| Lime 凭证类型 | Aster Provider |
| -------------------------- | -------------- |
| OpenAIKey | openai |
| ClaudeKey / AnthropicKey | anthropic |
+1 -1
View File
@@ -112,7 +112,7 @@ src-tauri/src/converter/
```rust
// Antigravity 请求格式 (参考 CLIProxyAPI)
{
"project": "proxycast",
"project": "lime",
"request": {
"contents": [...],
"systemInstruction": {...},
+3 -3
View File
@@ -1,8 +1,8 @@
# ProxyCast UI 视觉语言
# Lime UI 视觉语言
## 适用范围
本规范适用于 ProxyCast 全部前端界面,包括:
本规范适用于 Lime 全部前端界面,包括:
- 设置页
- 功能工作台
@@ -14,7 +14,7 @@
## 视觉目标
ProxyCast 的整体界面应当接近以下气质:
Lime 的整体界面应当接近以下气质:
- 轻盈、清晰、专业,而不是炫技
- 信息优先,装饰只服务层级
+1 -1
View File
@@ -190,7 +190,7 @@ npm run governance:legacy-report
只有当新增依赖被封住、调用量清零、旁路迁完,才允许删旧路径。
## Proxycast 中的典型判断方式
## Lime 中的典型判断方式
以聊天系统为例,遇到新旧并存时,必须同时问这几个问题:
+4 -4
View File
@@ -1,8 +1,8 @@
# ProxyCast 项目架构概览
# Lime 项目架构概览
## 概述
ProxyCast 是一个以创作为中心的本地优先 AI Agent 交互工作台,基于 Tauri 桌面应用构建,面向创作者、内容团队与轻知识工作者。系统由 Workspace、Skills 编排层、MCP 标准能力层、Claw 渠道层、Artifact 交付层与多模型接入能力共同组成。
Lime 是一个以创作为中心的本地优先 AI Agent 交互工作台,基于 Tauri 桌面应用构建,面向创作者、内容团队与轻知识工作者。系统由 Workspace、Skills 编排层、MCP 标准能力层、Claw 渠道层、Artifact 交付层与多模型接入能力共同组成。
可以把它理解为三层结构:
@@ -20,12 +20,12 @@ ProxyCast 是一个以创作为中心的本地优先 AI Agent 交互工作台,
- **Tracing**:时间线、步骤与调用轨迹可观测
- **MCP**:tools / resources / prompts / roots 的标准能力接入
在 ProxyCast 中,Skills 处于比 MCP 更贴近产品的一层:它不是底层原语,而是将领域经验、交互方式和执行流程打包后的编排单元。
在 Lime 中,Skills 处于比 MCP 更贴近产品的一层:它不是底层原语,而是将领域经验、交互方式和执行流程打包后的编排单元。
## 项目结构
```
proxycast/
lime/
├── src/ # React 前端
│ ├── components/ # UI 组件
│ ├── pages/ # 页面组件
+3 -3
View File
@@ -2,7 +2,7 @@
## 目的
本文件用于指导 AI Agent 在 ProxyCast 中继续进行浏览器端 E2E 测试,特别适用于以下场景:
本文件用于指导 AI Agent 在 Lime 中继续进行浏览器端 E2E 测试,特别适用于以下场景:
- 用户说“继续测试”“继续复现”“继续用 Playwright MCP 验证”
- 需要复用当前浏览器标签页和已有页面状态
@@ -79,7 +79,7 @@ npm run bridge:health -- --timeout-ms 120000
优先顺序:
1. 调用 `browser_tabs` 查看当前标签页
2. 如果已有 `ProxyCast` 标签页,先查看当前 URL、标题、页面状态
2. 如果已有 `Lime` 标签页,先查看当前 URL、标题、页面状态
3. 如果页面已漂移到旧状态,直接重新导航到 `http://127.0.0.1:1420/`
建议:
@@ -113,7 +113,7 @@ npm run bridge:health -- --timeout-ms 120000
- 页面中明确可见的标题文本
- `browser_snapshot` 返回的 ref 作为精确交互目标
## ProxyCast 推荐 E2E 主路径
## Lime 推荐 E2E 主路径
### 首页基础验证
+1 -1
View File
@@ -2,7 +2,7 @@
## 概述
插件系统支持扩展 ProxyCast 功能,包含声明式 UI 系统。
插件系统支持扩展 Lime 功能,包含声明式 UI 系统。
## 目录结构
+11 -11
View File
@@ -2,7 +2,7 @@
## 概述
Workspace 是 ProxyCast 应用层的概念,用于组织和管理 AI Agent 的工作上下文。它是对 Aster 框架 `Session.working_dir` 的命名和配置包装,不修改 Aster 框架本身。
Workspace 是 Lime 应用层的概念,用于组织和管理 AI Agent 的工作上下文。它是对 Aster 框架 `Session.working_dir` 的命名和配置包装,不修改 Aster 框架本身。
## 设计背景
@@ -29,7 +29,7 @@ Workspace 是 ProxyCast 应用层的概念,用于组织和管理 AI Agent 的
```
┌─────────────────────────────────────────────────────────────────┐
│ ProxyCast (应用层) │
│ Lime (应用层) │
│ ┌─────────────────────────────────────────────────────────────┐│
│ │ Workspace 管理 ││
│ │ - WorkspaceManager: CRUD 操作 ││
@@ -55,7 +55,7 @@ Workspace 是 ProxyCast 应用层的概念,用于组织和管理 AI Agent 的
- Workspace 通过 `root_path` 与 Aster `Session.working_dir` 关联
- 一个 Workspace 可以包含多个 Session(同一 working_dir)
- ProxyCast 按 Workspace 分组显示 Session 列表
- Lime 按 Workspace 分组显示 Session 列表
@@ -64,7 +64,7 @@ Workspace 是 ProxyCast 应用层的概念,用于组织和管理 AI Agent 的
### Workspace 类型定义
```rust
// proxycast/src-tauri/src/workspace/types.rs
// lime/src-tauri/src/workspace/types.rs
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
@@ -107,7 +107,7 @@ pub struct WorkspaceSettings {
### 数据库 Schema
```sql
-- proxycast 应用数据库
-- lime 应用数据库
CREATE TABLE workspaces (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
@@ -129,7 +129,7 @@ CREATE INDEX idx_workspaces_root_path ON workspaces(root_path);
### WorkspaceManager
```rust
// proxycast/src-tauri/src/workspace/manager.rs
// lime/src-tauri/src/workspace/manager.rs
impl WorkspaceManager {
/// 创建新 workspace
@@ -187,7 +187,7 @@ impl WorkspaceManager {
### Tauri 命令
```rust
// proxycast/src-tauri/src/commands/workspace_cmd.rs
// lime/src-tauri/src/commands/workspace_cmd.rs
#[tauri::command]
pub async fn workspace_create(name: String, root_path: String) -> Result<Workspace, String>;
@@ -226,8 +226,8 @@ pub async fn workspace_create_session(workspace_id: String, name: String) -> Res
│ └── sessions.db # Aster 管理的 session 数据库
└── state/
~/Library/Application Support/proxycast/ # ProxyCast 应用目录
├── proxycast.db # 应用数据库(包含 workspaces 表)
~/Library/Application Support/lime/ # Lime 应用目录
├── lime.db # 应用数据库(包含 workspaces 表)
├── credentials/ # 凭证文件
└── workspaces/ # workspace 级配置
├── default/
@@ -241,7 +241,7 @@ pub async fn workspace_create_session(workspace_id: String, name: String) -> Res
### WorkspaceSelector
```typescript
// proxycast/src/components/workspace/WorkspaceSelector.tsx
// lime/src/components/workspace/WorkspaceSelector.tsx
interface Workspace {
id: string;
@@ -304,7 +304,7 @@ export function WorkspaceSelector() {
| 决策点 | 选择 | 理由 |
|--------|------|------|
| Workspace 存储位置 | ProxyCast 应用层 | 不修改 Aster 框架,保持框架通用性 |
| Workspace 存储位置 | Lime 应用层 | 不修改 Aster 框架,保持框架通用性 |
| 与 Session 关系 | 通过 working_dir 关联 | 利用 Aster 现有字段,无需修改框架 |
| 配置存储 | 独立目录 + 数据库 | 配置文件便于编辑,元数据存数据库 |
| 默认 Workspace | 支持 | 新 Session 自动关联默认 Workspace |
+6 -6
View File
@@ -1,18 +1,18 @@
export default {
docus: {
title: "ProxyCast",
title: "Lime",
description: "把你的 AI 客户端额度用到任何地方",
url: "https://aiclientproxy.github.io/proxycast",
url: "https://aiclientproxy.github.io/lime",
image: "/images/logo-banner.svg",
socials: {
github: "aiclientproxy/proxycast",
github: "aiclientproxy/lime",
},
header: {
logo: true,
title: "ProxyCast",
title: "Lime",
showLinkIcon: true,
},
@@ -25,13 +25,13 @@ export default {
footer: {
credits: {
icon: "",
text: "Made with 💜 by ProxyCast Team",
text: "Made with 💜 by Lime Team",
href: "https://github.com/aiclientproxy",
},
textLinks: [
{
text: "GitHub",
href: "https://github.com/aiclientproxy/proxycast",
href: "https://github.com/aiclientproxy/lime",
target: "_blank",
},
],
+4 -4
View File
@@ -1,13 +1,13 @@
---
title: 概述
description: 了解 ProxyCast 如何支持从灵感到发布的完整创作流程
description: 了解 Lime 如何支持从灵感到发布的完整创作流程
navigation:
icon: i-heroicons-home
---
# ProxyCast 概述
# Lime 概述
ProxyCast 是一款创作类 AI Agent 桌面应用。
Lime 是一款创作类 AI Agent 桌面应用。
它把对话、内容生成、图片创作、项目管理、资源沉淀放到同一个工作台里。
::alert{type="warning"}
@@ -51,6 +51,6 @@ ProxyCast 是一款创作类 AI Agent 桌面应用。
## 下一步
- [安装指南](/introduction/installation) - 下载并安装 ProxyCast
- [安装指南](/introduction/installation) - 下载并安装 Lime
- [快速开始](/introduction/quickstart) - 3 步完成首次创作
- [首页与工作台](/user-guide/dashboard) - 熟悉核心入口
+11 -11
View File
@@ -1,6 +1,6 @@
---
title: 安装指南
description: 下载、安装并验证 ProxyCast 可正常启动
description: 下载、安装并验证 Lime 可正常启动
navigation:
icon: i-heroicons-arrow-down-tray
---
@@ -18,21 +18,21 @@ navigation:
从 GitHub Releases 下载最新版本安装包:
[下载 ProxyCast](https://github.com/aiclientproxy/proxycast/releases)
[下载 Lime](https://github.com/aiclientproxy/lime/releases)
### 安装包
| 平台 | 文件名 | 说明 |
|------|--------|------|
| macOS | `ProxyCast_x.x.x_aarch64.dmg` | Apple Silicon Mac |
| Windows | `ProxyCast_x.x.x_x64-online-setup.exe` | 默认推荐,体积更小,安装时按需下载 WebView2 |
| Windows | `ProxyCast_x.x.x_x64-offline-setup.exe` | 离线、内网或受限网络环境使用 |
| macOS | `Lime_x.x.x_aarch64.dmg` | Apple Silicon Mac |
| Windows | `Lime_x.x.x_x64-online-setup.exe` | 默认推荐,体积更小,安装时按需下载 WebView2 |
| Windows | `Lime_x.x.x_x64-offline-setup.exe` | 离线、内网或受限网络环境使用 |
## macOS 安装
1. 下载 `.dmg` 文件
2. 双击打开 DMG 镜像
3. 将 ProxyCast 拖入 Applications 文件夹
3. 将 Lime 拖入 Applications 文件夹
4. 首次运行时,右键点击应用选择"打开"(绕过 Gatekeeper)
::alert{type="info"}
@@ -41,18 +41,18 @@ navigation:
## Windows 安装
1. 优先下载 `ProxyCast_x.x.x_x64-online-setup.exe`
1. 优先下载 `Lime_x.x.x_x64-online-setup.exe`
2. 双击运行安装程序
3. 按照安装向导完成安装
4. 从开始菜单启动 ProxyCast
4. 从开始菜单启动 Lime
::alert{type="info"}
如果设备处于离线、内网或受限网络环境,请改用 `ProxyCast_x.x.x_x64-offline-setup.exe`。
如果设备处于离线、内网或受限网络环境,请改用 `Lime_x.x.x_x64-offline-setup.exe`。
::
## 验证安装
启动 ProxyCast 后,你应该看到:
启动 Lime 后,你应该看到:
1. 主窗口正常打开
2. 左侧出现主要入口(AI Agent、项目、资源、图片生成等)
@@ -64,7 +64,7 @@ navigation:
```bash
# 移除隔离属性
xattr -cr /Applications/ProxyCast.app
xattr -cr /Applications/Lime.app
```
### Windows: SmartScreen 警告
+2 -2
View File
@@ -13,12 +13,12 @@ navigation:
确保你已经:
- [x] 安装了 ProxyCast
- [x] 安装了 Lime
- [x] 可以正常打开应用主界面
## 步骤 1:选择创作主题与项目
1. 启动 ProxyCast,进入 AI Agent 或项目入口
1. 启动 Lime,进入 AI Agent 或项目入口
2. 选择你的主题方向(如社媒、短视频、小说)
3. 新建项目,作为本次创作的工作空间
+1 -1
View File
@@ -7,7 +7,7 @@ navigation:
# 首页与工作台
首页是你进入 ProxyCast 后的主入口。
首页是你进入 Lime 后的主入口。
建议把它理解为“创作操作台”,而不是单一功能面板。
## 左侧核心入口
+3 -3
View File
@@ -11,7 +11,7 @@ navigation:
📢 插件属于进阶能力。若你只做日常创作,可先跳过本页。
::
插件中心用于扩展 ProxyCast 的能力,例如新增工具、接入外部流程、扩展特定场景工作流。
插件中心用于扩展 Lime 的能力,例如新增工具、接入外部流程、扩展特定场景工作流。
## 访问插件中心
@@ -93,12 +93,12 @@ navigation:
### 插件无法加载
1. 检查 ProxyCast 版本是否满足插件要求
1. 检查 Lime 版本是否满足插件要求
2. 查看日志了解详细错误信息
3. 尝试重新安装插件
### 二进制插件权限问题
部分二进制插件需要管理员权限:
- **Windows**: 以管理员身份运行 ProxyCast
- **Windows**: 以管理员身份运行 Lime
- **macOS/Linux**: 插件会提示需要的权限
+1 -1
View File
@@ -7,7 +7,7 @@ navigation:
# 资源库
资源库是 ProxyCast 的创作资产中心。
资源库是 Lime 的创作资产中心。
它和项目绑定,用来长期沉淀你的创作结果。
## 资源分类
@@ -11,7 +11,7 @@ navigation:
## 适用版本
- ProxyCast 已支持“渠道管理 > Gateway 公共隧道”配置卡片
- Lime 已支持“渠道管理 > Gateway 公共隧道”配置卡片
- 飞书渠道支持 `webhook` 模式
## 前置条件
@@ -137,7 +137,7 @@ Cloudflare 相关字段(二选一):
处理:
1. 确认 URL 为 `https://` 且可访问
2. 对齐飞书后台与 ProxyCast 的 Token/Encrypt Key
2. 对齐飞书后台与 Lime 的 Token/Encrypt Key
## 运维建议
@@ -150,9 +150,9 @@ Cloudflare 相关字段(二选一):
桌面端建议按环境选择:
1. `managed`(应用内托管,默认)
由 ProxyCast 在启动后自动拉起 tunnel,并定时检查进程状态;异常退出会自动重拉。
由 Lime 在启动后自动拉起 tunnel,并定时检查进程状态;异常退出会自动重拉。
2. `external`(系统级常驻,生产更稳)
由系统服务管理 `cloudflared`,ProxyCast 仅做状态诊断与 webhook 同步。
由系统服务管理 `cloudflared`,Lime 仅做状态诊断与 webhook 同步。
### 何时用 external
@@ -118,13 +118,13 @@ curl -i "http://127.0.0.1:8999/v1/chat/completions" \
适用:排查“为什么慢/为什么回退/是否命中缓存”等线上联调问题。
可观测调试头示例:
- `x-proxycast-request-id`
- `x-proxycast-cache`(`hit/store/skip-*`)
- `x-proxycast-dedup`(`replay/wait-replay/new/removed-on-error`)
- `x-proxycast-idempotency`(`replay/in-progress/new/removed-on-error`)
- `x-proxycast-requested-provider` / `x-proxycast-effective-provider` / `x-proxycast-model`
- `x-lime-request-id`
- `x-lime-cache`(`hit/store/skip-*`)
- `x-lime-dedup`(`replay/wait-replay/new/removed-on-error`)
- `x-lime-idempotency`(`replay/in-progress/new/removed-on-error`)
- `x-lime-requested-provider` / `x-lime-effective-provider` / `x-lime-model`
补充:在「团队共享网关(内网)」页面的「网关 API 测试」结果展开区域,也会直接显示这些 `x-proxycast-*` 调试头。
补充:在「团队共享网关(内网)」页面的「网关 API 测试」结果展开区域,也会直接显示这些 `x-lime-*` 调试头。
## 调整顺序建议
+2 -2
View File
@@ -1,6 +1,6 @@
---
title: 本地 API 接入
description: 将 ProxyCast 能力暴露给外部工具(进阶)
description: 将 Lime 能力暴露给外部工具(进阶)
navigation:
icon: i-heroicons-server
---
@@ -11,7 +11,7 @@ navigation:
这是进阶能力。普通创作者可以不配置,直接在应用内完成创作。
::
当你希望把 ProxyCast 接入脚本、自动化工具或第三方客户端时,可启用本地 API。
当你希望把 Lime 接入脚本、自动化工具或第三方客户端时,可启用本地 API。
## 核心说明
+1 -1
View File
@@ -11,7 +11,7 @@ navigation:
本章节属于进阶内容。普通创作者可先使用默认连接,只有在需要多账号或精细控制时再深入配置。
::
ProxyCast 支持多种模型连接方式,你可以按自己的使用习惯选择。
Lime 支持多种模型连接方式,你可以按自己的使用习惯选择。
## 两类连接方式
+2 -2
View File
@@ -75,7 +75,7 @@ credential_pool:
模型别名允许你使用自定义名称访问上游模型:
1. 客户端请求别名(如 `vertex-flash`)
2. ProxyCast 将别名解析为上游模型名(如 `gemini-2.0-flash`)
2. Lime 将别名解析为上游模型名(如 `gemini-2.0-flash`)
3. 使用上游模型名发送请求
4. 响应中保留客户端请求的别名
@@ -105,7 +105,7 @@ Vertex AI Provider 使用 `x-goog-api-key` 头进行认证:
x-goog-api-key: your-api-key
```
ProxyCast 会自动将配置的 API Key 添加到请求头中。
Lime 会自动将配置的 API Key 添加到请求头中。
## 负载均衡
+3 -3
View File
@@ -43,7 +43,7 @@ Kiro 凭证文件位于:
### 自动刷新
ProxyCast 会自动处理 Token 刷新:
Lime 会自动处理 Token 刷新:
1. 检测 Access Token 即将过期
2. 使用 Refresh Token 获取新 Token
@@ -64,7 +64,7 @@ ProxyCast 会自动处理 Token 刷新:
1. 确保已安装 Kiro IDE
2. 在 Kiro 中完成登录
3. 启动 ProxyCast
3. 启动 Lime
4. 凭证自动出现在凭证池中
### 手动添加
@@ -107,7 +107,7 @@ Kiro 订阅有使用额度限制,具体取决于订阅计划。
1. 打开 Kiro IDE
2. 确认登录状态
3. 如需要,重新登录
4. 在 ProxyCast 中刷新凭证
4. 在 Lime 中刷新凭证
### 请求失败
+4 -4
View File
@@ -49,7 +49,7 @@ Gemini CLI 需要关联 Google Cloud 项目:
### 配置项目 ID
在 ProxyCast 中配置项目:
在 Lime 中配置项目:
```yaml
gemini:
@@ -61,7 +61,7 @@ gemini:
### Token 刷新
ProxyCast 自动处理 OAuth Token 刷新:
Lime 自动处理 OAuth Token 刷新:
1. 使用 Refresh Token 获取 Access Token
2. Access Token 过期前自动刷新
@@ -95,10 +95,10 @@ gemini auth login
按提示完成 OAuth 认证流程。
### 在 ProxyCast 中配置
### 在 Lime 中配置
1. 完成 Gemini CLI 登录
2. 启动 ProxyCast
2. 启动 Lime
3. 凭证自动出现在凭证池中
## 支持的模型
+2 -2
View File
@@ -55,7 +55,7 @@ aliyun configure
### 手动配置
在 ProxyCast 中手动添加:
在 Lime 中手动添加:
1. 进入 **凭证池** 页面
2. 点击 **添加凭证**
@@ -64,7 +64,7 @@ aliyun configure
## 自动刷新
ProxyCast 支持 Qwen Token 的自动刷新:
Lime 支持 Qwen Token 的自动刷新:
1. 检测 Token 即将过期
2. 使用 Refresh Token 获取新 Token
+1 -1
View File
@@ -34,7 +34,7 @@ OpenAI Custom 允许你配置任何 OpenAI 兼容的 API 服务。
2. 创建 Azure OpenAI 资源
3. 获取 API Key 和端点
### 在 ProxyCast 中配置
### 在 Lime 中配置
1. 进入 **凭证池** 页面
2. 点击 **添加凭证**
+2 -2
View File
@@ -33,7 +33,7 @@ Claude Custom 允许你配置 Anthropic 官方 API 或其他 Claude 兼容服务
2. 配置 Bedrock 访问权限
3. 获取 AWS 凭证
### 在 ProxyCast 中配置
### 在 Lime 中配置
1. 进入 **凭证池** 页面
2. 点击 **添加凭证**
@@ -127,7 +127,7 @@ bedrock-claude:
1. 配置 IAM 角色
2. 授予 Bedrock 访问权限
3. ProxyCast 自动使用角色凭证
3. Lime 自动使用角色凭证
## 高级配置
+4 -4
View File
@@ -16,7 +16,7 @@ navigation:
## 概述
Codex Provider 允许你使用 OpenAI Codex 的 OAuth 凭证访问 GPT 模型。
同时,为了兼容 Codex CLI 的「API Key 登录」用户(`~/.codex/auth.json` 只有 `api_key`),ProxyCast 也支持读取 `api_key` 并作为 Bearer Token 使用(无需刷新)。
同时,为了兼容 Codex CLI 的「API Key 登录」用户(`~/.codex/auth.json` 只有 `api_key`),Lime 也支持读取 `api_key` 并作为 Bearer Token 使用(无需刷新)。
## 支持的模型
@@ -50,7 +50,7 @@ credential_pool:
### 通过 UI 登录
1. 打开 ProxyCast
1. 打开 Lime
2. 进入 Provider 管理页面
3. 找到 Codex 部分
4. 点击"OAuth 登录"按钮
@@ -85,7 +85,7 @@ credential_pool:
## Token 刷新
ProxyCast 会自动在 Token 过期前刷新:
Lime 会自动在 Token 过期前刷新:
- 检测到 Token 即将过期时自动刷新
- 刷新失败时标记凭证为无效
@@ -128,7 +128,7 @@ credential_pool:
token_file: "codex/account2.json"
```
ProxyCast 会自动在多个凭证之间负载均衡。
Lime 会自动在多个凭证之间负载均衡。
## 故障排除
+3 -3
View File
@@ -15,7 +15,7 @@ iFlow Provider 支持两种认证方式:OAuth 和 Cookie。
## 概述
iFlow 是一个 AI 服务提供商,ProxyCast 支持通过 OAuth 或 Cookie 方式使用其服务。
iFlow 是一个 AI 服务提供商,Lime 支持通过 OAuth 或 Cookie 方式使用其服务。
## 认证方式
@@ -68,7 +68,7 @@ credential_pool:
### 通过 UI 登录
1. 打开 ProxyCast
1. 打开 Lime
2. 进入 Provider 管理页面
3. 找到 iFlow 部分
4. 点击"OAuth 登录"按钮
@@ -98,7 +98,7 @@ credential_pool:
### 通过 UI 导入
1. 打开 ProxyCast
1. 打开 Lime
2. 进入 Provider 管理页面
3. 找到 iFlow 部分
4. 选择"Cookie 导入"
+1 -1
View File
@@ -11,7 +11,7 @@ navigation:
本章节面向进阶用户与开发者。普通创作者可直接在应用内使用,无需 API 接入。
::
当你需要把 ProxyCast 接入脚本、自动化流程或第三方工具时,可使用本地 API。
当你需要把 Lime 接入脚本、自动化流程或第三方工具时,可使用本地 API。
## 常见端点类型
@@ -11,7 +11,7 @@ navigation:
本页是开发者进阶文档。普通创作者可直接在应用内使用,无需 API 调用。
::
ProxyCast 提供完整的 OpenAI Chat Completions API 兼容。
Lime 提供完整的 OpenAI Chat Completions API 兼容。
## /v1/chat/completions
@@ -11,7 +11,7 @@ navigation:
本页是开发者进阶文档。普通创作者可直接在应用内使用,无需 API 调用。
::
ProxyCast 提供 Anthropic Claude Messages API 兼容。
Lime 提供 Anthropic Claude Messages API 兼容。
## /v1/messages
@@ -1,6 +1,6 @@
---
title: 管理 API
description: ProxyCast 远程管理 API 端点
description: Lime 远程管理 API 端点
navigation:
icon: i-heroicons-cog-6-tooth
---
@@ -11,7 +11,7 @@ navigation:
本页是开发者进阶文档,主要用于自动化管理与运维集成。
::
ProxyCast 提供远程管理 API,用于配置和监控服务。
Lime 提供远程管理 API,用于配置和监控服务。
## 认证
+10 -10
View File
@@ -11,7 +11,7 @@ navigation:
本页是开发者进阶文档。若你不涉及 Amp CLI 集成,可跳过。
::
ProxyCast 提供 Amp CLI 兼容的路由端点,支持将 Amp CLI 请求路由到本地 OAuth 凭证。
Lime 提供 Amp CLI 兼容的路由端点,支持将 Amp CLI 请求路由到本地 OAuth 凭证。
## 概述
@@ -80,7 +80,7 @@ curl http://127.0.0.1:8999/api/provider/anthropic/v1/messages \
## 模型映射
当 Amp CLI 请求的模型不可用时,ProxyCast 可以自动映射到可用的替代模型。
当 Amp CLI 请求的模型不可用时,Lime 可以自动映射到可用的替代模型。
### 配置
@@ -104,7 +104,7 @@ ampcode:
## 管理端点代理
ProxyCast 可以代理 Amp 的认证和账户管理端点到上游服务器。
Lime 可以代理 Amp 的认证和账户管理端点到上游服务器。
### /api/auth/*
@@ -152,9 +152,9 @@ ampcode:
你有 Kiro 的 Claude 订阅,想用 Amp CLI 但不想额外付费:
1. 配置 ProxyCast 加载 Kiro OAuth 凭证
2. 在 Amp CLI 中配置 ProxyCast 作为 API 端点
3. Amp CLI 请求通过 ProxyCast 路由到 Kiro 凭证
1. 配置 Lime 加载 Kiro OAuth 凭证
2. 在 Amp CLI 中配置 Lime 作为 API 端点
3. Amp CLI 请求通过 Lime 路由到 Kiro 凭证
### 场景 2:模型替换
@@ -169,7 +169,7 @@ ampcode:
### 场景 3:多 Provider 负载均衡
配置多个凭证,ProxyCast 自动在它们之间负载均衡:
配置多个凭证,Lime 自动在它们之间负载均衡:
```yaml
credential_pool:
@@ -182,14 +182,14 @@ credential_pool:
## Amp CLI 配置
在 Amp CLI 中配置 ProxyCast:
在 Amp CLI 中配置 Lime:
```bash
# 设置 API 端点
amp config set api.base_url http://127.0.0.1:8999/api/provider
# 设置 API Key
amp config set api.key your-proxycast-api-key
amp config set api.key your-lime-api-key
```
或在配置文件中:
@@ -198,7 +198,7 @@ amp config set api.key your-proxycast-api-key
# ~/.amp/config.yaml
api:
base_url: http://127.0.0.1:8999/api/provider
key: your-proxycast-api-key
key: your-lime-api-key
```
## 错误处理
@@ -107,10 +107,10 @@ navigation:
### 处理建议
1. 优先重新下载安装 `ProxyCast_*_x64-online-setup.exe`
2. 确认 `%APPDATA%\proxycast\` 与 `%USERPROFILE%\.proxycast\` 可写
1. 优先重新下载安装 `Lime_*_x64-online-setup.exe`
2. 确认 `%APPDATA%\lime\` 与 `%USERPROFILE%\.lime\` 可写
3. 如被 SmartScreen 拦截,确认来源可信后再继续
4. 如果处于离线、内网或受限网络环境,改用 `ProxyCast_*_x64-offline-setup.exe`
4. 如果处于离线、内网或受限网络环境,改用 `Lime_*_x64-offline-setup.exe`
5. 如有条件,运行一键收集脚本后再反馈
详见 [Windows 启动与安装问题](/troubleshooting/windows-startup-issues)。
@@ -20,7 +20,7 @@ navigation:
推荐优先使用:
- `ProxyCast_*_x64-online-setup.exe`
- `Lime_*_x64-online-setup.exe`
不建议优先分发:
@@ -30,7 +30,7 @@ navigation:
原因:
- 在线安装包体积更小,适合大多数 Windows 10/11 用户
- 如果处于离线、内网或受限网络环境,请改用 `ProxyCast_*_x64-offline-setup.exe`
- 如果处于离线、内网或受限网络环境,请改用 `Lime_*_x64-offline-setup.exe`
## 常见症状与处理
@@ -63,8 +63,8 @@ navigation:
以下目录至少要保证当前用户可读写:
- `%APPDATA%\proxycast\`
- `%USERPROFILE%\.proxycast\`
- `%APPDATA%\lime\`
- `%USERPROFILE%\.lime\`
这些目录分别用于:
@@ -81,8 +81,8 @@ navigation:
反馈问题前,建议至少收集以下内容:
- `%USERPROFILE%\.proxycast\logs\`
- `%USERPROFILE%\.proxycast\request_logs\`
- `%USERPROFILE%\.lime\logs\`
- `%USERPROFILE%\.lime\request_logs\`
- 问题出现时间
- 安装包文件名
- 页面或弹窗提示截图
@@ -97,11 +97,11 @@ powershell -ExecutionPolicy Bypass -File .\scripts\windows-collect-support-bundl
脚本会:
- 打包 `%USERPROFILE%\.proxycast\logs\` 与 `request_logs\`
- 打包 `%USERPROFILE%\.lime\logs\` 与 `request_logs\`
- 收集 WebView2、PowerShell、目录存在性等环境信息
- 默认不打包 `config.yaml`、数据库和凭证正文,避免泄露敏感信息
执行完成后,会在桌面生成 `ProxyCast-Support-时间戳.zip`。
执行完成后,会在桌面生成 `Lime-Support-时间戳.zip`。
如果应用本身还能打开,也可以在“设置 / API 服务器 / 诊断接口”区域点击“导出支持包”。
@@ -122,7 +122,7 @@ powershell -ExecutionPolicy Bypass -File .\scripts\windows-collect-support-bundl
请整理以下最小信息后反馈:
1. Windows 版本
2. ProxyCast 版本
2. Lime 版本
3. 使用的安装包文件名
4. 首次出现时间
5. 日志目录压缩包
@@ -1,13 +1,13 @@
---
title: 架构说明
description: ProxyCast 技术架构
description: Lime 技术架构
navigation:
icon: i-heroicons-cube-transparent
---
# 架构说明
ProxyCast 是基于 Tauri 2.0 构建的跨平台桌面应用。
Lime 是基于 Tauri 2.0 构建的跨平台桌面应用。
## 技术栈
@@ -1,13 +1,13 @@
---
title: 贡献指南
description: 如何为 ProxyCast 做贡献
description: 如何为 Lime 做贡献
navigation:
icon: i-heroicons-heart
---
# 贡献指南
感谢你对 ProxyCast 的关注!本指南帮助你开始贡献。
感谢你对 Lime 的关注!本指南帮助你开始贡献。
## 开发环境设置
@@ -24,8 +24,8 @@ navigation:
```bash
# 克隆仓库
git clone https://github.com/aiclientproxy/proxycast.git
cd proxycast
git clone https://github.com/aiclientproxy/lime.git
cd lime
# 安装前端依赖
pnpm install
@@ -142,7 +142,7 @@ git push origin feature/your-feature
## 项目结构
```
proxycast/
lime/
├── src/ # 前端源码
│ ├── components/ # React 组件
│ ├── pages/ # 页面组件
@@ -184,7 +184,7 @@ cargo test
2. 创建新 Issue
3. 提供详细信息:
- 操作系统和版本
- ProxyCast 版本
- Lime 版本
- 复现步骤
- 错误日志
+4 -4
View File
@@ -7,7 +7,7 @@ navigation:
# 构建指南
本指南介绍如何在本地开发和构建 ProxyCast。
本指南介绍如何在本地开发和构建 Lime。
## 本地开发
@@ -227,9 +227,9 @@ RUST_LOG=debug pnpm tauri dev
| 平台 | 路径 |
| ------- | -------------------------------- |
| macOS | `~/Library/Logs/ProxyCast/` |
| Windows | `%APPDATA%\ProxyCast\logs\` |
| Linux | `~/.local/share/proxycast/logs/` |
| macOS | `~/Library/Logs/Lime/` |
| Windows | `%APPDATA%\Lime\logs\` |
| Linux | `~/.local/share/lime/logs/` |
## 常见问题
+10 -10
View File
@@ -26,31 +26,31 @@ navigation:
当前版本需要手动备份以下路径:
- 配置文件(macOS: `~/Library/Application Support/proxycast/config.yaml`,Linux: `~/.config/proxycast/config.yaml`,Windows: `%APPDATA%\\proxycast\\config.yaml`)
- 凭证池副本目录(导入的凭证文件):macOS `~/Library/Application Support/proxycast/credentials/`,Linux `~/.local/share/proxycast/credentials/`,Windows `%APPDATA%\\proxycast\\credentials\\`
- OAuth 凭证目录:`~/.proxycast/auth/`
- 数据库文件:`~/.proxycast/proxycast.db`
- 日志目录:`~/.proxycast/logs/`、`~/.proxycast/request_logs/`
- 配置文件(macOS: `~/Library/Application Support/lime/config.yaml`,Linux: `~/.config/lime/config.yaml`,Windows: `%APPDATA%\\lime\\config.yaml`)
- 凭证池副本目录(导入的凭证文件):macOS `~/Library/Application Support/lime/credentials/`,Linux `~/.local/share/lime/credentials/`,Windows `%APPDATA%\\lime\\credentials\\`
- OAuth 凭证目录:`~/.lime/auth/`
- 数据库文件:`~/.lime/lime.db`
- 日志目录:`~/.lime/logs/`、`~/.lime/request_logs/`
恢复步骤(顺序建议):
1. 停止应用
2. 恢复 `config.yaml`
3. 恢复 `credentials` 目录、`auth` 目录与数据库 `proxycast.db`
3. 恢复 `credentials` 目录、`auth` 目录与数据库 `lime.db`
4. 如需保留历史日志,恢复 `logs/` 与 `request_logs/`
5. 启动应用并验证 `/health` 与关键功能
## Windows 启动失败排查
- 优先确认用户安装的是 `ProxyCast_*_x64-online-setup.exe`;离线、内网或受限网络环境再提供 `ProxyCast_*_x64-offline-setup.exe`
- 优先确认用户安装的是 `Lime_*_x64-online-setup.exe`;离线、内网或受限网络环境再提供 `Lime_*_x64-offline-setup.exe`
- 首次启动若提示缺少运行时,优先重新运行 Windows setup 安装包;如果在线安装失败,再切换到 offline 安装包
- 检查 `%APPDATA%\proxycast\` 与 `%USERPROFILE%\.proxycast\` 是否可写;数据库、日志与部分运行时状态依赖这两个目录
- 收集 `%USERPROFILE%\.proxycast\logs\` 与 `%USERPROFILE%\.proxycast\request_logs\` 作为一线排障材料
- 检查 `%APPDATA%\lime\` 与 `%USERPROFILE%\.lime\` 是否可写;数据库、日志与部分运行时状态依赖这两个目录
- 收集 `%USERPROFILE%\.lime\logs\` 与 `%USERPROFILE%\.lime\request_logs\` 作为一线排障材料
- 若前端出现 Windows 启动自检提示,按提示项优先检查目录权限、数据库可访问性、WebView2 与 Shell 可用性
## 回滚策略
- 如果升级失败,恢复备份的 `config.yaml` 与 `proxycast.db`
- 如果升级失败,恢复备份的 `config.yaml` 与 `lime.db`
- 使用上一版本安装包覆盖安装
- 完成健康检查与冒烟测试
+1 -1
View File
@@ -9,7 +9,7 @@ navigation:
## 使用目的
ProxyCast 是一款开源工具,其设计初衷是帮助用户**充分利用已订阅的 AI 服务 Token**,在更多场景中发挥其价值。
Lime 是一款开源工具,其设计初衷是帮助用户**充分利用已订阅的 AI 服务 Token**,在更多场景中发挥其价值。
::alert{type="warning"}
**重要提示**: 本工具仅限于个人合法使用,严禁用于任何非法盈利目的。
+2 -2
View File
@@ -7,7 +7,7 @@ navigation:
# 开放平台概览
开放平台面向开发者与生态合作方,用于扩展 ProxyCast 的能力边界。
开放平台面向开发者与生态合作方,用于扩展 Lime 的能力边界。
::alert{type="info"}
如果你是普通创作者,可先跳过本章节。
@@ -23,7 +23,7 @@ navigation:
### Connect 能力
用于外部平台与 ProxyCast 的配置联动与生态集成。
用于外部平台与 Lime 的配置联动与生态集成。
[了解更多 →](/open-platform/connect)
+1 -1
View File
@@ -11,7 +11,7 @@ navigation:
本页面向开发者与高级用户。普通创作者可使用用户指南中的插件页。
::
ProxyCast 支持通过插件扩展能力,适用于自定义工具、自动化流程和生态集成。
Lime 支持通过插件扩展能力,适用于自定义工具、自动化流程和生态集成。
## 你可以做什么
@@ -1,6 +1,6 @@
---
title: 开放平台 - 插件开发指南
description: 开发 ProxyCast 插件的规范与最佳实践
description: 开发 Lime 插件的规范与最佳实践
navigation:
icon: i-heroicons-code-bracket-square
---
@@ -11,7 +11,7 @@ navigation:
本页面向开发者。若你不开发插件,可跳过。
::
本文档说明插件类型、打包方式和开发建议,帮助你把能力稳定接入 ProxyCast。
本文档说明插件类型、打包方式和开发建议,帮助你把能力稳定接入 Lime。
## 插件类型
+4 -4
View File
@@ -11,7 +11,7 @@ navigation:
本页面向生态合作方与平台接入方。普通创作者可跳过。
::
Connect 通过 Deep Link 提供“一键配置”能力,帮助外部平台将配置快速带入 ProxyCast。
Connect 通过 Deep Link 提供“一键配置”能力,帮助外部平台将配置快速带入 Lime。
## 核心价值
@@ -22,14 +22,14 @@ Connect 通过 Deep Link 提供“一键配置”能力,帮助外部平台将
## 一键配置流程
1. 用户在外部平台点击一键配置
2. 浏览器打开 `proxycast://` 链接
3. ProxyCast 弹出确认
2. 浏览器打开 `lime://` 链接
3. Lime 弹出确认
4. 用户确认后完成导入
## 基础协议
```text
proxycast://connect?relay={relay_id}&key={api_key}&name={key_name}&ref={ref_code}
lime://connect?relay={relay_id}&key={api_key}&name={key_name}&ref={ref_code}
```
| 参数 | 必填 | 说明 |
@@ -24,7 +24,7 @@ Webhook 用于回传配置行为结果,帮助你统计接入效果。
## 请求示例
```http
POST https://your-domain.com/proxycast/callback
POST https://your-domain.com/lime/callback
Content-Type: application/json
{
+3 -3
View File
@@ -1,12 +1,12 @@
---
title: ProxyCast 文档中心
title: Lime 文档中心
description: 创作类 AI Agent 平台文档,从灵感到发布的一站式指南
navigation: false
---
# ProxyCast 文档中心
# Lime 文档中心
ProxyCast 是创作类 AI Agent 平台。
Lime 是创作类 AI Agent 平台。
你可以在同一个工作台里完成对话、创作、图片生成、项目沉淀与资源复用。
## 从这里开始
+4 -4
View File
@@ -1,6 +1,6 @@
# ProxyCast 设置页面重构设计
# Lime 设置页面重构设计
> 参考 LobeHub 的设置架构,为 ProxyCast 设计现代化的设置界面
> 参考 LobeHub 的设置架构,为 Lime 设计现代化的设置界面
## 一、设计目标
@@ -548,7 +548,7 @@ export function SettingHeader({ title, extra }: SettingHeaderProps) {
## 八、与 LobeHub 的对应关系
| LobeHub 设置项 | ProxyCast 对应 | 备注 |
| LobeHub 设置项 | Lime 对应 | 备注 |
|---------------|---------------|------|
| Profile | account/profile | 用户资料 |
| Stats | account/stats | 使用统计 |
@@ -568,7 +568,7 @@ export function SettingHeader({ title, extra }: SettingHeaderProps) {
## 九、UI 设计参考
### 颜色方案
- 使用 ProxyCast 现有的 CSS 变量(`hsl(var(--xxx))`)
- 使用 Lime 现有的 CSS 变量(`hsl(var(--xxx))`)
- 侧边栏背景:`--card`
- 激活项背景:`--accent`
- 分组标题:`--muted-foreground`
+4 -4
View File
@@ -1,10 +1,10 @@
# ProxyCast AI Agent 开发指南
# Lime AI Agent 开发指南
> 面向未来 AI Agent 功能开发的架构设计与最佳实践
## 一、愿景与定位
ProxyCast 的未来方向是从 **API 代理工具** 演进为 **AI Agent 创作平台**。
Lime 的未来方向是从 **API 代理工具** 演进为 **AI Agent 创作平台**。
核心目标是让用户能够:
1. **创建自定义 Agent** - 定义 Agent 的能力、工具、行为
@@ -13,7 +13,7 @@ ProxyCast 的未来方向是从 **API 代理工具** 演进为 **AI Agent 创作
```
┌─────────────────────────────────────────────────────────────────┐
│ ProxyCast AI Agent 平台 │
│ Lime AI Agent 平台 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
@@ -512,4 +512,4 @@ agent/
---
_本文档定义了 ProxyCast AI Agent 功能的架构设计,随着开发进展会持续更新。_
_本文档定义了 Lime AI Agent 功能的架构设计,随着开发进展会持续更新。_
@@ -83,8 +83,8 @@ P0 目标整体达成,统一执行追踪已进入可用状态并通过构建
已通过:
- `cd src-tauri && cargo check`
- `cd src-tauri && cargo test -p proxycast-core agent_run::tests -- --nocapture`
- `cd src-tauri && cargo test -p proxycast execution_tracker_service::tests -- --nocapture`
- `cd src-tauri && cargo test -p lime-core agent_run::tests -- --nocapture`
- `cd src-tauri && cargo test -p lime execution_tracker_service::tests -- --nocapture`
- `npm run build`
## 5. 与 P0 验收标准对照
@@ -1,8 +1,8 @@
# ProxyCast 统一执行追踪(Execution Tracker)技术规划
# Lime 统一执行追踪(Execution Tracker)技术规划
## 1. 背景与问题定义
当前 ProxyCast 的执行入口分散在多个模块:
当前 Lime 的执行入口分散在多个模块:
- `aster_agent_cmd.rs`(通用 Agent 对话)
- `skill_exec_cmd.rs`(Skill 执行)
+10 -10
View File
@@ -1,8 +1,8 @@
# LobsterAI 业务闭环对标与 ProxyCast AI Agent 规划
# LobsterAI 业务闭环对标与 Lime AI Agent 规划
## 1. 文档目标
本文从**资深架构师**与**产品经理**双视角,对 `LobsterAI` 与 `ProxyCast` 做业务闭环级对标,明确:
本文从**资深架构师**与**产品经理**双视角,对 `LobsterAI` 与 `Lime` 做业务闭环级对标,明确:
1. 我们应该借鉴什么(高价值能力)
2. 我们不应该照搬什么(避免技术债和垃圾代码)
@@ -23,7 +23,7 @@
- `src/main/libs/coworkMemoryExtractor.ts`
- `src/main/im/imGatewayManager.ts`
### 2.2 ProxyCast 侧(已核对)
### 2.2 Lime 侧(已核对)
- `src-tauri/src/services/execution_tracker_service.rs`
- `src-tauri/src/services/heartbeat_service/mod.rs`
@@ -44,7 +44,7 @@
- 已形成多入口入站闭环:本地 + IM(钉钉/飞书/Telegram/Discord)
- IM 不只是通知,而是可直接触发任务/会话执行
### ProxyCast
### Lime
- 已具备本地执行与 Heartbeat 任务执行
- WebSocket RPC 的 `agent.run` / `cron.run` 仍是占位实现(TODO)
@@ -66,7 +66,7 @@
- 达到阈值后自动停用任务(避免无限失败)
- 应用异常退出后会修复 stuck running 状态
### ProxyCast
### Lime
- Heartbeat 已有:超时、重试、执行记录、通知
- Execution Tracker 已有统一 run 摘要(`agent_runs`)
@@ -86,7 +86,7 @@
- 任务与 run 记录绑定,便于按任务看健康度
- 调度执行结果可做通知回执
### ProxyCast
### Lime
- `agent_runs` 已统一 chat/skill/heartbeat,这是明显优势
- 但尚未形成“任务健康面板 + 告警阈值 + 运营指标”产品层
@@ -105,7 +105,7 @@
- 有对话记忆提取链路(规则 + 守门)
- 更接近“会话后自动沉淀”
### ProxyCast
### Lime
- 已有统一记忆体系和 `unified_memory_analyze`
- 更偏分析/批处理入口,实时自动沉淀闭环不够强
@@ -122,7 +122,7 @@
- 有工具审批机制
### ProxyCast
### Lime
- `aster_agent_cmd` 已有较完整的权限与沙箱策略
- 安全基础不弱,具备差异化潜力
@@ -163,7 +163,7 @@
---
## 6. ProxyCast 可执行路线图(业务优先)
## 6. Lime 可执行路线图(业务优先)
## P0(必须,2~3 周):先打通“远程可控最小闭环”
@@ -241,7 +241,7 @@
### 架构师视角
ProxyCast 的底座(追踪、权限、沙箱、Provider 能力)已经具备,当前应避免重构冲动,重点补齐远程触发和任务治理层。
Lime 的底座(追踪、权限、沙箱、Provider 能力)已经具备,当前应避免重构冲动,重点补齐远程触发和任务治理层。
### 产品经理视角
+2 -2
View File
@@ -73,8 +73,8 @@
关键测试:
- `proxycast-scheduler`:
- `lime-scheduler`:
- `scheduler::tests::test_mark_task_failed_should_trigger_cooldown`
- `dao::tests::test_create_tables_should_add_missing_columns_for_existing_table`
- `proxycast-websocket`:
- `lime-websocket`:
- `handlers::rpc_handler::tests::test_cron_run_should_block_when_task_in_cooldown`
+5 -5
View File
@@ -1,7 +1,7 @@
# Translation Fixes Applied
## Summary
Fixed 20 translation issues in `proxycast/src/i18n/patches/en.json` where English translations had concatenated words or incorrect formatting, plus fixed a critical bug in the DOM replacement algorithm that caused partial translations.
Fixed 20 translation issues in `lime/src/i18n/patches/en.json` where English translations had concatenated words or incorrect formatting, plus fixed a critical bug in the DOM replacement algorithm that caused partial translations.
## Critical Bug Fix: DOM Replacement Order
@@ -15,7 +15,7 @@ The DOM replacer was applying translations in an arbitrary order (based on `Obje
- Result: Broken translation like "初timesSettings向导"
### Solution
Modified `proxycast/src/i18n/dom-replacer.ts` to sort translation entries by length (longest first) before applying replacements. This ensures that longer, more specific phrases are translated before their component parts.
Modified `lime/src/i18n/dom-replacer.ts` to sort translation entries by length (longest first) before applying replacements. This ensures that longer, more specific phrases are translated before their component parts.
```typescript
// Sort patches by length (longest first) to avoid partial replacements
@@ -65,7 +65,7 @@ These translations had technical terms incorrectly formatted:
| 安装完成后点击 | Click after InstallComplete | Click after installation completes |
## Impact
These fixes improve the quality and readability of English translations throughout the ProxyCast application, ensuring:
These fixes improve the quality and readability of English translations throughout the Lime application, ensuring:
- Proper spacing between words
- Natural English phrasing
- Consistent terminology
@@ -73,8 +73,8 @@ These fixes improve the quality and readability of English translations througho
- **No more partial or broken translations**
## Files Modified
- `proxycast/src/i18n/patches/en.json` - 20 translation entries corrected
- `proxycast/src/i18n/dom-replacer.ts` - Fixed replacement order algorithm
- `lime/src/i18n/patches/en.json` - 20 translation entries corrected
- `lime/src/i18n/dom-replacer.ts` - Fixed replacement order algorithm
## Testing Recommendations
1. Restart the application to ensure patches apply with the new algorithm
@@ -16,7 +16,7 @@
3. **aster 框架能力未接入**
- aster 有渐进式工具响应移除能力
- aster 支持 AI 摘要
- ProxyCast 未正确配置和使用这些能力
- Lime 未正确配置和使用这些能力
## 改进方案
@@ -1,10 +1,10 @@
# ProxyCast AI Agent 改进 - 实施进度报告
# Lime AI Agent 改进 - 实施进度报告
## 已完成工作
### 1. 研究与分析(任务 #1-#4)✅
通过对比研究 OpenAI Codex 和 aster-rust 框架,完成了 ProxyCast AI Agent 的全面分析,输出了改进研究报告,识别了四大痛点:
通过对比研究 OpenAI Codex 和 aster-rust 框架,完成了 Lime AI Agent 的全面分析,输出了改进研究报告,识别了四大痛点:
- 工具调用能力弱
- 上下文管理差
- 流式体验不好
@@ -96,7 +96,7 @@
**背景**: aster 框架的上下文管理能力不明确
**决策**:
- 阶段 1: 在 ProxyCast 层实现 AI 摘要(当前)
- 阶段 1: 在 Lime 层实现 AI 摘要(当前)
- 阶段 2: P1 完成后统一到 aster 框架
**理由**:
@@ -152,6 +152,6 @@
## 参考资料
- 研究报告: ProxyCast AI Agent 改进研究报告
- 研究报告: Lime AI Agent 改进研究报告
- Codex 架构: SQ/EQ 异步队列对、AI 摘要
- aster-rust: 渐进式工具响应移除、SubAgentScheduler
@@ -54,7 +54,7 @@
- 依赖 aster 框架的能力
- 需要等待 P1 任务完成(general 模式迁移)
### 策略 B:在 ProxyCast 层实现(备选)
### 策略 B:在 Lime 层实现(备选)
**前提**:aster 框架不支持或支持不足
@@ -66,7 +66,7 @@
**优点**:
- 完全可控,不依赖外部框架
- 可以针对 ProxyCast 的场景优化
- 可以针对 Lime 的场景优化
**缺点**:
- 需要自己实现和维护
@@ -135,7 +135,7 @@
## 参考资料
- 研究报告:ProxyCast AI Agent 改进研究报告
- 研究报告:Lime AI Agent 改进研究报告
- aster-rust GitHub: https://github.com/astercloud/aster-rust
- 相关文件:
- src-tauri/crates/services/src/session_context_service.rs
@@ -19,7 +19,7 @@
```rust
//! AI 驱动的会话摘要服务
use proxycast_core::general_chat::ChatMessage;
use lime_core::general_chat::ChatMessage;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
@@ -36,7 +36,7 @@ pub struct AISummaryResponse {
}
pub struct AISummaryService {
// 使用 ProxyCast 的 provider pool
// 使用 Lime 的 provider pool
provider_pool: Arc<ProviderPoolService>,
}
@@ -223,6 +223,6 @@ impl SessionContextService {
## 参考资料
- 研究报告:ProxyCast AI Agent 改进研究报告
- 研究报告:Lime AI Agent 改进研究报告
- Codex 上下文压缩:AI 摘要 + 保留最近消息
- aster 上下文管理:渐进式工具响应移除 + 摘要
+2 -2
View File
@@ -1,7 +1,7 @@
export default {
extends: ["docus"],
app: {
baseURL: "/proxycast/",
baseURL: "/lime/",
},
image: {
provider: "none",
@@ -10,6 +10,6 @@ export default {
robotsTxt: false,
},
llms: {
domain: "https://proxycast.local",
domain: "https://lime.local",
},
};
+21 -21
View File
@@ -9,27 +9,27 @@
- 本机使用 `127.0.0.1`/`localhost`。
- 当前版本仅支持本地监听,不支持对外服务。
- 若需要 HTTPS,请使用反向代理终止 TLS;当前服务端未启用内置 TLS。
- 确认磁盘权限可写:`~/.proxycast/`、`~/.proxycast/request_logs/`、应用数据目录(macOS: `~/Library/Application Support/proxycast/`,Linux: `~/.local/share/proxycast/`,Windows: `%APPDATA%\\proxycast\\`)。
- 确认磁盘权限可写:`~/.lime/`、`~/.lime/request_logs/`、应用数据目录(macOS: `~/Library/Application Support/lime/`,Linux: `~/.local/share/lime/`,Windows: `%APPDATA%\\lime\\`)。
## 配置路径与加载顺序
- YAML 配置(优先):
- macOS: `~/Library/Application Support/proxycast/config.yaml`
- Linux: `~/.config/proxycast/config.yaml`
- Windows: `%APPDATA%\\proxycast\\config.yaml`
- JSON 配置(兼容):macOS `~/Library/Application Support/proxycast/config.json`,Linux `~/.config/proxycast/config.json`,Windows `%APPDATA%\\proxycast\\config.json`
- 旧版遗留路径:`~/.proxycast/config.json`(检测到会提示手动迁移)
- macOS: `~/Library/Application Support/lime/config.yaml`
- Linux: `~/.config/lime/config.yaml`
- Windows: `%APPDATA%\\lime\\config.yaml`
- JSON 配置(兼容):macOS `~/Library/Application Support/lime/config.json`,Linux `~/.config/lime/config.json`,Windows `%APPDATA%\\lime\\config.json`
- 旧版遗留路径:`~/.lime/config.json`(检测到会提示手动迁移)
- 两者都不存在时使用默认配置。
- 首次启动会自动生成强随机 API Key 并写入配置。
## 数据与日志位置
- SQLite 数据库:`~/.proxycast/proxycast.db`
- 凭证池副本目录:macOS `~/Library/Application Support/proxycast/credentials/`,Linux `~/.local/share/proxycast/credentials/`,Windows `%APPDATA%\\proxycast\\credentials\\`
- OAuth/Token 目录(默认):`~/.proxycast/auth/`
- 日志目录:`~/.proxycast/logs/`
- 请求日志目录:`~/.proxycast/request_logs/`
- 数据库备份目录:`~/.proxycast/backups/`
- SQLite 数据库:`~/.lime/lime.db`
- 凭证池副本目录:macOS `~/Library/Application Support/lime/credentials/`,Linux `~/.local/share/lime/credentials/`,Windows `%APPDATA%\\lime\\credentials\\`
- OAuth/Token 目录(默认):`~/.lime/auth/`
- 日志目录:`~/.lime/logs/`
- 请求日志目录:`~/.lime/request_logs/`
- 数据库备份目录:`~/.lime/backups/`
## 备份与恢复
@@ -39,24 +39,24 @@
- `POST /v0/management/backup`
2. 或手动备份(建议停服后执行):
- 复制以下路径:
- 配置文件(macOS: `~/Library/Application Support/proxycast/config.yaml`,Linux: `~/.config/proxycast/config.yaml`,Windows: `%APPDATA%\\proxycast\\config.yaml`)
- 配置文件(macOS: `~/Library/Application Support/lime/config.yaml`,Linux: `~/.config/lime/config.yaml`,Windows: `%APPDATA%\\lime\\config.yaml`)
- 配置备份文件:`config.yaml.backup`
- 凭证池副本目录(macOS: `~/Library/Application Support/proxycast/credentials/`,Linux: `~/.local/share/proxycast/credentials/`,Windows: `%APPDATA%\\proxycast\\credentials\\`)
- `~/.proxycast/proxycast.db`
- `~/.proxycast/auth/`(如需要保留 OAuth/Token)
- `~/.proxycast/logs/`、`~/.proxycast/request_logs/`(如需保留日志)
- 凭证池副本目录(macOS: `~/Library/Application Support/lime/credentials/`,Linux: `~/.local/share/lime/credentials/`,Windows: `%APPDATA%\\lime\\credentials\\`)
- `~/.lime/lime.db`
- `~/.lime/auth/`(如需要保留 OAuth/Token)
- `~/.lime/logs/`、`~/.lime/request_logs/`(如需保留日志)
3. 将备份文件存入受控存储(加密磁盘或安全存储)。
### 自动备份
- 服务运行期间每 24 小时自动创建数据库备份到 `~/.proxycast/backups/`。
- 服务运行期间每 24 小时自动创建数据库备份到 `~/.lime/backups/`。
- 备份默认保留 7 天,过期文件会被清理。
### 恢复
1. 停止 ProxyCast 服务。
1. 停止 Lime 服务。
2. 使用管理端点恢复(建议停服后执行,执行时会锁定数据库并短暂阻塞请求):
- `POST /v0/management/restore`,请求体:`{"backup_path": "/path/to/proxycast_YYYYMMDD_HHMMSS.db"}`
- `POST /v0/management/restore`,请求体:`{"backup_path": "/path/to/lime_YYYYMMDD_HHMMSS.db"}`
3. 或手动恢复上述文件到原路径。
4. 启动服务并检查 `/health` 与 `/ready`。
@@ -74,7 +74,7 @@
- 常见问题排查:
- 端口占用:修改配置端口或释放占用端口。
- 配置解析失败:检查 YAML/JSON 语法,确认缩进正确。
- 数据库初始化失败:检查 `~/.proxycast/` 权限与磁盘空间。
- 数据库初始化失败:检查 `~/.lime/` 权限与磁盘空间。
## 安全基线
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "proxycast-docs",
"name": "lime-docs",
"engines": {
"node": ">=22.0.0"
},
+4 -4
View File
@@ -1,8 +1,8 @@
# ProxyCast Plugin UI 系统设计
# Lime Plugin UI 系统设计
## 概述
借鉴 A2UI 的设计理念,为 ProxyCast 设计一套声明式的插件 UI 系统。核心思想是:
借鉴 A2UI 的设计理念,为 Lime 设计一套声明式的插件 UI 系统。核心思想是:
- **安全如数据,表达如代码**:插件只能声明 UI 结构,不能执行任意代码
- **声明式 JSON 格式**:插件通过 JSON 描述 UI 意图,宿主应用负责渲染
@@ -13,7 +13,7 @@
```
┌─────────────────────────────────────────────────────────────────┐
│ ProxyCast Host │
│ Lime Host │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Plugin UI Renderer │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │ │
@@ -365,7 +365,7 @@ interface SurfaceStyles {
## 与 A2UI 的差异
| 特性 | A2UI | ProxyCast Plugin UI |
| 特性 | A2UI | Lime Plugin UI |
|------|------|---------------------|
| 传输方式 | SSE/JSONL 流 | Tauri IPC |
| 渲染框架 | Lit/Angular/Flutter | React |
+8 -8
View File
@@ -10,7 +10,7 @@
### 1.1 插件简介
Antigravity Provider 是 ProxyCast 的 OAuth Provider 插件,用于对接 **Google 内部 Gemini CLI** 服务(Antigravity)。它支持 **动态协议选择**:根据模型类型自动选择输出协议(Claude 模型 → Anthropic,Gemini 模型 → Gemini)。
Antigravity Provider 是 Lime 的 OAuth Provider 插件,用于对接 **Google 内部 Gemini CLI** 服务(Antigravity)。它支持 **动态协议选择**:根据模型类型自动选择输出协议(Claude 模型 → Anthropic,Gemini 模型 → Gemini)。
### 1.2 核心能力
@@ -87,13 +87,13 @@ antigravity-provider/
"name": "antigravity-provider",
"version": "1.0.0",
"description": "Antigravity (Google Gemini CLI) OAuth Provider - 支持 Gemini 和 Claude 模型",
"author": "ProxyCast Team",
"author": "Lime Team",
"homepage": "https://github.com/aiclientproxy/antigravity-provider",
"license": "MIT",
"plugin_type": "oauth_provider",
"entry": "antigravity-provider-cli",
"min_proxycast_version": "1.0.0",
"min_lime_version": "1.0.0",
"provider": {
"id": "antigravity",
@@ -599,13 +599,13 @@ impl AntigravityProvider {
```tsx
// src/index.tsx
import { ProxyCastPluginSDK } from '@proxycast/plugin-sdk';
import { LimePluginSDK } from '@lime/plugin-sdk';
import { CredentialList } from './components/CredentialList';
import { AntigravityForm } from './components/AntigravityForm';
import { SettingsPanel } from './components/SettingsPanel';
interface PluginProps {
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
pluginId: string;
}
@@ -684,7 +684,7 @@ export default function AntigravityProviderUI({ sdk, pluginId }: PluginProps) {
type AddMode = 'oauth' | 'file';
interface AntigravityFormProps {
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
onSuccess: () => void;
onCancel: () => void;
}
@@ -917,7 +917,7 @@ export function CredentialCard({ credential, onRefresh, onDelete }: CredentialCa
// src/components/SettingsPanel.tsx
interface SettingsPanelProps {
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
pluginId: string;
onClose: () => void;
}
@@ -1240,4 +1240,4 @@ pnpm test
- [Google Cloud AI Platform](https://cloud.google.com/ai-platform)
- [Gemini API 文档](https://ai.google.dev/docs)
- [ProxyCast 插件开发指南](../prd/credential-provider-plugin-architecture.md)
- [Lime 插件开发指南](../prd/credential-provider-plugin-architecture.md)
+7 -7
View File
@@ -10,7 +10,7 @@
### 1.1 插件简介
Claude Provider 是 ProxyCast 的综合性 Anthropic/Claude 插件,支持 **多种认证方式** 访问 Claude 模型。无论是官方 OAuth、Claude Code、Console、AWS Bedrock 还是第三方中转服务,都可以通过此插件统一管理。
Claude Provider 是 Lime 的综合性 Anthropic/Claude 插件,支持 **多种认证方式** 访问 Claude 模型。无论是官方 OAuth、Claude Code、Console、AWS Bedrock 还是第三方中转服务,都可以通过此插件统一管理。
### 1.2 支持的认证方式
@@ -102,13 +102,13 @@ claude-provider/
"name": "claude-provider",
"version": "1.0.0",
"description": "Claude Provider - 支持 OAuth、Claude Code、Console、Bedrock、CCR 多种认证方式",
"author": "ProxyCast Team",
"author": "Lime Team",
"homepage": "https://github.com/aiclientproxy/claude-provider",
"license": "MIT",
"plugin_type": "oauth_provider",
"entry": "claude-provider-cli",
"min_proxycast_version": "1.0.0",
"min_lime_version": "1.0.0",
"provider": {
"id": "claude",
@@ -649,13 +649,13 @@ impl ClaudeProvider {
```tsx
// src/index.tsx
import { ProxyCastPluginSDK } from '@proxycast/plugin-sdk';
import { LimePluginSDK } from '@lime/plugin-sdk';
import { CredentialList } from './components/CredentialList';
import { AuthMethodTabs } from './components/AuthMethodTabs';
import { SettingsPanel } from './components/SettingsPanel';
interface PluginProps {
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
pluginId: string;
}
@@ -725,7 +725,7 @@ export default function ClaudeProviderUI({ sdk, pluginId }: PluginProps) {
type AuthMethod = 'oauth' | 'claude_code' | 'console' | 'setup_token' | 'bedrock' | 'ccr';
interface AuthMethodTabsProps {
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
onSuccess: () => void;
onCancel: () => void;
}
@@ -1251,5 +1251,5 @@ pnpm test
- [Anthropic API 文档](https://docs.anthropic.com/)
- [AWS Bedrock Claude](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-claude.html)
- [ProxyCast 插件开发指南](../prd/credential-provider-plugin-architecture.md)
- [Lime 插件开发指南](../prd/credential-provider-plugin-architecture.md)
- [claude-relay-service](https://github.com/aiclientproxy/claude-relay-service)
+7 -7
View File
@@ -10,7 +10,7 @@
### 1.1 插件简介
Codex Provider 是 ProxyCast 的 OpenAI Codex 凭证提供者插件,支持 **OAuth 2.0 + PKCE** 和 **API Key** 两种认证方式访问 OpenAI GPT 系列模型。插件兼容 Codex CLI 的凭证格式,可以直接导入 `~/.codex/auth.json` 使用。
Codex Provider 是 Lime 的 OpenAI Codex 凭证提供者插件,支持 **OAuth 2.0 + PKCE** 和 **API Key** 两种认证方式访问 OpenAI GPT 系列模型。插件兼容 Codex CLI 的凭证格式,可以直接导入 `~/.codex/auth.json` 使用。
### 1.2 支持的认证方式
@@ -91,13 +91,13 @@ codex-provider/
"name": "codex-provider",
"version": "1.0.0",
"description": "Codex Provider - 支持 OAuth 和 API Key 两种认证方式访问 OpenAI GPT 模型",
"author": "ProxyCast Team",
"author": "Lime Team",
"homepage": "https://github.com/aiclientproxy/codex-provider",
"license": "MIT",
"plugin_type": "oauth_provider",
"entry": "codex-provider-cli",
"min_proxycast_version": "1.0.0",
"min_lime_version": "1.0.0",
"provider": {
"id": "codex",
@@ -730,13 +730,13 @@ fn transform_to_codex_format(request: &Value) -> Result<Value> {
```tsx
// src/index.tsx
import { ProxyCastPluginSDK } from '@proxycast/plugin-sdk';
import { LimePluginSDK } from '@lime/plugin-sdk';
import { CredentialList } from './components/CredentialList';
import { AuthMethodTabs } from './components/AuthMethodTabs';
import { SettingsPanel } from './components/SettingsPanel';
interface PluginProps {
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
pluginId: string;
}
@@ -806,7 +806,7 @@ export default function CodexProviderUI({ sdk, pluginId }: PluginProps) {
type AuthMethod = 'oauth' | 'api_key' | 'import';
interface AuthMethodTabsProps {
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
onSuccess: () => void;
onCancel: () => void;
}
@@ -1803,4 +1803,4 @@ pub fn calculate_cost(usage: &UsageData, model: &str) -> CostInfo {
- [OpenAI API 文档](https://platform.openai.com/docs/api-reference)
- [Codex CLI 项目](https://github.com/openai/codex)
- [OAuth 2.0 PKCE 规范](https://datatracker.ietf.org/doc/html/rfc7636)
- [ProxyCast 插件开发指南](../prd/credential-provider-plugin-architecture.md)
- [Lime 插件开发指南](../prd/credential-provider-plugin-architecture.md)
+7 -7
View File
@@ -10,7 +10,7 @@
### 1.1 插件简介
Droid Provider 是 ProxyCast 的 Factory.ai (Droid) 插件,通过 **WorkOS OAuth** 集成 Factory.ai 平台,支持 Claude、OpenAI、Gemini 等多种模型的统一访问。
Droid Provider 是 Lime 的 Factory.ai (Droid) 插件,通过 **WorkOS OAuth** 集成 Factory.ai 平台,支持 Claude、OpenAI、Gemini 等多种模型的统一访问。
### 1.2 支持的认证方式
@@ -105,13 +105,13 @@ droid-provider/
"name": "droid-provider",
"version": "1.0.0",
"description": "Droid Provider - Factory.ai 集成,支持 WorkOS OAuth 和 API Key 模式",
"author": "ProxyCast Team",
"author": "Lime Team",
"homepage": "https://github.com/aiclientproxy/droid-provider",
"license": "MIT",
"plugin_type": "oauth_provider",
"entry": "droid-provider-cli",
"min_proxycast_version": "1.0.0",
"min_lime_version": "1.0.0",
"provider": {
"id": "droid",
@@ -1538,13 +1538,13 @@ impl DroidRelayService {
```tsx
// src/index.tsx
import { ProxyCastPluginSDK } from '@proxycast/plugin-sdk';
import { LimePluginSDK } from '@lime/plugin-sdk';
import { CredentialList } from './components/CredentialList';
import { AuthMethodTabs } from './components/AuthMethodTabs';
import { SettingsPanel } from './components/SettingsPanel';
interface PluginProps {
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
pluginId: string;
}
@@ -1614,7 +1614,7 @@ export default function DroidProviderUI({ sdk, pluginId }: PluginProps) {
type AuthMethod = 'workos_oauth' | 'api_key' | 'manual';
interface AuthMethodTabsProps {
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
onSuccess: () => void;
onCancel: () => void;
}
@@ -2025,5 +2025,5 @@ pnpm test
- [Factory.ai 官网](https://factory.ai/)
- [WorkOS 文档](https://workos.com/docs/)
- [ProxyCast 插件开发指南](../prd/credential-provider-plugin-architecture.md)
- [Lime 插件开发指南](../prd/credential-provider-plugin-architecture.md)
- [claude-relay-service](https://github.com/aiclientproxy/claude-relay-service)
+6 -6
View File
@@ -10,7 +10,7 @@
### 1.1 插件简介
Gemini Provider 是 ProxyCast 的 Google Gemini 凭证提供者插件,支持 **OAuth 2.0 + PKCE**(Gemini CLI 兼容)和 **API Key**(Google AI Studio)两种认证方式。插件通过 Google Code Assist API 访问 Gemini 模型,支持个人 Google 账户和 Google Cloud/Workspace 企业账户。
Gemini Provider 是 Lime 的 Google Gemini 凭证提供者插件,支持 **OAuth 2.0 + PKCE**(Gemini CLI 兼容)和 **API Key**(Google AI Studio)两种认证方式。插件通过 Google Code Assist API 访问 Gemini 模型,支持个人 Google 账户和 Google Cloud/Workspace 企业账户。
### 1.2 支持的认证方式
@@ -93,13 +93,13 @@ gemini-provider/
"name": "gemini-provider",
"version": "1.0.0",
"description": "Gemini Provider - 支持 OAuth 和 API Key 两种认证方式访问 Google Gemini 模型",
"author": "ProxyCast Team",
"author": "Lime Team",
"homepage": "https://github.com/aiclientproxy/gemini-provider",
"license": "MIT",
"plugin_type": "oauth_provider",
"entry": "gemini-provider-cli",
"min_proxycast_version": "1.0.0",
"min_lime_version": "1.0.0",
"provider": {
"id": "gemini",
@@ -881,13 +881,13 @@ pub fn convert_gemini_response(
```tsx
// src/index.tsx
import { ProxyCastPluginSDK } from '@proxycast/plugin-sdk';
import { LimePluginSDK } from '@lime/plugin-sdk';
import { CredentialList } from './components/CredentialList';
import { AuthMethodTabs } from './components/AuthMethodTabs';
import { SettingsPanel } from './components/SettingsPanel';
interface PluginProps {
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
pluginId: string;
}
@@ -1532,4 +1532,4 @@ pnpm test
- [Gemini API 文档](https://ai.google.dev/docs)
- [Google Cloud OAuth 2.0](https://developers.google.com/identity/protocols/oauth2)
- [Gemini CLI 项目](https://github.com/google/gemini-cli)
- [ProxyCast 插件开发指南](../prd/credential-provider-plugin-architecture.md)
- [Lime 插件开发指南](../prd/credential-provider-plugin-architecture.md)
+9 -9
View File
@@ -10,7 +10,7 @@
### 1.1 插件简介
Kiro Provider 是 ProxyCast 的 OAuth Provider 插件,用于对接 **AWS CodeWhisperer** (Kiro IDE) 服务。它将 Anthropic/OpenAI 协议请求转换为 CodeWhisperer 协议,并处理复杂的风控逻辑。
Kiro Provider 是 Lime 的 OAuth Provider 插件,用于对接 **AWS CodeWhisperer** (Kiro IDE) 服务。它将 Anthropic/OpenAI 协议请求转换为 CodeWhisperer 协议,并处理复杂的风控逻辑。
### 1.2 核心能力
@@ -85,13 +85,13 @@ kiro-provider/
"name": "kiro-provider",
"version": "1.0.0",
"description": "Kiro (AWS CodeWhisperer) OAuth Provider - 支持 Claude 模型",
"author": "ProxyCast Team",
"author": "Lime Team",
"homepage": "https://github.com/aiclientproxy/kiro-provider",
"license": "MIT",
"plugin_type": "oauth_provider",
"entry": "kiro-provider-cli",
"min_proxycast_version": "1.0.0",
"min_lime_version": "1.0.0",
"provider": {
"id": "kiro",
@@ -596,13 +596,13 @@ impl CwToAnthropicTranslator {
```tsx
// src/index.tsx
import { ProxyCastPluginSDK } from '@proxycast/plugin-sdk';
import { LimePluginSDK } from '@lime/plugin-sdk';
import { CredentialList } from './components/CredentialList';
import { KiroForm } from './components/KiroForm';
import { SettingsPanel } from './components/SettingsPanel';
interface PluginProps {
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
pluginId: string;
}
@@ -676,7 +676,7 @@ type BrowserMode = 'system' | 'playwright';
type OAuthProvider = 'google' | 'github' | 'builder_id';
interface KiroFormProps {
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
onSuccess: () => void;
onCancel: () => void;
}
@@ -737,7 +737,7 @@ interface LoginModeProps {
oauthProvider: OAuthProvider;
setOAuthProvider: (provider: OAuthProvider) => void;
playwrightStatus?: PlaywrightStatus;
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
onSuccess: () => void;
}
@@ -910,7 +910,7 @@ export function BrowserModeSelector({ value, onChange, playwrightStatus }: Brows
interface CredentialListProps {
credentials: Credential[];
onRefresh: () => void;
sdk: ProxyCastPluginSDK;
sdk: LimePluginSDK;
}
export function CredentialList({ credentials, onRefresh, sdk }: CredentialListProps) {
@@ -1252,4 +1252,4 @@ pnpm test
- [AWS CodeWhisperer 文档](https://docs.aws.amazon.com/codewhisperer/)
- [Kiro IDE](https://kiro.dev/)
- [ProxyCast 插件开发指南](../prd/credential-provider-plugin-architecture.md)
- [Lime 插件开发指南](../prd/credential-provider-plugin-architecture.md)
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -1,4 +1,4 @@
# ProxyCast 创作类 AI Agent 平台 - 产品介绍
# Lime 创作类 AI Agent 平台 - 产品介绍
> 版本: 2.0.0
> 更新: 2026-02-16
@@ -10,7 +10,7 @@
**面向创作者的一站式 AI Agent 平台**
ProxyCast 不是单点工具,而是一条完整创作链路:
Lime 不是单点工具,而是一条完整创作链路:
- 从灵感讨论开始
- 到文本与图片产出
@@ -107,7 +107,7 @@ ProxyCast 不是单点工具,而是一条完整创作链路:
## 七、进阶能力(可选)
对于开发者或自动化场景,ProxyCast 还提供:
对于开发者或自动化场景,Lime 还提供:
- 本地 API 接入
- MCP 工具扩展
+10 -10
View File
@@ -14,7 +14,7 @@
---
## 值得 Proxycast 参考的设计
## 值得 Lime 参考的设计
### 1. 守护进程 + 客户端架构 ⭐⭐⭐
@@ -48,7 +48,7 @@ async function dispatch(line: string, socket: Socket) {
}
```
**Proxycast 应用:**
**Lime 应用:**
- ✅ **替代 Tauri event 的高吞吐方案** - 当事件推送超过 100/s 时,切换到本地 Unix Socket
- ✅ **守护进程管理浏览器实例** - 避免每次命令都启动新浏览器
- ✅ **命令-响应模式** - 清晰的请求/响应边界,便于错误处理
@@ -90,7 +90,7 @@ async function launch() {
2. **预注入 Hook** - 使用 `addInitScript` 在页面加载前注入 React DevTools hook
3. **自动打开 DevTools** - `--auto-open-devtools-for-tabs` 确保扩展激活
**Proxycast 应用:**
**Lime 应用:**
- ✅ **扩展 CDP 能力** - 不仅仅是原始 CDP,还可以加载自定义扩展
- ✅ **预注入脚本** - 在页面加载前注入监控/调试脚本
- ✅ **持久化上下文** - 使用 `launchPersistentContext` 保持会话状态
@@ -128,7 +128,7 @@ export async function inspect(page: Page, nodeId: number) {
}
```
**Proxycast 应用:**
**Lime 应用:**
- ✅ **深度调试能力** - 不仅看到 DOM,还能看到 React 组件结构
- ✅ **状态检查** - 检查组件的 props/hooks/state
- ✅ **源码定位** - 通过 source map 定位到原始源码位置
@@ -184,7 +184,7 @@ export async function unlock() {
3. **Unlock** - 释放锁,让动态数据加载
4. **Analyze** - 对比 locked/unlocked 状态,识别哪些组件是动态的
**Proxycast 应用:**
**Lime 应用:**
- ✅ **性能分析** - 识别哪些组件导致页面加载慢
- ✅ **SSR/CSR 边界** - 清晰看到服务端渲染和客户端渲染的边界
- ✅ **优化指导** - 帮助用户优化 PPR shell,提升首屏加载速度
@@ -246,7 +246,7 @@ export function inspect(idx: number) {
}
```
**Proxycast 应用:**
**Lime 应用:**
- ✅ **完整的 Network 追踪** - 记录所有请求/响应
- ✅ **性能分析** - 识别慢请求
- ✅ **调试 API 调用** - 检查请求/响应内容
@@ -290,7 +290,7 @@ async function getConsumer(url: string) {
}
```
**Proxycast 应用:**
**Lime 应用:**
- ✅ **错误定位** - 将压缩代码的错误映射到原始源码
- ✅ **组件定位** - 显示组件在源码中的位置
- ✅ **调试体验** - 让用户看到可读的源码,而不是压缩后的代码
@@ -327,7 +327,7 @@ export async function errors() {
}
```
**Proxycast 应用:**
**Lime 应用:**
- ✅ **统一错误收集** - 收集构建错误、运行时错误、Console 错误
- ✅ **结构化错误** - 提供完整的堆栈信息和源码位置
- ✅ **错误分类** - 区分不同类型的错误,便于排查
@@ -352,7 +352,7 @@ export async function errors() {
└─────────────────────┘
```
### Proxycast 当前架构
### Lime 当前架构
```
┌─────────────┐
│ 前端 UI │
@@ -505,4 +505,4 @@ impl ReactDevTools {
5. **Source Map 支持** - 将压缩代码映射到原始源码
6. **完整的 Network 追踪** - 记录所有请求/响应
这些设计可以直接应用到 Proxycast 的 Phase 2-3 实现中,特别是守护进程架构和预注入脚本能力。
这些设计可以直接应用到 Lime 的 Phase 2-3 实现中,特别是守护进程架构和预注入脚本能力。
+21 -21
View File
@@ -1,4 +1,4 @@
# 基于 CDP 的远程浏览器实时流控与调试方案(Proxycast 落地版)
# 基于 CDP 的远程浏览器实时流控与调试方案(Lime 落地版)
> 融合 NextBrowser 特征调查 + Codex 架构设计的务实实施方案
@@ -10,7 +10,7 @@
2. **画面流通道**: 基于 `Page.startScreencast` 或受控截图轮询输出低延迟页面画面,用于任务执行中的实时观察与回放
### 设计原则
- ✅ **保持现有架构**: 不改动后端优先级模型(aster_compat、proxycast_extension_bridge、cdp_direct 并存)
- ✅ **保持现有架构**: 不改动后端优先级模型(aster_compat、lime_extension_bridge、cdp_direct 并存)
- ✅ **渐进式增强**: 只升级 cdp_direct 从"HTTP 探测初版"到"有状态 CDP 会话后端"
- ✅ **KISS/YAGNI**: 不引入第四套浏览器控制通道,避免过度设计
- ✅ **跨平台兼容**: macOS 与 Windows 都可运行,平台差异仅体现在 Chrome 启动和端口探测
@@ -31,7 +31,7 @@
- 双向交互(观看 + 控制)
- WebSocket 持久连接
**Proxycast 实现优先级:** 🔥 高优先级
**Lime 实现优先级:** 🔥 高优先级
---
@@ -53,7 +53,7 @@
- WebSocket debugger URL: `wss://...`
- 支持多标签页调试
**Proxycast 实现优先级:** 🔥 高优先级
**Lime 实现优先级:** 🔥 高优先级
---
@@ -69,7 +69,7 @@
- 地理定位: 国家/地区/城市/ISP
- 用于绕过地理限制和反爬虫检测
**Proxycast 实现优先级:** 🔥 高优先级
**Lime 实现优先级:** 🔥 高优先级
---
@@ -86,7 +86,7 @@
- Geolocation API 覆盖
- User-Agent 和设备特征模拟
**Proxycast 实现优先级:** 🟡 中优先级
**Lime 实现优先级:** 🟡 中优先级
---
@@ -108,7 +108,7 @@
- 用户级别隔离
- 支持会话刷新
**Proxycast 实现优先级:** 🔥 高优先级
**Lime 实现优先级:** 🔥 高优先级
---
@@ -118,7 +118,7 @@
- 会话过期时自动重新认证
- 支持双因素认证
**Proxycast 实现优先级:** 🟡 中优先级
**Lime 实现优先级:** 🟡 中优先级
---
@@ -133,7 +133,7 @@
- FunCAPTCHA
- 等等
**Proxycast 实现优先级:** 🟢 低优先级 (可集成第三方服务)
**Lime 实现优先级:** 🟢 低优先级 (可集成第三方服务)
---
@@ -142,7 +142,7 @@
- 一次性任务: 指定日期和时间运行
- 循环任务: 每小时/每天/每周/自定义 cron 表达式
**Proxycast 实现优先级:** 🟡 中优先级
**Lime 实现优先级:** 🟡 中优先级
---
@@ -152,7 +152,7 @@
- OAuth 认证
- 自动续期连接
**Proxycast 实现优先级:** 🟢 低优先级
**Lime 实现优先级:** 🟢 低优先级
---
@@ -166,7 +166,7 @@
- JSON
- 超链接
**Proxycast 实现优先级:** 🟡 中优先级
**Lime 实现优先级:** 🟡 中优先级
---
@@ -1100,7 +1100,7 @@ describe('BrowserDebugPanel', () => {
#### 场景 1: 基础会话建立
```bash
# 1. 启动 Proxycast
# 1. 启动 Lime
npm run tauri:dev
# 2. 打开调试面板
@@ -1242,7 +1242,7 @@ npm run tauri:dev
**解决方案**:
1. **独立用户数据目录**
```rust
let user_data_dir = format!("/tmp/proxycast/profile_{}", profile_key);
let user_data_dir = format!("/tmp/lime/profile_{}", profile_key);
let chrome_args = vec![
format!("--user-data-dir={}", user_data_dir),
"--no-first-run",
@@ -1349,7 +1349,7 @@ npm run tauri:dev
3. **用户级别隔离**
```rust
// 每个用户使用独立的加密密钥
let user_salt = format!("proxycast_user_{}", user_id);
let user_salt = format!("lime_user_{}", user_id);
let encryption_key = derive_encryption_key(&user_password, user_salt.as_bytes());
```
@@ -1483,7 +1483,7 @@ npm run tauri:dev
---
## 七、与现有 Proxycast 架构的集成
## 七、与现有 Lime 架构的集成
### 7.1 复用现有模块
@@ -1494,7 +1494,7 @@ npm run tauri:dev
- ✅ DevBridge - 前端与 Tauri 通信,复用事件推送机制
**集成策略**:
1. **不改动现有优先级**: aster_compat、proxycast_extension_bridge、cdp_direct 继续并存
1. **不改动现有优先级**: aster_compat、lime_extension_bridge、cdp_direct 继续并存
2. **只增强 cdp_direct**: 从 HTTP 探测升级为有状态 WebSocket 会话
3. **保持接口兼容**: `browser_execute_action` 保持现有签名,补充 `session_id`/`target_id` 返回值
@@ -1587,7 +1587,7 @@ NextBrowser 的核心价值在于:
3. **远程调试** - CDP Debugger 提供专业调试能力
### 实施策略
Proxycast 已经具备了 CDP 基础设施,采用**渐进式增强**策略:
Lime 已经具备了 CDP 基础设施,采用**渐进式增强**策略:
1. **Phase 1 (2-3 周)**: 核心 CDP 会话 - 建立稳定的 WebSocket 连接和统一事件模型
2. **Phase 2 (1-2 周)**: 画面流通道 - 实现 screencast + screenshot fallback
3. **Phase 3 (1-2 周)**: Profiles 持久化 - 实现 Cookies 加密存储
@@ -1613,7 +1613,7 @@ Proxycast 已经具备了 CDP 基础设施,采用**渐进式增强**策略:
## 九、基于当前代码库的差距复盘(截至 2026-03-15)
> 本节用于校正文档前文的“规划态”描述,按当前仓库真实实现判断 Proxycast 已做到什么、还缺什么,以及后续应如何按基础设施优先推进。
> 本节用于校正文档前文的“规划态”描述,按当前仓库真实实现判断 Lime 已做到什么、还缺什么,以及后续应如何按基础设施优先推进。
### 9.1 当前已经具备的能力底座
@@ -1982,7 +1982,7 @@ Proxycast 已经具备了 CDP 基础设施,采用**渐进式增强**策略:
- `webhook` 当前会输出并透传:
- payload 字段 `delivery_attempt_id`
- 请求头 `Idempotency-Key`
- 请求头 `X-Proxycast-Delivery-Attempt-Id`
- 请求头 `X-Lime-Delivery-Attempt-Id`
- `google_sheets` 当前会在每一行前置:
- `delivery_attempt_id`
- `run_id`
@@ -2057,7 +2057,7 @@ Proxycast 已经具备了 CDP 基础设施,采用**渐进式增强**策略:
### 9.7 结论
从代码现状看,Proxycast 并不是“还没有浏览器底座”,而是已经跨过了最难的第一步:
从代码现状看,Lime 并不是“还没有浏览器底座”,而是已经跨过了最难的第一步:
- 已有实时画面
- 已有 CDP 会话
- 已有人工接管
+3 -3
View File
@@ -1,10 +1,10 @@
# ProxyCast 测试体系
# Lime 测试体系
> 基于 Anthropic AI Agent 评估指南与 Orchids Bridge 项目实践
## 概述
ProxyCast 作为 AI API 代理和 Agent 集成平台,需要一套完整的测试体系来确保:
Lime 作为 AI API 代理和 Agent 集成平台,需要一套完整的测试体系来确保:
- API 代理的正确性和稳定性
- 凭证池管理的可靠性
- Aster Agent 集成的功能完整性
@@ -14,7 +14,7 @@ ProxyCast 作为 AI API 代理和 Agent 集成平台,需要一套完整的测
```
┌─────────────────────────────────────────────────────────────────┐
│ ProxyCast 测试金字塔 │
│ Lime 测试金字塔 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ │
+3 -3
View File
@@ -1,16 +1,16 @@
# ProxyCast Agent 评估指南
# Lime Agent 评估指南
> 基于 Anthropic AI Agent 评估指南的实践
## 概述
ProxyCast 集成了 Aster Agent,需要专门的评估体系来确保 Agent 行为的正确性和稳定性。本指南基于 Anthropic 官方评估指南和 Orchids Bridge 项目的实践经验。
Lime 集成了 Aster Agent,需要专门的评估体系来确保 Agent 行为的正确性和稳定性。本指南基于 Anthropic 官方评估指南和 Orchids Bridge 项目的实践经验。
## 核心概念
### 评估术语
| 术语 | 定义 | ProxyCast 示例 |
| 术语 | 定义 | Lime 示例 |
|------|------|----------------|
| **Task** | 单个测试任务 | "使用 Agent 读取文件并总结" |
| **Trial** | 对任务的一次尝试 | 同一任务运行 5 次 |
+2 -2
View File
@@ -1,10 +1,10 @@
# ProxyCast E2E 测试指南
# Lime E2E 测试指南
> 端到端测试验证完整用户流程
## 概述
E2E 测试模拟真实用户操作,验证从前端到后端的完整流程。ProxyCast 使用 Tauri 框架,E2E 测试需要覆盖:
E2E 测试模拟真实用户操作,验证从前端到后端的完整流程。Lime 使用 Tauri 框架,E2E 测试需要覆盖:
- 桌面应用启动和初始化
- 用户界面交互
+1 -1
View File
@@ -1,4 +1,4 @@
# ProxyCast 集成测试指南
# Lime 集成测试指南
> 测试模块间的协作和数据流
+1 -1
View File
@@ -4,7 +4,7 @@
## 概述
Agent 测试验证 Aster Agent 在 ProxyCast 中的集成,包括:
Agent 测试验证 Aster Agent 在 Lime 中的集成,包括:
- 基础对话功能
- 流式响应
- 工具调用
+1 -1
View File
@@ -4,7 +4,7 @@
## 概述
协议转换器是 ProxyCast 的核心模块,负责在不同 API 格式之间转换。测试需要覆盖:
协议转换器是 Lime 的核心模块,负责在不同 API 格式之间转换。测试需要覆盖:
- 消息格式转换
- 流式响应转换
- 工具调用转换
+2 -2
View File
@@ -1,10 +1,10 @@
# ProxyCast 单元测试指南
# Lime 单元测试指南
> 针对独立模块的确定性测试
## 概述
单元测试是测试金字塔的基础,覆盖最小的可测试单元。ProxyCast 的单元测试主要针对:
单元测试是测试金字塔的基础,覆盖最小的可测试单元。Lime 的单元测试主要针对:
- 协议转换器
- Provider 模块
- 工具函数
+26 -26
View File
@@ -4,26 +4,26 @@
## 架构说明
ProxyCast 的 Skills 集成基于 aster-rust 框架的 `SkillTool`:
Lime 的 Skills 集成基于 aster-rust 框架的 `SkillTool`:
```
用户消息 → AI Agent → SkillTool → global_registry → 执行 Skill
↑
|
load_proxycast_skills() 加载 ~/.proxycast/skills/
load_lime_skills() 加载 ~/.lime/skills/
```
关键组件:
- `AsterAgentState::load_proxycast_skills()` - 启动时加载 Skills
- `AsterAgentState::reload_proxycast_skills()` - 安装/卸载后刷新
- `AsterAgentState::load_lime_skills()` - 启动时加载 Skills
- `AsterAgentState::reload_lime_skills()` - 安装/卸载后刷新
- `aster::skills::global_registry()` - 全局 Skill 注册表
- `aster::skills::SkillTool` - AI 调用 Skills 的工具
## 前置条件
1. ProxyCast 应用已构建并可运行
1. Lime 应用已构建并可运行
2. 至少配置了一个可用的 AI Provider(如 OpenAI API Key)
3. 终端可以访问 `~/.proxycast/skills/` 目录
3. 终端可以访问 `~/.lime/skills/` 目录
## 测试场景
@@ -35,8 +35,8 @@ ProxyCast 的 Skills 集成基于 aster-rust 框架的 `SkillTool`:
1. 创建测试 Skill:
```bash
mkdir -p ~/.proxycast/skills/test-greeting
cat > ~/.proxycast/skills/test-greeting/SKILL.md << 'EOF'
mkdir -p ~/.lime/skills/test-greeting
cat > ~/.lime/skills/test-greeting/SKILL.md << 'EOF'
---
name: test-greeting
description: 一个简单的问候技能,用于测试 Skills 集成
@@ -46,21 +46,21 @@ description: 一个简单的问候技能,用于测试 Skills 集成
当用户请求问候时,使用以下格式回复:
"你好!我是 ProxyCast 助手,很高兴为你服务!"
"你好!我是 Lime 助手,很高兴为你服务!"
请始终使用中文回复。
EOF
```
2. 启动 ProxyCast 应用:
2. 启动 Lime 应用:
```bash
cd proxycast && npm run tauri dev
cd lime && npm run tauri dev
```
3. 打开开发者工具(Cmd+Option+I),查看控制台日志
4. **预期结果**:
- 日志中应显示 `[AsterAgent] 成功加载 1 个 ProxyCast Skills 到 global_registry`
- 日志中应显示 `[AsterAgent] 成功加载 1 个 Lime Skills 到 global_registry`
- 日志中应显示 `[AsterAgent] 已注册 Skill: user:test-greeting`
### 场景 2:AI 自动调用 Skill
@@ -71,7 +71,7 @@ cd proxycast && npm run tauri dev
1. 确保测试 Skill 已创建(见场景 1)
2. 在 ProxyCast 聊天界面发送消息:
2. 在 Lime 聊天界面发送消息:
```
请用问候技能跟我打个招呼
```
@@ -79,7 +79,7 @@ cd proxycast && npm run tauri dev
3. **预期结果**:
- AI 应该识别到 `test-greeting` Skill
- AI 应该调用 Skill 并返回问候语
- 响应中应包含 "你好!我是 ProxyCast 助手"
- 响应中应包含 "你好!我是 Lime 助手"
### 场景 3:通过斜杠命令调用 Skill
@@ -102,10 +102,10 @@ cd proxycast && npm run tauri dev
**步骤**:
1. 在 ProxyCast 运行时,创建新 Skill:
1. 在 Lime 运行时,创建新 Skill:
```bash
mkdir -p ~/.proxycast/skills/test-calculator
cat > ~/.proxycast/skills/test-calculator/SKILL.md << 'EOF'
mkdir -p ~/.lime/skills/test-calculator
cat > ~/.lime/skills/test-calculator/SKILL.md << 'EOF'
---
name: test-calculator
description: 一个简单的计算器技能
@@ -119,7 +119,7 @@ description: 一个简单的计算器技能
EOF
```
2. 在 ProxyCast Skills 页面点击刷新(或重新进入页面)
2. 在 Lime Skills 页面点击刷新(或重新进入页面)
3. 发送消息:
```
@@ -138,10 +138,10 @@ EOF
1. 删除测试 Skill:
```bash
rm -rf ~/.proxycast/skills/test-greeting
rm -rf ~/.lime/skills/test-greeting
```
2. 在 ProxyCast Skills 页面点击刷新
2. 在 Lime Skills 页面点击刷新
3. 发送消息:
```
@@ -157,15 +157,15 @@ rm -rf ~/.proxycast/skills/test-greeting
测试完成后,清理测试 Skills:
```bash
rm -rf ~/.proxycast/skills/test-greeting
rm -rf ~/.proxycast/skills/test-calculator
rm -rf ~/.lime/skills/test-greeting
rm -rf ~/.lime/skills/test-calculator
```
## 常见问题排查
### Skills 没有被加载
1. 检查目录是否存在:`ls -la ~/.proxycast/skills/`
1. 检查目录是否存在:`ls -la ~/.lime/skills/`
2. 检查 SKILL.md 文件格式是否正确
3. 查看应用日志中是否有错误信息
@@ -177,7 +177,7 @@ rm -rf ~/.proxycast/skills/test-calculator
### 动态刷新不生效
1. 确认调用了 `reload_proxycast_skills()`
1. 确认调用了 `reload_lime_skills()`
2. 检查日志中是否有刷新相关的输出
3. 尝试重启应用
@@ -192,7 +192,7 @@ test('AI should auto-invoke skill based on intent', async ({ page }) => {
await createTestSkill('test-greeting');
// 2. 启动应用
await launchProxyCast();
await launchLime();
// 3. 发送消息
await page.fill('[data-testid="chat-input"]', '请用问候技能跟我打招呼');
@@ -200,6 +200,6 @@ test('AI should auto-invoke skill based on intent', async ({ page }) => {
// 4. 验证响应
await expect(page.locator('[data-testid="chat-message"]'))
.toContainText('你好!我是 ProxyCast 助手');
.toContainText('你好!我是 Lime 助手');
});
```
+2 -2
View File
@@ -1,4 +1,4 @@
# ProxyCast AI Agent 测试指南
# Lime AI Agent 测试指南
> 基于 Anthropic 评估理论与实践经验的 AI Agent 测试策略
@@ -789,4 +789,4 @@ async fn test_with_transcript() {
---
*本文档定义了 ProxyCast AI Agent 功能的测试策略,随着开发进展会持续更新。*
*本文档定义了 Lime AI Agent 功能的测试策略,随着开发进展会持续更新。*
@@ -1,10 +1,10 @@
# Proxycast Chrome Bridge 扩展
# Lime Chrome Bridge 扩展
用于把 Chrome 页面能力接入 Proxycast 的浏览器桥接通道,供各业务 AI Agent 通过统一 `browser_execute_action` / MCP 浏览器工具调用。
用于把 Chrome 页面能力接入 Lime 的浏览器桥接通道,供各业务 AI Agent 通过统一 `browser_execute_action` / MCP 浏览器工具调用。
## 功能
- Observer 通道自动连接:`/proxycast-chrome-observer/Proxycast_Key=...`
- Observer 通道自动连接:`/lime-chrome-observer/Lime_Key=...`
- 页面信息上报:标题、URL、Markdown
- 远程指令执行:`open_url` / `click` / `type` / `scroll` / `switch_tab` / `list_tabs` / `go_back` 等
- 弹窗配置:`serverUrl`、`bridgeKey`、`profileKey`、监控开关、手动抓取
@@ -14,21 +14,21 @@
1. 打开 Chrome `chrome://extensions`
2. 打开右上角「开发者模式」
3. 点击「加载已解压的扩展程序」
4. 选择目录:`extensions/proxycast-chrome`
4. 选择目录:`extensions/lime-chrome`
## 配置
点击扩展图标打开弹窗,配置:
- `Server URL`:Proxycast 服务地址,例如 `ws://127.0.0.1:8999`
- `Bridge Key`:Proxycast 服务 API Key(与后端 `Proxycast_Key` 一致)
- `Server URL`:Lime 服务地址,例如 `ws://127.0.0.1:8999`
- `Bridge Key`:Lime 服务 API Key(与后端 `Lime_Key` 一致)
- `Profile Key`:浏览器会话隔离键(建议与业务场景对应,如 `research_a`)
点击「保存并重连」后,扩展会建立 observer WebSocket 连接。
## 验证
1. 在 Proxycast 设置中查看 `get_chrome_bridge_status`,`observer_count` 应大于 0
1. 在 Lime 设置中查看 `get_chrome_bridge_status`,`observer_count` 应大于 0
2. 调用 `browser_execute_action`:
```json
@@ -22,17 +22,17 @@ let lastSettings = { ...DEFAULT_SETTINGS };
function logInfo(message, payload) {
if (payload === undefined) {
console.log(`[ProxycastBridge] ${message}`);
console.log(`[LimeBridge] ${message}`);
} else {
console.log(`[ProxycastBridge] ${message}`, payload);
console.log(`[LimeBridge] ${message}`, payload);
}
}
function logWarn(message, payload) {
if (payload === undefined) {
console.warn(`[ProxycastBridge] ${message}`);
console.warn(`[LimeBridge] ${message}`);
} else {
console.warn(`[ProxycastBridge] ${message}`, payload);
console.warn(`[LimeBridge] ${message}`, payload);
}
}
@@ -59,7 +59,7 @@ function buildObserverUrl(settings) {
const normalized = serverUrl.replace(/\/$/, "");
const profileKey = encodeURIComponent(settings.profileKey || "default");
return `${normalized}/proxycast-chrome-observer/${encodeURIComponent(bridgeKey)}?profileKey=${profileKey}`;
return `${normalized}/lime-chrome-observer/${encodeURIComponent(bridgeKey)}?profileKey=${profileKey}`;
}
async function connectObserver(forceReconnect = false) {
@@ -1,17 +1,21 @@
// 使用 IIFE 避免重复注入时的变量冲突
(function () {
// 检查是否已经注入过
if (window.__PROXYCAST_CONTENT_SCRIPT_LOADED__) {
if (
window.__LIME_CONTENT_SCRIPT_LOADED__ ||
window.__PROXYCAST_CONTENT_SCRIPT_LOADED__
) {
return;
}
window.__LIME_CONTENT_SCRIPT_LOADED__ = true;
window.__PROXYCAST_CONTENT_SCRIPT_LOADED__ = true;
let refCounter = 0;
const REF_ATTR = "proxycast-id";
const REF_ATTR = "lime-id";
function nextRefId() {
refCounter += 1;
return `proxycast-${refCounter}`;
return `lime-${refCounter}`;
}
function resetRefs() {
@@ -1,7 +1,7 @@
{
"manifest_version": 3,
"name": "Proxycast Browser Bridge",
"description": "Connect Chrome tabs with Proxycast browser runtime for AI agents.",
"name": "Lime Browser Bridge",
"description": "Connect Chrome tabs with Lime browser runtime for AI agents.",
"version": "0.1.0",
"permissions": ["storage", "tabs", "activeTab", "scripting", "clipboardRead"],
"host_permissions": ["http://*/*", "https://*/*"],
@@ -9,7 +9,7 @@
"service_worker": "background.js"
},
"action": {
"default_title": "Proxycast Browser Bridge",
"default_title": "Lime Browser Bridge",
"default_popup": "popup.html"
},
"content_scripts": [
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Proxycast Browser Bridge</title>
<title>Lime Browser Bridge</title>
<style>
* {
margin: 0;
@@ -169,8 +169,8 @@
</head>
<body>
<div class="header">
<h1>Proxycast Browser Bridge</h1>
<p>连接 Chrome 与 Proxycast 服务</p>
<h1>Lime Browser Bridge</h1>
<p>连接 Chrome 与 Lime 服务</p>
</div>
<div class="status-row">
@@ -185,7 +185,7 @@
<div class="quick-config">
<div class="quick-config-title">🚀 一键配置</div>
<div class="quick-config-hint">从剪贴板粘贴配置(在 ProxyCast 页面点击"复制配置")</div>
<div class="quick-config-hint">从剪贴板粘贴配置(在 Lime 页面点击"复制配置")</div>
<div class="quick-config-buttons">
<button id="pasteConfigBtn" class="btn btn-small">粘贴配置</button>
<button id="clearConfigBtn" class="btn btn-small">清除配置</button>
@@ -208,7 +208,7 @@
type="text"
id="bridgeKey"
class="form-input"
placeholder="输入 Proxycast API Key"
placeholder="输入 Lime API Key"
/>
</div>
@@ -33,7 +33,7 @@ function buildObserverEndpoint(serverUrl, bridgeKey, profileKey) {
if (!base || !key) {
return "Observer URL: 未配置";
}
return `Observer URL: ${base}/proxycast-chrome-observer/Proxycast_Key=${encodeURIComponent(key)}?profileKey=${profile}`;
return `Observer URL: ${base}/lime-chrome-observer/Lime_Key=${encodeURIComponent(key)}?profileKey=${profile}`;
}
function applyStatus(status) {
@@ -99,7 +99,7 @@ async function loadInitialState() {
const status = await sendMessage({ type: "GET_STATUS" });
applyStatus(status || {});
} catch (error) {
console.warn("[ProxycastBridgePopup] 获取状态失败", error?.message || String(error));
console.warn("[LimeBridgePopup] 获取状态失败", error?.message || String(error));
}
}
@@ -134,7 +134,7 @@ async function saveAndReconnect() {
saveBtnEl.textContent = originalText;
saveBtnEl.disabled = false;
}, 1200);
console.warn("[ProxycastBridgePopup] 保存设置失败", error?.message || String(error));
console.warn("[LimeBridgePopup] 保存设置失败", error?.message || String(error));
}
}
@@ -142,7 +142,7 @@ async function toggleConnection() {
try {
await sendMessage({ type: "TOGGLE_CONNECTION" });
} catch (error) {
console.warn("[ProxycastBridgePopup] 切换连接失败", error?.message || String(error));
console.warn("[LimeBridgePopup] 切换连接失败", error?.message || String(error));
}
}
@@ -150,7 +150,7 @@ async function toggleMonitoring() {
try {
await sendMessage({ type: "TOGGLE_MONITORING" });
} catch (error) {
console.warn("[ProxycastBridgePopup] 切换监控失败", error?.message || String(error));
console.warn("[LimeBridgePopup] 切换监控失败", error?.message || String(error));
}
}
@@ -162,7 +162,7 @@ async function capturePageNow() {
try {
await sendMessage({ type: "REQUEST_PAGE_CAPTURE" });
} catch (error) {
console.warn("[ProxycastBridgePopup] 请求抓取失败", error?.message || String(error));
console.warn("[LimeBridgePopup] 请求抓取失败", error?.message || String(error));
} finally {
setTimeout(() => {
captureBtnEl.textContent = originalText;
@@ -208,7 +208,7 @@ async function pasteConfigFromClipboard() {
pasteBtn.textContent = originalText;
pasteBtn.disabled = false;
}, 1500);
console.warn("[ProxycastBridgePopup] 粘贴配置失败", error?.message || String(error));
console.warn("[LimeBridgePopup] 粘贴配置失败", error?.message || String(error));
}
}
+31
View File
@@ -0,0 +1,31 @@
cask "lime" do
version "0.37.0"
on_arm do
sha256 "REPLACE_WITH_ARM64_SHA256"
url "https://github.com/aiclientproxy/lime/releases/download/v#{version}/Lime_#{version}_aarch64.dmg"
end
on_intel do
sha256 "REPLACE_WITH_X64_SHA256"
url "https://github.com/aiclientproxy/lime/releases/download/v#{version}/Lime_#{version}_x64.dmg"
end
name "Lime"
desc "AI 代理服务桌面应用 - 多 Provider 凭证池管理"
homepage "https://github.com/aiclientproxy/lime"
livecheck do
url :url
strategy :github_latest
end
app "Lime.app"
zap trash: [
"~/Library/Application Support/com.lime.app",
"~/Library/Caches/com.lime.app",
"~/Library/Preferences/com.lime.app.plist",
"~/Library/Saved Application State/com.lime.app.savedState",
]
end
-31
View File
@@ -1,31 +0,0 @@
cask "proxycast" do
version "0.37.0"
on_arm do
sha256 "REPLACE_WITH_ARM64_SHA256"
url "https://github.com/aiclientproxy/proxycast/releases/download/v#{version}/ProxyCast_#{version}_aarch64.dmg"
end
on_intel do
sha256 "REPLACE_WITH_X64_SHA256"
url "https://github.com/aiclientproxy/proxycast/releases/download/v#{version}/ProxyCast_#{version}_x64.dmg"
end
name "ProxyCast"
desc "AI 代理服务桌面应用 - 多 Provider 凭证池管理"
homepage "https://github.com/aiclientproxy/proxycast"
livecheck do
url :url
strategy :github_latest
end
app "ProxyCast.app"
zap trash: [
"~/Library/Application Support/com.proxycast.app",
"~/Library/Caches/com.proxycast.app",
"~/Library/Preferences/com.proxycast.app.plist",
"~/Library/Saved Application State/com.proxycast.app.savedState",
]
end
+8 -8
View File
@@ -1,6 +1,6 @@
# ProxyCast Homebrew Tap
# Lime Homebrew Tap
ProxyCast 的 Homebrew Cask 分发仓库。
Lime 的 Homebrew Cask 分发仓库。
## 安装
@@ -8,20 +8,20 @@ ProxyCast 的 Homebrew Cask 分发仓库。
# 添加 tap
brew tap terryso/tap
# 安装 ProxyCast
brew install --cask proxycast
# 安装 Lime
brew install --cask lime
```
## 更新
```bash
brew upgrade --cask proxycast
brew upgrade --cask lime
```
## 卸载
```bash
brew uninstall --cask proxycast
brew uninstall --cask lime
```
## 维护说明
@@ -29,8 +29,8 @@ brew uninstall --cask proxycast
### 手动更新版本
1. 下载新版本的 DMG 文件
2. 计算 sha256: `shasum -a 256 ProxyCast_x.x.x_aarch64.dmg`
3. 更新 `Casks/proxycast.rb` 中的 `version` 和 `sha256`
2. 计算 sha256: `shasum -a 256 Lime_x.x.x_aarch64.dmg`
3. 更新 `Casks/lime.rb` 中的 `version` 和 `sha256`
4. 推送到仓库
### 自动化更新
+8 -8
View File
@@ -1,13 +1,13 @@
#!/bin/bash
# 自动更新 ProxyCast Homebrew Cask 版本
# 自动更新 Lime Homebrew Cask 版本
# 用法: ./update-cask.sh <version>
# 示例: ./update-cask.sh 0.38.0
set -e
VERSION=$1
REPO="aiclientproxy/proxycast"
CASK_FILE="$(dirname "$0")/../Casks/proxycast.rb"
REPO="aiclientproxy/lime"
CASK_FILE="$(dirname "$0")/../Casks/lime.rb"
if [ -z "$VERSION" ]; then
echo "用法: $0 <version>"
@@ -15,11 +15,11 @@ if [ -z "$VERSION" ]; then
exit 1
fi
echo "🔄 更新 ProxyCast Cask 到版本 $VERSION"
echo "🔄 更新 Lime Cask 到版本 $VERSION"
# 下载 DMG 并计算 sha256
ARM64_URL="https://github.com/$REPO/releases/download/v$VERSION/ProxyCast_${VERSION}_aarch64.dmg"
X64_URL="https://github.com/$REPO/releases/download/v$VERSION/ProxyCast_${VERSION}_x64.dmg"
ARM64_URL="https://github.com/$REPO/releases/download/v$VERSION/Lime_${VERSION}_aarch64.dmg"
X64_URL="https://github.com/$REPO/releases/download/v$VERSION/Lime_${VERSION}_x64.dmg"
TEMP_DIR=$(mktemp -d)
trap "rm -rf $TEMP_DIR" EXIT
@@ -43,6 +43,6 @@ sed -i '' "/on_intel do/,/end/ s/sha256 \".*\"/sha256 \"$X64_SHA\"/" "$CASK_FILE
echo "✅ 更新完成!"
echo ""
echo "下一步:"
echo " 1. git add Casks/proxycast.rb"
echo " 2. git commit -m 'chore: bump proxycast to $VERSION'"
echo " 1. git add Casks/lime.rb"
echo " 2. git commit -m 'chore: bump lime to $VERSION'"
echo " 3. git push"
+2 -2
View File
@@ -2,9 +2,9 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="icon" type="image/png" href="/logo.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ProxyCast</title>
<title>Lime</title>
</head>
<body>
<div id="root"></div>
+4 -4
View File
@@ -5,20 +5,20 @@ echo "📊 统一记忆系统 - 性能监控"
echo ""
# 数据库大小
DB_SIZE=$(du -h ~/.proxycast/proxycast.db 2>/dev/null | cut -f1)
DB_SIZE=$(du -h ~/.lime/lime.db 2>/dev/null | cut -f1)
echo "数据库大小: ${DB_SIZE:-未知}"
# 记忆数量
MEMORY_COUNT=$(sqlite3 ~/.proxycast/proxycast.db "SELECT COUNT(*) FROM unified_memory WHERE archived = 0;" 2>/dev/null)
MEMORY_COUNT=$(sqlite3 ~/.lime/lime.db "SELECT COUNT(*) FROM unified_memory WHERE archived = 0;" 2>/dev/null)
echo "记忆数量: ${MEMORY_COUNT:-0}"
# 反馈数量
FEEDBACK_COUNT=$(sqlite3 ~/.proxycast/proxycast.db "SELECT COUNT(*) FROM memory_feedback;" 2>/dev/null)
FEEDBACK_COUNT=$(sqlite3 ~/.lime/lime.db "SELECT COUNT(*) FROM memory_feedback;" 2>/dev/null)
echo "反馈数量: ${FEEDBACK_COUNT:-0}"
# 批准率
if [ "$FEEDBACK_COUNT" -gt 0 ]; then
APPROVE_COUNT=$(sqlite3 ~/.proxycast/proxycast.db "SELECT COUNT(*) FROM memory_feedback WHERE action LIKE '%approve%';" 2>/dev/null)
APPROVE_COUNT=$(sqlite3 ~/.lime/lime.db "SELECT COUNT(*) FROM memory_feedback WHERE action LIKE '%approve%';" 2>/dev/null)
RATE=$(echo "scale=1; $APPROVE_COUNT * 100 / $FEEDBACK_COUNT" | bc 2>/dev/null)
echo "批准率: ${RATE:-0}%"
fi

Some files were not shown because too many files have changed in this diff Show More