主要更新: - 添加启动画面 (SplashScreen) 显示 Logo - 添加全局图标侧边栏 (AppSidebar) 类似 cherry-studio - 更新窗口默认尺寸为 1280x800,最小尺寸 960x600 - 更新应用图标为新 Logo - 重构 Agent 页面布局,简化组件结构 - 修复技能安装/卸载功能 - 修复 Claude 图片识别问题 - Skills 自动注入到 Agent System Prompt
58 KiB
ProxyCast Skills Platform MVP
产品需求文档 (PRD) 版本: 1.2.0 日期: 2025-12-31 状态: 草案
目录
1. 概述
1.1 背景
市场现状
AI Agent 和 Skills 生态正在快速发展:
- Claude Code 等 AI 编码工具普及,催生了大量的 Skills 开发者
- Agent Skills 已成为开放标准(agentskills.io),由 AAIF 基金会维护
- 市场上出现了大量付费 Skills 的卖家
核心痛点
┌─────────────────────────────────────────────────────────────┐
│ 当前市场断层 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Skills 供应商 普通用户 │
│ ┌─────────┐ ┌─────────┐ │
│ │ 写 Skills│ ───── 卖 ────► │ 买了但 │ │
│ │ 很专业 │ │ 不会用 │ │
│ └─────────┘ └─────────┘ │
│ │ │
│ ▼ │
│ 😵 命令行太难 │
│ 😵 不知道怎么安装 │
│ 😵 看不到效果 │
│ 😵 不知道花了多少钱 │
│ │
└─────────────────────────────────────────────────────────────┘
- 普通用户无法使用 - 需要命令行操作,门槛太高
- 效果不可见 - Skills 执行是黑盒,不知道在干什么
- 成本不透明 - 不知道 Token 花在哪里,花了多少
- 体验割裂 - Token 和 Skills 分开购买、分开配置
ProxyCast 的机会
ProxyCast 已有的能力恰好可以解决这些痛点:
| 现有能力 | 解决的痛点 |
|---|---|
| GUI 界面 | 不需要命令行 |
| Flow Monitor | 看到 Skills 在干什么 |
| Credential Pool | 统一管理 Token |
| 插件系统 | 承载和分发 Skills |
| Goose 集成 | Agent 执行引擎(Rust 原生) |
1.2 愿景
ProxyCast 从 AI Proxy 工具升级为 AI 应用平台
成为 Skills 与 Token 供应商 之间的桥梁:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Token 供应商 │ │ Skills 供应商 │ │ 用户 │
│ │ │ │ │ │
│ - OpenAI │ │ - 开发者 │ │ - 普通用户 │
│ - Anthropic │ │ - 专家 │ │ - 企业 │
│ - 中转平台 │ │ - 工作室 │ │ - 开发者 │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
▼
┌─────────────────────────┐
│ ProxyCast │
│ │
│ Token + Skills 桥梁 │
└─────────────────────────┘
1.3 目标用户
| 用户类型 | 描述 | 核心需求 |
|---|---|---|
| 普通用户 | 想用 AI 工具但不会命令行 | 一键安装、可视化操作 |
| Skills 开发者 | 想分发 Skills 给更多用户 | 发布渠道、用户触达 |
| Token 供应商 | 想有更多应用场景 | 流量入口、使用场景 |
| 企业用户 | 想统一管理 AI 资产 | 成本控制、权限管理 |
1.4 核心价值主张
- 零门槛使用 - 不需要命令行,纯 GUI 操作
- 完全透明 - 流量可见、成本可控
- 开放标准 - 兼容 Agent Skills 规范
- 模型无关 - 支持 Claude、GPT、Gemini 等多模型
2. 产品定位
2.1 与 Agent Skills 标准的关系
ProxyCast Skills Platform 完全兼容 Agent Skills 开放标准:
┌─────────────────────────────────────────────────────────────────┐
│ Agent Skills 开放标准 │
│ │
│ 维护者: Anthropic (开放给社区贡献) │
│ 性质: 开放格式,任何 Agent 平台都可以实现 │
│ 规范: github.com/agentskills/agentskills │
│ │
└─────────────────────────────────────────────────────────────────┘
│
│ 兼容
▼
┌─────────────────────────────────────────────────────────────────┐
│ ProxyCast Skills Platform │
│ │
│ 定位: Agent Skills 的 GUI 运行环境 │
│ 差异化: 可视化 + 流量监控 + Token 管理 │
│ │
└─────────────────────────────────────────────────────────────────┘
2.2 Skills 目录结构(遵循标准)
my-skill/
├── SKILL.md # 必需:指令 + 元数据
├── scripts/ # 可选:可执行脚本
├── references/ # 可选:参考文档
└── assets/ # 可选:模板、资源文件
2.3 SKILL.md 格式(遵循标准)
---
name: code-review
description: 智能代码审查,发现潜在问题和优化建议
license: MIT
metadata:
author: ProxyCast Team
version: "1.0.0"
category: development
tags: [code, review, quality]
---
# 代码审查 Skill
## 使用场景
当用户需要审查代码质量、发现潜在 bug 或获取优化建议时使用此 Skill。
## 审查流程
1. 分析代码结构和逻辑
2. 检查常见问题模式
3. 识别安全隐患
4. 提供优化建议
## 输出格式
- 问题列表(按严重程度排序)
- 具体行号和代码片段
- 修复建议
2.4 设计原则:标准兼容 vs 实现自主
核心原则:兼容标准格式,但实现方式可以自主选择。
ProxyCast 不是 Claude Code 的复制品,而是一个独立的 Skills + Token 桥梁平台。
2.4.1 必须兼容(Agent Skills 标准)
这些是开放标准定义的内容,ProxyCast 必须支持:
| 标准内容 | 说明 |
|---|---|
| SKILL.md 格式 | YAML frontmatter + Markdown body |
| 目录结构 | scripts/, references/, assets/ |
| 元数据规范 | name, description, license, metadata.* |
| 仓库兼容 | 支持 anthropics/skills 等标准仓库 |
2.4.2 实现自主(不必照搬 Claude Code)
这些是 Claude Code 的具体实现,ProxyCast 可以有自己的方式:
| Claude Code 实现 | ProxyCast 可以 | 原因 |
|---|---|---|
| Shell Hooks | 不需要 | GUI 应用,不依赖命令行 |
| MCP Servers | 可选集成 | 有自己的 Goose 运行时 |
| Progressive Disclosure | 启动时预加载 | GUI 可以提前展示 |
/skill 命令 |
自然语言触发 | Agent 自动匹配 Skill |
| CLI 安装 | 一键安装 UI | 更友好的用户体验 |
2.4.3 ProxyCast 特有实现
┌─────────────────────────────────────────────────────────────────┐
│ ProxyCast Skills 实现方式 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 启动时: │
│ ├─ 预加载所有已安装 Skills 的 name + description │
│ ├─ 生成 <available_skills> XML │
│ └─ 注入到 Goose Agent System Prompt │
│ │
│ 会话中: │
│ ├─ 用户用自然语言描述任务 │
│ ├─ Agent 根据 description 匹配合适的 Skill │
│ └─ Agent 按需读取 SKILL.md 完整内容 │
│ │
│ 特点: │
│ ├─ 被动式 - 用户不需要主动"选择"或"启用" │
│ ├─ 无感知 - Agent 自动判断是否使用 Skill │
│ └─ 透明 - Flow Monitor 显示 Skill 使用情况 │
│ │
└─────────────────────────────────────────────────────────────────┘
2.5 差异化价值
| 标准提供的 | ProxyCast 额外提供的 |
|---|---|
| 文件格式规范 | GUI 可视化界面 |
| 目录结构约定 | 流量实时监控 |
| 参考实现库 | Token 消耗统计 |
| CLI 工具 | 多模型支持 |
| Skills 商店 | |
| 一键安装 | |
| 成本分析报表 |
3. 核心功能
3.1 Skills 生态架构(双轨模式)
ProxyCast 采用双轨 Skills 生态:保留现有 Claude Code Skills 支持,同时建立 ProxyCast 官方仓库。
┌─────────────────────────────────────────────────────────────────┐
│ ProxyCast Skills 生态 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Skills 来源(多仓库支持): │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ ProxyCast 官方 │ │ Anthropic 官方 │ │ 社区仓库 │ │
│ │ proxycast/skills│ │ anthropics/skills│ │ ComposioHQ/... │ │
│ │ (新增,主推) │ │ (保留,兼容) │ │ (保留,兼容) │ │
│ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │ │
│ └───────────────────┴───────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 统一 Skills 管理层(现有功能增强) │ │
│ │ 位置: 设置 → 扩展 → Skills │ │
│ │ - 多仓库管理(保留现有仓库管理功能) │ │
│ │ - 支持安装到 Claude/Codex/Gemini/ProxyCast │ │
│ │ - 搜索、过滤、安装/卸载 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ AI Agent 集成(新增功能) │ │
│ │ 位置: AI Agent 页面 │ │
│ │ - 被动式:自动加载所有已安装 Skills │ │
│ │ - Skills 注入到 Agent System Prompt │ │
│ │ - 流量监控 + Token 统计 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
3.2 Skills 仓库配置
3.2.1 默认仓库(更新后)
| 仓库 | 说明 | 优先级 |
|---|---|---|
| proxycast/skills | ProxyCast 官方仓库(新增) | 主推 |
| anthropics/skills | Anthropic 官方 Skills | 兼容 |
| ComposioHQ/awesome-claude-skills | 社区精选 | 兼容 |
| cexll/myclaude | 社区贡献 | 兼容 |
3.2.2 ProxyCast 官方仓库规划
github.com/proxycast/skills/
├── README.md # 仓库说明 + 贡献指南
├── CONTRIBUTING.md # 贡献规范
│
├── official/ # 官方 Skills(精选、高质量)
│ ├── code-review/
│ │ ├── SKILL.md
│ │ ├── references/
│ │ └── examples/
│ ├── doc-generator/
│ ├── translator/
│ ├── api-designer/
│ └── test-writer/
│
├── community/ # 社区贡献(经审核)
│ └── ...
│
└── templates/ # Skill 开发模板
├── basic/
└── advanced/
3.2.3 首批官方 Skills
| Skill | 描述 | 分类 |
|---|---|---|
| code-review | 智能代码审查 | 开发 |
| doc-generator | 自动生成文档 | 开发 |
| translator | 多语言翻译 | 通用 |
| api-designer | API 设计助手 | 开发 |
| test-writer | 单元测试生成 | 开发 |
| commit-message | Git 提交信息 | 开发 |
3.3 Skills 管理(复用现有功能)
现有 Skills 管理功能(设置 → 扩展 → Skills)将继续使用,增强点:
| 现有功能 | 增强内容 |
|---|---|
| 仓库管理 | 默认添加 proxycast/skills |
| Skills 列表 | 增加"来源"标签区分官方/社区 |
| 安装/卸载 | 保持不变 |
| 搜索/过滤 | 保持不变 |
3.3.1 Skills 目录
~/.proxycast/skills/ # ProxyCast 应用的 Skills
├── code-review/
├── doc-generator/
└── ...
~/.claude/skills/ # Claude Code 的 Skills(兼容)
├── ...
3.3.2 Skills 生命周期
发现(仓库扫描)→ 安装 → 自动加载 → 被动执行 → 卸载
↑
无需手动启用
3.4 AI Agent 集成(核心新功能)
基于现有 AI Agent 页面扩展,Skills 采用被动式集成。
3.4.1 被动式设计原则
核心理念:Skills 不需要用户手动"选择"或"启用",而是自动加载、被动触发。
┌─────────────────────────────────────────────────────────────────┐
│ 被动式 Skills vs 主动式 Skills │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ❌ 主动式(不采用): │
│ 用户需要先选择要使用的 Skills → 然后描述任务 │
│ │
│ ✅ 被动式(采用): │
│ 用户直接描述任务 → Agent 自动匹配合适的 Skill │
│ │
│ 用户体验差异: │
│ ├─ 主动式: "我要用代码审查 Skill,帮我审查这段代码" │
│ └─ 被动式: "帮我审查这段代码"(Agent 自动使用 code-review) │
│ │
└─────────────────────────────────────────────────────────────────┘
3.4.2 UI 设计(信息展示,非选择器)
在 AI Agent 页面展示已加载的 Skills(只读信息):
┌─────────────────────────────────────────────────────────────────┐
│ 🤖 AI Agent [运行中] ... │
│ 基于 Goose 框架的 AI Agent 对话 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ⚙️ 控制面板 [∧] │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 进程 [▶] [■] │ │
│ │ │ │
│ │ 会话 [claude ▼] [选择模型 ▼] [🗨 创建新会话] │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 📦 已加载 5 个 Skills [管理 Skills] │ │
│ │ │ │
│ │ code-review · translator · doc-generator · ... │ │
│ │ │ │
│ │ 💡 直接描述任务,Agent 会自动使用合适的 Skill │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ [对话区域...] │
│ │
└─────────────────────────────────────────────────────────────────┘
3.4.3 Skills 注入机制(自动,非手动)
系统自动将所有已安装的 Skills 注入到 Agent:
┌─────────────────────────────────────────────────────────────────┐
│ Skills 自动注入流程 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. ProxyCast 启动 / Skills 安装后 │
│ └─ 扫描 ~/.proxycast/skills/ 目录 │
│ │
│ 2. 解析所有 SKILL.md 的 frontmatter │
│ └─ 提取 name + description │
│ │
│ 3. 生成 <available_skills> XML │
│ │
│ 4. 创建 Agent 会话时自动注入 System Prompt │
│ │
│ 5. Agent 根据用户消息自动判断是否需要使用 Skill │
│ ├─ 匹配到: 读取完整 SKILL.md,按指令执行 │
│ └─ 未匹配: 正常对话 │
│ │
└─────────────────────────────────────────────────────────────────┘
3.4.3 Skills Prompt XML 格式
<available_skills>
<skill>
<name>code-review</name>
<description>智能代码审查,发现潜在问题和优化建议</description>
<location>~/.proxycast/skills/code-review/SKILL.md</location>
</skill>
<skill>
<name>translator</name>
<description>多语言翻译,保持专业术语准确性</description>
<location>~/.proxycast/skills/translator/SKILL.md</location>
</skill>
</available_skills>
当用户的请求匹配某个 Skill 的描述时,请使用该 Skill 来完成任务。
3.4.4 执行流程
┌─────────────────────────────────────────────────────────────────┐
│ Skills 执行流程(AI Agent 集成) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. 用户在 AI Agent 选择要启用的 Skills │
│ │ │
│ ▼ │
│ 2. 创建会话时,Skills 信息注入 System Prompt │
│ │ │
│ ▼ │
│ 3. 用户发送消息(自然语言) │
│ │ │
│ ▼ │
│ 4. Agent 判断是否需要使用 Skill │
│ │ │
│ ├──► 需要: 加载 SKILL.md 内容,按指令执行 │
│ │ │
│ └──► 不需要: 正常对话 │
│ │ │
│ ▼ │
│ 5. Flow Monitor 记录(标记 Skill 来源) │
│ │
└─────────────────────────────────────────────────────────────────┘
3.5 Skills 执行(独立模式)
除了 AI Agent 集成,也支持独立执行 Skills(未来版本)。
3.5.1 多模型支持
同一个 Skill 可以选择不同的模型执行:
Skill: 代码审查
├─ 使用 Claude 3.5 Sonnet(推荐,准确度高)
├─ 使用 GPT-4o(备选)
├─ 使用 Gemini Pro(成本低)
└─ 使用本地模型(隐私优先)
3.3 流量监控集成
复用现有 Flow Monitor,增加 Skills 维度:
┌─────────────────────────────────────────────────────────────────┐
│ Flow Monitor - Skills 视图 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 14:32:01 [代码审查] → Claude API │
│ Skill: code-review v1.0.0 │
│ Input: "Review this function: function add(a, b)..." │
│ Output: "Found 2 issues: 1. Missing type checks..." │
│ Tokens: 1,234 in / 567 out │
│ Cost: $0.02 │
│ Duration: 3.2s │
│ │
│ 14:31:45 [翻译助手] → GPT-4o │
│ Skill: translator v1.2.0 │
│ ... │
│ │
└─────────────────────────────────────────────────────────────────┘
3.4 Token 管理
复用现有 Credential Pool,增加 Skills 统计:
┌─────────────────────────────────────────────────────────────────┐
│ Token 消耗统计 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 本月总消耗: 125,000 tokens ($3.75) │
│ │
│ 按 Skill 分布: │
│ ├─ 代码审查: 45,000 tokens (36%) │
│ ├─ 翻译助手: 38,000 tokens (30%) │
│ ├─ 文档生成: 25,000 tokens (20%) │
│ └─ 其他: 17,000 tokens (14%) │
│ │
│ 按模型分布: │
│ ├─ Claude 3.5 Sonnet: 80,000 tokens ($2.40) │
│ ├─ GPT-4o: 35,000 tokens ($1.05) │
│ └─ Gemini Pro: 10,000 tokens ($0.30) │
│ │
└─────────────────────────────────────────────────────────────────┘
4. 技术方案
4.1 整体架构
┌─────────────────────────────────────────────────────────────────┐
│ ProxyCast Skills Platform │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Frontend (React) │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │Skills Store │ │Skills Exec │ │Flow Monitor │ │ │
│ │ │ UI │ │ UI │ │ (现有) │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Backend (Rust) │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │Skills │ │Goose Agent │ │Credential │ │ │
│ │ │Manager │ │ (嵌入式) │ │Pool (现有) │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ │ Goose 核心组件(Rust 原生,直接嵌入): │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │Skills │ │Provider │ │Session │ │ │
│ │ │Extension │ │Manager │ │Manager │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
4.2 Goose 集成(库嵌入方式)
集成优势
Goose 嵌入式集成:
┌─────────────────────────────────────────────────────────────────┐
│ │
│ 优势: │
│ ├─ Rust 原生 - 与 Tauri 完美契合 │
│ ├─ 无进程管理 - 直接调用库,无需 Sidecar │
│ ├─ 性能最优 - 无进程间通信开销 │
│ ├─ 30+ LLM 提供商 - Anthropic, OpenAI, Gemini, Ollama... │
│ └─ Skills 原生支持 - 已支持 SKILL.md 格式 │
│ │
│ Goose 原生支持 Skills: │
│ ├─ ~/.claude/skills/ 目录(与 Claude Code 兼容) │
│ ├─ YAML frontmatter + Markdown 解析 │
│ └─ 自动加载并注入 System Prompt │
│ │
└─────────────────────────────────────────────────────────────────┘
关键文件
| 文件 | 作用 | 修改内容 |
|---|---|---|
src-tauri/src/agent/goose_agent.rs |
Agent 封装 | Goose Agent 管理 |
src-tauri/src/agent/goose_types.rs |
类型定义 | AgentEvent, SessionConfig |
src-tauri/Cargo.toml |
依赖配置 | 添加 goose Git 依赖 |
4.3 Skills 解析器
Rust 端实现
// src-tauri/src/skills/parser.rs
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct SkillManifest {
pub name: String,
pub description: String,
pub license: Option<String>,
pub metadata: Option<SkillMetadata>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct SkillMetadata {
pub author: Option<String>,
pub version: Option<String>,
pub category: Option<String>,
pub tags: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Skill {
pub manifest: SkillManifest,
pub content: String, // SKILL.md body
pub path: PathBuf,
pub has_scripts: bool,
pub has_references: bool,
pub has_assets: bool,
}
impl Skill {
pub fn load(path: &Path) -> Result<Self, SkillError> {
let skill_md = path.join("SKILL.md");
let content = std::fs::read_to_string(&skill_md)?;
// 解析 YAML frontmatter
let manifest = parse_frontmatter(&content)?;
Ok(Self {
manifest,
content: extract_body(&content),
path: path.to_path_buf(),
has_scripts: path.join("scripts").exists(),
has_references: path.join("references").exists(),
has_assets: path.join("assets").exists(),
})
}
}
4.4 数据流
┌─────────────────────────────────────────────────────────────────┐
│ 数据流 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 用户操作 │
│ │ │
│ ▼ │
│ Frontend (React) │
│ │ Tauri Command │
│ ▼ │
│ Backend (Rust) │
│ │ │
│ ├──► Skills Manager: 管理 Skills 生命周期 │
│ │ │
│ ├──► Goose Agent: 直接调用 Goose 库执行 Skill │
│ │ │ │
│ │ ├──► Skills Extension 加载 Skill 内容 │
│ │ ├──► PromptManager 构建 System Prompt │
│ │ ├──► Provider 调用 LLM API │
│ │ └──► 流式返回 AgentEvent │
│ │ │
│ └──► Flow Monitor: 记录流量和消耗 │
│ │
└─────────────────────────────────────────────────────────────────┘
4.5 API 设计
Tauri Commands (Rust → Frontend)
// Skills 管理
#[tauri::command]
async fn list_skills() -> Result<Vec<SkillSummary>, String>;
#[tauri::command]
async fn get_skill(name: &str) -> Result<Skill, String>;
#[tauri::command]
async fn install_skill(source: SkillSource) -> Result<Skill, String>;
#[tauri::command]
async fn uninstall_skill(name: &str) -> Result<bool, String>;
// Skills 执行
#[tauri::command]
async fn execute_skill(
skill_name: &str,
input: serde_json::Value,
model_config: ModelConfig,
) -> Result<SkillExecutionResult, String>;
// Goose Agent 管理
#[tauri::command]
async fn get_agent_status() -> Result<AgentStatus, String>;
#[tauri::command]
async fn create_session(provider: &str, model: &str) -> Result<String, String>;
Goose Agent API(Rust 库调用)
// 直接调用 Goose 库,无需 HTTP API
use goose::agents::{Agent, AgentEvent, SessionConfig};
use goose::providers::create_provider;
// 创建 Agent
let provider = create_provider("anthropic", "claude-sonnet-4-5").await?;
let agent = Agent::new();
agent.update_provider(provider, &session_id).await?;
// 发送消息(流式响应)
let message = Message::user().with_text("帮我审查这段代码");
let mut stream = agent.reply(message, session_config, None).await?;
while let Some(Ok(event)) = stream.next().await {
match event {
AgentEvent::Message(msg) => { /* 处理消息 */ }
AgentEvent::ModelChange { model, mode } => { /* 模型切换 */ }
// ...
}
}
5. MVP 范围
5.1 P0 - 必须有(第一版发布)
基于现有功能扩展,最小改动实现核心价值。
| 功能 | 描述 | 现有基础 | 验收标准 |
|---|---|---|---|
| ProxyCast 官方仓库 | 创建 proxycast/skills GitHub 仓库 | 无 | 仓库可访问 |
| 默认仓库配置 | 添加 proxycast/skills 到默认仓库列表 | skill_service.rs | 列表中显示 |
| AI Agent Skills 展示 | 在 AI Agent 页面显示已加载 Skills 信息 | AgentChatPage.tsx | 显示已加载 Skills |
| Skills 自动注入 | 已安装 Skills 自动注入 System Prompt | goose_agent.rs | Agent 能感知 Skills |
| 首批官方 Skills | 3-5 个高质量 Skills | 无 | 可安装使用 |
5.2 P1 - 应该有(快速迭代)
| 功能 | 描述 | 现有基础 | 验收标准 |
|---|---|---|---|
| Skills 来源标签 | 区分官方/社区 Skills | SkillsPage.tsx | 显示来源标签 |
| Flow Monitor 集成 | 显示 Skill 执行流量 | Flow Monitor | 记录中标记 Skill |
| Token 消耗统计 | 按 Skill 统计消耗 | 无 | 看到成本分布 |
| Skills 执行追踪 | Flow Monitor 标记 Skill 使用 | 无 | 能看到用了哪个 Skill |
| Skills 详情面板 | 查看 Skill 完整内容 | 无 | 显示 SKILL.md |
5.3 P2 - 可以有(未来版本)
| 功能 | 描述 |
|---|---|
| Skills 独立执行界面 | 不经过 AI Agent,直接执行 Skill |
| 评分/评论系统 | 用户对 Skills 评分评论 |
| Skills 推荐 | 基于使用习惯推荐 |
| 多 Agent 协作 | 多个 Skills 组合工作流 |
| Skills 编辑器 | 在线编辑 SKILL.md |
| 云端同步 | Skills 配置云端备份 |
5.4 关键文件修改清单
| 文件 | 修改内容 | 优先级 |
|---|---|---|
src-tauri/Cargo.toml |
添加 goose Git 依赖 | P0 |
src-tauri/src/agent/goose_agent.rs |
Goose Agent 封装(新建) | P0 |
src-tauri/src/services/skill_service.rs |
添加 proxycast/skills 到默认仓库 | P0 |
src/components/agent/AgentChatPage.tsx |
添加已加载 Skills 展示 UI | P0 |
src-tauri/src/commands/agent_cmd.rs |
适配 Goose API | P0 |
src/components/skills/SkillCard.tsx |
添加来源标签 | P1 |
src/lib/api/skills.ts |
增加获取 Skill 内容 API | P0 |
6. UI 设计
6.1 导航结构
ProxyCast
├── 仪表盘
├── 流量监控
├── Provider 管理
├── 凭证池
├── Skills ← 新增
│ ├── 我的 Skills
│ ├── Skills 商店
│ └── 执行历史
├── 工具
└── 设置
6.2 Skills 列表页
┌─────────────────────────────────────────────────────────────────┐
│ Skills [+ 安装 Skill] │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 🔍 搜索 Skills... [全部 ▼] │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 🔍 代码审查 [运行] │ │
│ │ 智能代码审查,发现潜在问题和优化建议 │ │
│ │ 作者: ProxyCast Team | v1.0.0 | 内置 │ │
│ │ 本月使用: 23 次 | 消耗: 45,230 tokens ($1.35) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 📝 文档生成器 [运行] │ │
│ │ 根据代码自动生成文档和注释 │ │
│ │ 作者: ProxyCast Team | v1.0.0 | 内置 │ │
│ │ 本月使用: 15 次 | 消耗: 28,100 tokens ($0.84) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 🌐 翻译助手 [运行] │ │
│ │ 多语言翻译,保持专业术语准确性 │ │
│ │ 作者: ProxyCast Team | v1.0.0 | 内置 │ │
│ │ 本月使用: 8 次 | 消耗: 12,500 tokens ($0.38) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
6.3 Skill 执行页
┌─────────────────────────────────────────────────────────────────┐
│ ← 返回 | 代码审查 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 📄 输入 │ │
│ │ │ │
│ │ ┌────────────────────────────────────────────────────┐ │ │
│ │ │ // 粘贴或输入要审查的代码 │ │ │
│ │ │ function add(a, b) { │ │ │
│ │ │ return a + b; │ │ │
│ │ │ } │ │ │
│ │ │ │ │ │
│ │ └────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ 或 [📁 上传文件] │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ⚙️ 配置 │ │
│ │ │ │
│ │ 模型: [Claude 3.5 Sonnet ▼] Token 来源: [默认 ▼] │ │
│ │ │ │
│ │ 预估消耗: ~2,000 tokens ($0.06) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ [▶ 执行] │
│ │
├─────────────────────────────────────────────────────────────────┤
│ 📊 执行结果 │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ✅ 审查完成 │ │
│ │ │ │
│ │ 发现 2 个问题: │ │
│ │ │ │
│ │ ⚠️ [建议] 缺少类型检查 │ │
│ │ Line 1: function add(a, b) │ │
│ │ 建议: 添加参数类型检查或使用 TypeScript │ │
│ │ │ │
│ │ ℹ️ [信息] 可以添加 JSDoc 注释 │ │
│ │ Line 1-3: 整个函数 │ │
│ │ 建议: 添加 @param 和 @returns 注释 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 实际消耗: 1,234 tokens ($0.04) | 耗时: 3.2s │
│ │
└─────────────────────────────────────────────────────────────────┘
6.4 Skills 安装对话框
┌─────────────────────────────────────────────────────────────────┐
│ 安装 Skill [×] │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 选择安装方式: │
│ │
│ ○ 从 URL 安装 │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ https://github.com/user/skill-name │ │
│ └────────────────────────────────────────────────────────┘ │
│ │
│ ○ 从本地目录安装 │
│ [📁 选择目录] │
│ │
│ │
│ [取消] [安装] │
│ │
└─────────────────────────────────────────────────────────────────┘
7. 里程碑
Phase 1: 官方仓库 + 基础集成(1 周)
目标: 创建 ProxyCast 官方 Skills 仓库,完成基础集成
| 任务 | 预估 | 产出 |
|---|---|---|
| 创建 proxycast/skills GitHub 仓库 | 0.5d | 仓库结构 |
| 编写首批 3 个官方 Skills | 2d | code-review, translator, doc-generator |
| 修改 skill_service.rs 添加默认仓库 | 0.5d | 代码修改 |
| 测试 Skills 安装流程 | 0.5d | 测试通过 |
| 编写 README 和贡献指南 | 0.5d | 文档 |
交付物:
- ProxyCast 官方 Skills 仓库上线
- 用户可以在设置 → 扩展 → Skills 中看到官方 Skills
Phase 2: AI Agent 集成(1 周)
目标: 在 AI Agent 中使用 Skills
| 任务 | 预估 | 产出 |
|---|---|---|
| AgentChatPage 添加 Skills 信息展示 UI | 1d | React 组件 |
| 实现 Skills Prompt 生成器 | 1d | XML 生成函数 |
| 修改 agent_cmd.rs 支持 Skills 参数 | 1d | Rust 代码 |
| 实现 goose_agent.rs 注入 System Prompt | 1d | Rust 代码 |
| 端到端测试 | 0.5d | 测试通过 |
交付物:
- 用户可以在 AI Agent 页面选择 Skills
- Agent 能感知并使用选中的 Skills
Phase 3: 增强功能(1 周)
目标: 完善体验,准备发布
| 任务 | 预估 | 产出 |
|---|---|---|
| Skills 来源标签(官方/社区) | 1d | UI 增强 |
| Skills 详情面板 | 1d | 查看 SKILL.md |
| Flow Monitor Skills 标记 | 1d | 流量记录增强 |
| 文档编写(用户指南) | 1d | 用户文档 |
| Bug 修复和优化 | 1d | 稳定性 |
交付物: 可发布的 MVP 版本
总时间线
Week 1: Phase 1 - 官方仓库 + 基础集成
Week 2: Phase 2 - AI Agent 集成
Week 3: Phase 3 - 增强功能 + 发布准备
8. 成功指标
8.1 用户增长指标
| 指标 | 目标(MVP 后 1 个月) |
|---|---|
| 日活用户 (DAU) | 100+ |
| Skills 安装数 | 500+ |
| Skills 执行数 | 2,000+ |
8.2 用户体验指标
| 指标 | 目标 |
|---|---|
| 首次 Skill 执行成功率 | > 90% |
| 平均执行时间 | < 5s |
| 用户满意度 (NPS) | > 40 |
8.3 业务指标
| 指标 | 目标 |
|---|---|
| Token 中转量 | 100M tokens/月 |
| 活跃 Skills 数 | 20+ |
| 开发者提交 Skills | 10+ |
9. 风险与缓解
| 风险 | 影响 | 可能性 | 缓解措施 |
|---|---|---|---|
| Goose API 变动 | 高 | 中 | 抽象接口层 + 锁定 Git commit |
| Skills 格式不兼容 | 中 | 低 | Goose 原生支持 SKILL.md + 验证器 |
| 性能问题 | 中 | 低 | Rust 嵌入式无进程开销 + 缓存 |
| Token 消耗超预期 | 中 | 低 | 执行前预估 + 消耗限制 + 告警 |
| 安全风险(恶意 Skills) | 高 | 低 | Goose 权限控制 + 审核机制 |
10. 附录
10.1 术语表
| 术语 | 定义 |
|---|---|
| Skill | 遵循 Agent Skills 标准的 AI 能力包 |
| SKILL.md | Skill 的核心定义文件 |
| Goose | ProxyCast 使用的 Agent 执行引擎(Rust 原生) |
| Provider | Goose 中的 LLM 提供商抽象 |
| Flow Monitor | ProxyCast 的流量监控功能 |
| Credential Pool | ProxyCast 的凭证管理功能 |
10.2 参考资料
10.3 变更历史
| 版本 | 日期 | 作者 | 变更内容 |
|---|---|---|---|
| 1.0.0 | 2025-12-30 | Claude | 初始版本 |
| 1.1.0 | 2025-12-30 | Claude | 添加设计原则:标准兼容 vs 实现自主;更新为被动式 Skills 设计 |
| 1.2.0 | 2025-12-31 | Claude | 将 Agent 执行引擎从 Aster (Go) 替换为 Goose (Rust);采用库嵌入方式 |
本文档由 Claude 协助生成,基于与 ProxyCast 团队的讨论。