# frago - Doramagic AI Context Pack

> 定位：安装前体验与判断资产。它帮助宿主 AI 有一个好的开始，但不代表已经安装、执行或验证目标项目。

## 充分原则

- **充分原则，不是压缩原则**：AI Context Pack 应该充分到让宿主 AI 在开工前理解项目价值、能力边界、使用入口、风险和证据来源；它可以分层组织，但不以最短摘要为目标。
- **压缩策略**：只压缩噪声和重复内容，不压缩会影响判断和开工质量的上下文。

## 给宿主 AI 的使用方式

你正在读取 Doramagic 为 frago 编译的 AI Context Pack。请把它当作开工前上下文：帮助用户理解适合谁、能做什么、如何开始、哪些必须安装后验证、风险在哪里。不要声称你已经安装、运行或执行了目标项目。

## Claim 消费规则

- **事实来源**：Repo Evidence + Claim/Evidence Graph；Human Wiki 只提供显著性、术语和叙事结构。
- **事实最低状态**：`supported`
- `supported`：可以作为项目事实使用，但回答中必须引用 claim_id 和证据路径。
- `weak`：只能作为低置信度线索，必须要求用户继续核实。
- `inferred`：只能用于风险提示或待确认问题，不能包装成项目事实。
- `unverified`：不得作为事实使用，应明确说证据不足。
- `contradicted`：必须展示冲突来源，不得替用户强行选择一个版本。

## 它最适合谁

- **正在使用 Claude/Codex/Cursor/Gemini 等宿主 AI 的开发者**：README 或插件配置提到多个宿主 AI。 证据：`README.md` Claim：`clm_0002` supported 0.86

## 它能做什么

- **命令行启动或安装流程**（需要安装后验证）：项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 证据：`community-recipes/recipes/bilibili_download_video/recipe.sh`, `docs/developer.md`, `docs/installation.md`, `docs/user-guide.md` 等 Claim：`clm_0001` supported 0.86

## 怎么开始

- `curl -fsSL https://frago.ai/install.sh | sh` 证据：`docs/developer.md` Claim：`clm_0003` supported 0.86
- `git clone https://github.com/tsaijamey/frago.git` 证据：`docs/developer.md` Claim：`clm_0004` supported 0.86
- `curl -LsSf https://astral.sh/uv/install.sh | sh      # macOS/Linux` 证据：`docs/installation.md` Claim：`clm_0005` supported 0.86
- `uv tool install frago-cli` 证据：`docs/installation.md` Claim：`clm_0006` supported 0.86, `clm_0010` unverified 0.25
- `curl http://localhost:9222/json/version` 证据：`docs/user-guide.md` Claim：`clm_0007` supported 0.86
- `uv tool install "$pkg_name" >&2` 证据：`community-recipes/recipes/bilibili_download_video/recipe.sh` Claim：`clm_0008` unverified 0.25
- `curl -LsSf https://astral.sh/uv/install.sh | sh >/dev/null 2>&1` 证据：`install.sh` Claim：`clm_0009` unverified 0.25
- `uv tool install frago-cli >/dev/null 2>&1` 证据：`install.sh` Claim：`clm_0010` unverified 0.25
- `npm install -g pnpm >/dev/null 2>&1` 证据：`local_install.sh` Claim：`clm_0011` unverified 0.25
- `uv tool install "$WHEEL" --force >/dev/null 2>&1` 证据：`local_install.sh` Claim：`clm_0012` unverified 0.25

## 继续前判断卡

- **当前建议**：先做角色匹配试用
- **为什么**：这个项目更像角色库，核心风险是选错角色或把角色文案当执行能力；先用 Prompt Preview 试角色匹配，再决定是否沙盒导入。

### 30 秒判断

- **现在怎么做**：先做角色匹配试用
- **最小安全下一步**：先用 Prompt Preview 试角色匹配；满意后再隔离导入
- **先别相信**：角色质量和任务匹配不能直接相信。
- **继续会触碰**：角色选择偏差、命令执行、本地环境或项目文件

### 现在可以相信

- **适合人群线索：正在使用 Claude/Codex/Cursor/Gemini 等宿主 AI 的开发者**（supported）：有 supported claim 或项目证据支撑，但仍不等于真实安装效果。 证据：`README.md` Claim：`clm_0002` supported 0.86
- **能力存在：命令行启动或安装流程**（supported）：可以相信项目包含这类能力线索；是否适合你的具体任务仍要试用或安装后验证。 证据：`community-recipes/recipes/bilibili_download_video/recipe.sh`, `docs/developer.md`, `docs/installation.md`, `docs/user-guide.md` 等 Claim：`clm_0001` supported 0.86
- **存在 Quick Start / 安装命令线索**（supported）：可以相信项目文档出现过启动或安装入口；不要因此直接在主力环境运行。 证据：`docs/developer.md` Claim：`clm_0003` supported 0.86

### 现在还不能相信

- **角色质量和任务匹配不能直接相信。**（unverified）：角色库证明有很多角色，不证明每个角色都适合你的具体任务，也不证明角色能产生高质量结果。
- **不能把角色文案当成真实执行能力。**（unverified）：安装前只能判断角色描述和任务画像是否匹配，不能证明它能在宿主 AI 里完成任务。
- **真实输出质量不能在安装前相信。**（unverified）：Prompt Preview 只能展示引导方式，不能证明真实项目中的结果质量。
- **宿主 AI 版本兼容性不能在安装前相信。**（unverified）：Claude、Cursor、Codex、Gemini 等宿主加载规则和版本差异必须在真实环境验证。
- **不会污染现有宿主 AI 行为，不能直接相信。**（inferred）：Skill、plugin、AGENTS/CLAUDE/GEMINI 指令可能改变宿主 AI 的默认行为。
- **可安全回滚不能默认相信。**（unverified）：除非项目明确提供卸载和恢复说明，否则必须先在隔离环境验证。
- **真实安装后是否与用户当前宿主 AI 版本兼容？**（unverified）：兼容性只能通过实际宿主环境验证。
- **项目输出质量是否满足用户具体任务？**（unverified）：安装前预览只能展示流程和边界，不能替代真实评测。

### 继续会触碰什么

- **角色选择偏差**：用户对任务应该由哪个专家角色处理的判断。 原因：选错角色会让 AI 从错误专业视角回答，浪费时间或误导决策。
- **命令执行**：包管理器、网络下载、本地插件目录、项目配置或用户主目录。 原因：运行第一条命令就可能产生环境改动；必须先判断是否值得跑。 证据：`community-recipes/recipes/bilibili_download_video/recipe.sh`, `docs/developer.md`, `docs/installation.md`, `docs/user-guide.md` 等
- **本地环境或项目文件**：安装结果、插件缓存、项目配置或本地依赖目录。 原因：安装前无法证明写入范围和回滚方式，需要隔离验证。 证据：`community-recipes/recipes/bilibili_download_video/recipe.sh`, `docs/developer.md`, `docs/installation.md`, `docs/user-guide.md` 等
- **宿主 AI 上下文**：AI Context Pack、Prompt Preview、Skill 路由、风险规则和项目事实。 原因：导入上下文会影响宿主 AI 后续判断，必须避免把未验证项包装成事实。

### 最小安全下一步

- **先跑 Prompt Preview**：先用交互式试用验证任务画像和角色匹配，不要先导入整套角色库。（适用：任何项目都适用，尤其是输出质量未知时。）
- **只在隔离目录或测试账号试装**：避免安装命令污染主力宿主 AI、真实项目或用户主目录。（适用：存在命令执行、插件配置或本地写入线索时。）
- **安装后只验证一个最小任务**：先验证加载、兼容、输出质量和回滚，再决定是否深用。（适用：准备从试用进入真实工作流时。）

### 退出方式

- **保留安装前状态**：记录原始宿主配置和项目状态，后续才能判断是否可恢复。
- **保留原始角色选择记录**：如果输出偏题，可以回到任务画像阶段重新选择角色，而不是继续沿着错误角色推进。
- **记录安装命令和写入路径**：没有明确卸载说明时，至少要知道哪些目录或配置需要手动清理。
- **如果没有回滚路径，不进入主力环境**：不可回滚是继续前阻断项，不应靠信任或运气继续。

## 哪些只能预览

- 解释项目适合谁和能做什么
- 基于项目文档演示典型对话流程
- 帮助用户判断是否值得安装或继续研究

## 哪些必须安装后验证

- 真实安装 Skill、插件或 CLI
- 执行脚本、修改本地文件或访问外部服务
- 验证真实输出质量、性能和兼容性

## 边界与风险判断卡

- **把安装前预览误认为真实运行**：用户可能高估项目已经完成的配置、权限和兼容性验证。 处理方式：明确区分 prompt_preview_can_do 与 runtime_required。 Claim：`clm_0013` inferred 0.45
- **命令执行会修改本地环境**：安装命令可能写入用户主目录、宿主插件目录或项目配置。 处理方式：先在隔离环境或测试账号中运行。 证据：`community-recipes/recipes/bilibili_download_video/recipe.sh`, `docs/developer.md`, `docs/installation.md`, `docs/user-guide.md` 等 Claim：`clm_0014` supported 0.86
- **待确认**：真实安装后是否与用户当前宿主 AI 版本兼容？。原因：兼容性只能通过实际宿主环境验证。
- **待确认**：项目输出质量是否满足用户具体任务？。原因：安装前预览只能展示流程和边界，不能替代真实评测。
- **待确认**：安装命令是否需要网络、权限或全局写入？。原因：这影响企业环境和个人环境的安装风险。

## 开工前工作上下文

### 加载顺序

- 先读取 how_to_use.host_ai_instruction，建立安装前判断资产的边界。
- 读取 claim_graph_summary，确认事实来自 Claim/Evidence Graph，而不是 Human Wiki 叙事。
- 再读取 intended_users、capabilities 和 quick_start_candidates，判断用户是否匹配。
- 需要执行具体任务时，优先查 role_skill_index，再查 evidence_index。
- 遇到真实安装、文件修改、网络访问、性能或兼容性问题时，转入 risk_card 和 boundaries.runtime_required。

### 任务路由

- **命令行启动或安装流程**：先说明这是安装后验证能力，再给出安装前检查清单。 边界：必须真实安装或运行后验证。 证据：`community-recipes/recipes/bilibili_download_video/recipe.sh`, `docs/developer.md`, `docs/installation.md`, `docs/user-guide.md` 等 Claim：`clm_0001` supported 0.86

### 上下文规模

- 文件总数：575
- 重要文件覆盖：40/575
- 证据索引条目：75
- 角色 / Skill 条目：55

### 证据不足时的处理

- **missing_evidence**：说明证据不足，要求用户提供目标文件、README 段落或安装后验证记录；不要补全事实。
- **out_of_scope_request**：说明该任务超出当前 AI Context Pack 证据范围，并建议用户先查看 Human Manual 或真实安装后验证。
- **runtime_request**：给出安装前检查清单和命令来源，但不要替用户执行命令或声称已执行。
- **source_conflict**：同时展示冲突来源，标记为待核实，不要强行选择一个版本。

## Prompt Recipes

### 适配判断

- 目标：判断这个项目是否适合用户当前任务。
- 预期输出：适配结论、关键理由、证据引用、安装前可预览内容、必须安装后验证内容、下一步建议。

```text
请基于 frago 的 AI Context Pack，先问我 3 个必要问题，然后判断它是否适合我的任务。回答必须包含：适合谁、能做什么、不能做什么、是否值得安装、证据来自哪里。所有项目事实必须引用 evidence_refs、source_paths 或 claim_id。
```

### 安装前体验

- 目标：让用户在安装前感受核心工作流，同时避免把预览包装成真实能力或营销承诺。
- 预期输出：一段带边界标签的体验剧本、安装后验证清单和谨慎建议；不含真实运行承诺或强营销表述。

```text
请把 frago 当作安装前体验资产，而不是已安装工具或真实运行环境。

请严格输出四段：
1. 先问我 3 个必要问题。
2. 给出一段“体验剧本”：用 [安装前可预览]、[必须安装后验证]、[证据不足] 三种标签展示它可能如何引导工作流。
3. 给出安装后验证清单：列出哪些能力只有真实安装、真实宿主加载、真实项目运行后才能确认。
4. 给出谨慎建议：只能说“值得继续研究/试装”“先补充信息后再判断”或“不建议继续”，不得替项目背书。

硬性边界：
- 不要声称已经安装、运行、执行测试、修改文件或产生真实结果。
- 不要写“自动适配”“确保通过”“完美适配”“强烈建议安装”等承诺性表达。
- 如果描述安装后的工作方式，必须使用“如果安装成功且宿主正确加载 Skill，它可能会……”这种条件句。
- 体验剧本只能写成“示例台词/假设流程”：使用“可能会询问/可能会建议/可能会展示”，不要写“已写入、已生成、已通过、正在运行、正在生成”。
- Prompt Preview 不负责给安装命令；如用户准备试装，只能提示先阅读 Quick Start 和 Risk Card，并在隔离环境验证。
- 所有项目事实必须来自 supported claim、evidence_refs 或 source_paths；inferred/unverified 只能作风险或待确认项。

```

### 角色 / Skill 选择

- 目标：从项目里的角色或 Skill 中挑选最匹配的资产。
- 预期输出：候选角色或 Skill 列表，每项包含适用场景、证据路径、风险边界和是否需要安装后验证。

```text
请读取 role_skill_index，根据我的目标任务推荐 3-5 个最相关的角色或 Skill。每个推荐都要说明适用场景、可能输出、风险边界和 evidence_refs。
```

### 风险预检

- 目标：安装或引入前识别环境、权限、规则冲突和质量风险。
- 预期输出：环境、权限、依赖、许可、宿主冲突、质量风险和未知项的检查清单。

```text
请基于 risk_card、boundaries 和 quick_start_candidates，给我一份安装前风险预检清单。不要替我执行命令，只说明我应该检查什么、为什么检查、失败会有什么影响。
```

### 宿主 AI 开工指令

- 目标：把项目上下文转成一次对话开始前的宿主 AI 指令。
- 预期输出：一段边界明确、证据引用明确、适合复制给宿主 AI 的开工前指令。

```text
请基于 frago 的 AI Context Pack，生成一段我可以粘贴给宿主 AI 的开工前指令。这段指令必须遵守 not_runtime=true，不能声称项目已经安装、运行或产生真实结果。
```

## 角色 / Skill 索引

- 共索引 55 个角色 / Skill / 项目文档条目。

- **frago**（project_doc）：An operating system for AI agents — frago runs AI agents on your computer so you don't have to do repetitive work yourself. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`README.md`
- **frago Community Recipes**（project_doc）：This directory contains community-contributed recipes for frago. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/README.md`
- **frago-bridge — Chrome extension**（project_doc）：Manifest V3 Chrome extension that frago talks to over Chrome native messaging. This is an independent project within the frago repo: it has its own release cadence Chrome Web Store and does not depend on the Python package at runtime. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/_resources/extension_bundle/README.md`
- **frago bridge extension keys**（project_doc）：This directory holds the RSA 2048 keypair that pins the Chrome extension ID. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/_resources/extension_bundle/keys/README.md`
- **frago extension — Python side**（project_doc）：This package is the frago side of the browser extension bridge: the native messaging daemon, the stdio relay that Chrome spawns, and the manifest installer that wires them together. It talks to the Chrome MV3 extension over Chrome native messaging length-prefixed JSON-RPC 2.0 frames . 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/chrome/extension/README.md`
- **Contributing to frago**（project_doc）：Thank you for your interest in the frago project! We welcome contributions of all kinds. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`CONTRIBUTING.md`
- **Contributing Recipes**（project_doc）：Thank you for contributing to the frago community recipes! 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/CONTRIBUTING.md`
- **Browser Support**（project_doc）：frago uses the Chrome DevTools Protocol CDP to control Chromium-based browsers. This document describes supported browsers and how to use them. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/browser-support.md`
- **浏览器支持**（project_doc）：frago 通过 Chrome DevTools Protocol CDP 控制基于 Chromium 的浏览器。本文档说明支持的浏览器及使用方法。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/browser-support.zh-CN.md`
- **Key Concepts**（project_doc）：This document explains the core concepts in the frago project and their origins. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/concepts.md`
- **关键概念**（project_doc）：! 概念关系图 images/concepts-diagram-zh 20251209 133008 0.jpg 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/concepts.zh-CN.md`
- **Developer Docs**（project_doc）：frago is an agent OS. This page is the entry point for developers who want to use the CLI or contribute to the project. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/developer.md`
- **开发者文档**（project_doc）：frago 是一个 agent OS。本页面是面向开发者的入口——适用于想使用 CLI 或参与项目开发的人。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/developer.zh-CN.md`
- **frago Example Reference**（project_doc）：This document provides practical examples of using frago's three core systems Run + Recipe + CDP for various automation tasks. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/examples.md`
- **frago 示例参考**（project_doc）：脚本文件 : youtube extract video transcript.js 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/examples.zh-CN.md`
- **Installation**（project_doc）：Download, install, and open from your app menu. That's it. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/installation.md`
- **安装指南**（project_doc）：平台 下载 ------ ------ macOS Apple Silicon .dmg https://github.com/tsaijamey/frago/releases/latest macOS Intel .dmg https://github.com/tsaijamey/frago/releases/latest Windows .msi https://github.com/tsaijamey/frago/releases/latest Linux deb .deb https://github.com/tsaijamey/frago/releases/latest Linux rpm .rpm https://github.com/tsaijamey/frago/releases/latest Linux AppImage .AppImage https://github.com/tsaijamey/frago… 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/installation.zh-CN.md`
- **Recipe System Guide AI-First**（project_doc）：This guide demonstrates how Claude Code AI Agent uses the new Recipe system. Design philosophy: AI is the primary user, humans can execute manually secondary scenario . 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/recipes.md`
- **Recipe 系统指南（AI-First）**（project_doc）：本指南展示 Claude Code AI Agent 如何使用新的 Recipe 系统。设计理念：AI 是主要使用者，人类可以手动执行（次要场景）。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/recipes.zh-CN.md`
- **User Guide**（project_doc）：All browser control through frago chrome : 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/user-guide.md`
- **使用指南**（project_doc）：bash 导航 frago chrome navigate frago chrome status 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`docs/user-guide.zh-CN.md`
- **Code of Conduct**（project_doc）：As members, contributors, and leaders, we pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`CODE_OF_CONDUCT.md`
- **设计原则**（project_doc）：1. 设计理念 - 简洁高效 ：界面元素精简，突出核心功能 - 一致性 ：保持组件、交互和视觉风格的一致性 - 可访问性 ：确保所有用户都能无障碍使用 - 响应式 ：适配不同设备尺寸 - 暗黑模式 ：提供完整的暗黑主题支持 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`DESIGN_PRINCIPLE.md`
- **frago**（project_doc）：AI agent 的操作系统 — 让 AI agent 在你的电脑上运行，替你完成重复性工作。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`README.zh-CN.md`
- **Community Recipe Security Policy**（project_doc）：This document defines the security requirements for community recipes. All submitted recipes MUST comply with these rules. 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/SECURITY.md`
- **arxiv_search_papers**（project_doc）：论文列表，每篇论文包含 title, authors, published, abstract, url, source, categories 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/arxiv_search_papers/recipe.md`
- **bilibili_download_video**（project_doc）：视频元数据 JSON 文件路径 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/bilibili_download_video/recipe.md`
- **diagnose_timeline_pa**（project_doc）：各数据类型计数，至少含 timeline/traces/server log/agents 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/diagnose_timeline_pa/recipe.md`
- **diagnose timeline pa**（project_doc）：Goal 给非开发的 frago 使用者用：在使用者本机按时间范围采集 timeline / PA Primary Agent 相关的运行数据， 打成一个模板化的诊断包（目录 + 同名 zip），回传给 frago 开发团队定位潜在 bug。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/diagnose_timeline_pa/spec.md`
- **feishu_broadcast_message**（project_doc）：飞书应用 App Secret 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/feishu_broadcast_message/recipe.md`
- **feishu_check_messages**（project_doc）：飞书应用 App Secret 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/feishu_check_messages/recipe.md`
- **feishu_send_message**（project_doc）：飞书应用 App Secret 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/feishu_send_message/recipe.md`
- **feishu_stream_messages**（project_doc）：飞书应用 App Secret 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/feishu_stream_messages/recipe.md`
- **lark_send_message**（project_doc）：Lark App Secret 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/lark_send_message/recipe.md`
- **lark_stream_messages**（project_doc）：Lark App Secret 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/lark_stream_messages/recipe.md`
- **transcript_completion**（project_doc）：query：evaluate file 判尾部一轮 + 抽文本，打一行 JSON；watch：SessionFileHandler 盯文件，done 翻转时打 turn complete 事件行 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/transcript_completion/recipe.md`
- **video_cut_studio**（project_doc）：Navigate Chrome to Web UI 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/video_cut_studio/recipe.md`
- **video_cut_studio_ui**（project_doc）：是否成功复制 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/video_cut_studio_ui/recipe.md`
- **volcengine_tts_with_emotion**（project_doc）：默认音色ID，可通过 speaker id 参数覆盖 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/volcengine_tts_with_emotion/recipe.md`
- **youtube_download_video_ytdlp**（project_doc）：视频元数据 JSON 文件路径 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/youtube_download_video_ytdlp/recipe.md`
- **youtube_extract_subtitles_ytdlp**（project_doc）：该视频可用的字幕语言列表 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/youtube_extract_subtitles_ytdlp/recipe.md`
- **youtube_extract_video_transcript**（project_doc）：包含视频转录片段的JSON对象（时间戳+文字） 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`community-recipes/recipes/youtube_extract_video_transcript/recipe.md`
- **Guidance**（project_doc）：1. 思考你正在面对什么问题。它属于哪类场景？ {{frago launcher}} book scenes 查看已知场景类型 {{frago launcher}} run find 搜索历史类似任务 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/_guidance.md`
- **Identity**（project_doc）：你是运行在 frago 环境中的 AI agent。frago 是你的操作系统——你通过它感知浏览器、操作网页、执行自动化流程、积累结构化知识。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/_identity.md`
- **agent-worker-driving**（project_doc）：主控会话要落地子任务时，用 frago agent 驱动 worker。它替你处理会话拉起、权限跳过、答案提取、空闲检测，NEVER 手搓 tmux new-session + claude 。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/agent-worker-driving.md`
- **better-git-checkout**（project_doc）：解决什么问题 agent 在用户说"撤回"、"还原"时倾向于直接 git checkout . 或 git checkout -- ，这是粗粒度操作，可能丢掉用户想保留的更改。大多数场景有更精确的替代方案。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/better-git-checkout.md`
- **better-server-restart**（project_doc）：解决什么问题 agent 在需要刷新后端时倾向于直接 {{frago launcher}} server restart ，不检查是否有活跃任务。server 重启会杀掉所有 sub-agent 子进程，导致运行中的任务丢失、状态不一致。 --force 更危险——跳过保护直接 kill。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/better-server-restart.md`
- **better-structured-data**（project_doc）：结构化数据存取用 {{frago launcher}} def 系统，比手写 JSON 或 grep 文件更高效。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/better-structured-data.md`
- **chrome-anti-bot**（project_doc）：遇到 Cloudflare / Datadome / PerimeterX / Akamai / captcha / "verify you are human" / 403 / 重定向到验证页 时， 禁止盲目重试 click 或 navigate 。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/chrome-anti-bot.md`
- **chrome-backend-choice**（project_doc）：frago chrome 只有一种标准用法：extension 后端（默认，无需任何 flag）。所有 chrome 子命令直接跑即可，不存在"什么场景选什么后端"的判断。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/chrome-backend-choice.md`
- **chrome-startup**（project_doc）：frago chrome start 拉起 agent 专用浏览器 + 扩展桥。默认零参数即可，一条命令完成全链路。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/chrome-startup.md`
- **chrome-usage**（project_doc）：frago chrome 操作完整指南。所有浏览器操作通过 frago chrome 命令执行，不直接调用 CDP 或浏览器 API。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/chrome-usage.md`
- **def-knowledge**（project_doc）：frago def 是结构化知识系统。你可以定义知识领域（domain），在领域下保存和查询知识文档。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/def-knowledge.md`
- **domain-insights**（project_doc）：{{frago launcher}} run insights --save / --update 已于 2026-07-26 关闭，敲了会直接报错。 知识沉淀的唯一形态是 def 领域文档。本章只保留退役说明和迁移指引。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/domain-insights.md`
- **frago-principle-extend**（project_doc）：解决什么问题 agent 在使用 frago 的过程中会观察到重复模式——同一类路由判断每次都手动做、同一类知识每次都临时拼。这些重复模式是 frago 应当沉淀的资产，但 agent 默认倾向是"我自己处理就好"，没有沉淀习惯。这条原则规定沉淀的方向。 激活提示：当用户需要理解项目结构、安装方式或边界时参考。 证据：`src/frago/resources/book/frago-principle-extend.md`

## 证据索引

- 共索引 75 条证据。

- **frago**（documentation）：An operating system for AI agents — frago runs AI agents on your computer so you don't have to do repetitive work yourself. 证据：`README.md`
- **frago Community Recipes**（documentation）：This directory contains community-contributed recipes for frago. 证据：`community-recipes/README.md`
- **frago-bridge — Chrome extension**（documentation）：Manifest V3 Chrome extension that frago talks to over Chrome native messaging. This is an independent project within the frago repo: it has its own release cadence Chrome Web Store and does not depend on the Python package at runtime. 证据：`src/frago/_resources/extension_bundle/README.md`
- **frago bridge extension keys**（documentation）：This directory holds the RSA 2048 keypair that pins the Chrome extension ID. 证据：`src/frago/_resources/extension_bundle/keys/README.md`
- **frago extension — Python side**（documentation）：This package is the frago side of the browser extension bridge: the native messaging daemon, the stdio relay that Chrome spawns, and the manifest installer that wires them together. It talks to the Chrome MV3 extension over Chrome native messaging length-prefixed JSON-RPC 2.0 frames . 证据：`src/frago/chrome/extension/README.md`
- **Package**（package_manifest）：{ "name": "frago-tauri", "version": "0.39.0", "description": "frago Desktop Client Tauri ", "private": true, "scripts": { "tauri": "tauri", "build": "tauri build", "dev": "tauri dev" }, "devDependencies": { "@tauri-apps/cli": "^2" } } 证据：`src-tauri/package.json`
- **Package**（package_manifest）：{ "name": "frago-gui", "private": true, "version": "0.1.0", "type": "module", "scripts": { "dev": "vite", "build": "tsc && vite build", "preview": "vite preview", "test": "vitest run", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "type-check": "tsc --noEmit" }, "dependencies": { "i18next": "^25.7.3", "lucide-react": "^0.559.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-i18next": "^16.5.0", "react-markdown": "^10.1.0", "remark-gfm": "^4.0.1", "zustand": "^5.0.2" }, "devDependencies": { "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@types/react": "^18.3.16", "@types/react-dom": "^18.3.5", "@typescript-eslint/eslin… 证据：`src/frago/client/package.json`
- **Contributing to frago**（documentation）：Thank you for your interest in the frago project! We welcome contributions of all kinds. 证据：`CONTRIBUTING.md`
- **Contributing Recipes**（documentation）：Thank you for contributing to the frago community recipes! 证据：`community-recipes/CONTRIBUTING.md`
- **License**（source_file）：GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 证据：`LICENSE`
- **Browser Support**（documentation）：frago uses the Chrome DevTools Protocol CDP to control Chromium-based browsers. This document describes supported browsers and how to use them. 证据：`docs/browser-support.md`
- **浏览器支持**（documentation）：frago 通过 Chrome DevTools Protocol CDP 控制基于 Chromium 的浏览器。本文档说明支持的浏览器及使用方法。 证据：`docs/browser-support.zh-CN.md`
- **Key Concepts**（documentation）：This document explains the core concepts in the frago project and their origins. 证据：`docs/concepts.md`
- **关键概念**（documentation）：! 概念关系图 images/concepts-diagram-zh 20251209 133008 0.jpg 证据：`docs/concepts.zh-CN.md`
- **Developer Docs**（documentation）：frago is an agent OS. This page is the entry point for developers who want to use the CLI or contribute to the project. 证据：`docs/developer.md`
- **开发者文档**（documentation）：frago 是一个 agent OS。本页面是面向开发者的入口——适用于想使用 CLI 或参与项目开发的人。 证据：`docs/developer.zh-CN.md`
- **frago Example Reference**（documentation）：This document provides practical examples of using frago's three core systems Run + Recipe + CDP for various automation tasks. 证据：`docs/examples.md`
- **frago 示例参考**（documentation）：脚本文件 : youtube extract video transcript.js 证据：`docs/examples.zh-CN.md`
- **Installation**（documentation）：Download, install, and open from your app menu. That's it. 证据：`docs/installation.md`
- **安装指南**（documentation）：平台 下载 ------ ------ macOS Apple Silicon .dmg https://github.com/tsaijamey/frago/releases/latest macOS Intel .dmg https://github.com/tsaijamey/frago/releases/latest Windows .msi https://github.com/tsaijamey/frago/releases/latest Linux deb .deb https://github.com/tsaijamey/frago/releases/latest Linux rpm .rpm https://github.com/tsaijamey/frago/releases/latest Linux AppImage .AppImage https://github.com/tsaijamey/frago/releases/latest 证据：`docs/installation.zh-CN.md`
- **Recipe System Guide AI-First**（documentation）：This guide demonstrates how Claude Code AI Agent uses the new Recipe system. Design philosophy: AI is the primary user, humans can execute manually secondary scenario . 证据：`docs/recipes.md`
- **Recipe 系统指南（AI-First）**（documentation）：本指南展示 Claude Code AI Agent 如何使用新的 Recipe 系统。设计理念：AI 是主要使用者，人类可以手动执行（次要场景）。 证据：`docs/recipes.zh-CN.md`
- **User Guide**（documentation）：All browser control through frago chrome : 证据：`docs/user-guide.md`
- **使用指南**（documentation）：bash 导航 frago chrome navigate frago chrome status 证据：`docs/user-guide.zh-CN.md`
- **Tauri.Conf**（structured_config）：{ "$schema": "https://schema.tauri.app/config/2.0.0", "productName": "frago", "version": "1.2.0", "identifier": "com.frago.client", "mainBinaryName": "frago-desktop", "build": { "beforeBuildCommand": "", "beforeDevCommand": "", "devUrl": "http://127.0.0.1:8093", "frontendDist": "./bootstrap" }, "app": { "withGlobalTauri": true, "windows": { "title": "frago", "width": 500, "height": 400, "minWidth": 400, "minHeight": 300, "resizable": true, "fullscreen": false, "center": true, "url": "index.html" } , "security": { "csp": null } }, "bundle": { "active": true, "targets": "all", "icon": "icons/32x32.png", "icons/48x48.png", "icons/64x64.png", "icons/128x128.png", "icons/128x128@2x.png", "icons/… 证据：`src-tauri/tauri.conf.json`
- **Default**（structured_config）：{ "$schema": "https://schema.tauri.app/config/2.0.0", "identifier": "default", "description": "Default capabilities for the frago desktop client", "windows": "main" , "permissions": "core:default", "shell:allow-open", "core:window:allow-set-size", "core:window:allow-set-min-size", "core:window:allow-center", "core:window:allow-set-title" } 证据：`src-tauri/capabilities/default.json`
- **Web service GUI 013-change-gui-into-web-service**（source_file）：project name = "frago-cli" version = "1.2.29" description = "frago - Agent OS for AI agents: runtime, resource management, environment sync, and GUI for non-technical users" readme = "README.md" requires-python = " =3.13" license = {text = "AGPL-3.0-or-later"} authors = {name = "Jamey Tsai", email = "caijia@frago.ai"} keywords = "agent-os", "ai-agent", "automation", "cdp", "chrome", "recipe" classifiers = "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Affero General Public License v3 or later AGPLv3+ ", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Testing", "Topic ::… 证据：`pyproject.toml`
- **Cargo**（source_file）：package name = "frago" version = "1.2.0" description = "frago Desktop Client" authors = "Jamey Tsai " license = "AGPL-3.0-or-later" repository = "https://github.com/tsaijamey/frago" edition = "2021" 证据：`src-tauri/Cargo.toml`
- **Commands**（source_file）：use tauri::AppHandle; ⋮---- pub async fn check uv - Result { ⋮---- pub async fn check frago - Result { ⋮---- pub async fn check claude code - Result { ⋮---- pub async fn check server - Result { ⋮---- pub async fn install uv app: AppHandle - Result { ⋮---- pub async fn install frago ⋮---- pub async fn install claude code app: AppHandle - Result { ⋮---- pub async fn start server app: AppHandle - Result { ⋮---- pub async fn wait for server timeout ms: u64 - Result { 证据：`src-tauri/src/commands.rs`
- **Constants**（source_file）：pub const FALLBACK VERSION: &str = env! "CARGO PKG VERSION" ; 证据：`src-tauri/src/constants.rs`
- **Claude Code**（source_file）：use std::process::Command; ⋮---- use super::downloader::download verified; use super::process::run with streaming; ⋮---- pub async fn check - Result { let claude = resolve claude path ; let output = Command::new &claude .arg "--version" .output ; ⋮---- Ok o if o.status.success = { ⋮---- let version = raw.split whitespace .next .map s s.to string ; Ok CheckResult { ⋮---- = Ok CheckResult { ⋮---- async fn probe url url: &str, timeout ms: u64 - bool { ⋮---- .timeout std::time::Duration::from millis timeout ms .build ⋮---- match client.head url .send .await { Ok resp = resp.status .is success resp.status .is redirection , ⋮---- async fn pick claude base url - &'static str { let probe = format!… 证据：`src-tauri/src/installer/claude_code.rs`
- **Downloader**（source_file）：use std::io::Write; use std::path::Path; ⋮---- use crate::constants::BOOTSTRAP PROGRESS; ⋮---- use super::DownloadProgress; ⋮---- pub crate fn checksum matches actual: &str, expected: &str - bool { actual.eq ignore ascii case expected ⋮---- pub crate async fn download verified ⋮---- .get url .send ⋮---- .map err e format! "Download start failed: {e}" ?; if !resp.status .is success { return Err format! "Download HTTP {}", resp.status ; ⋮---- std::fs::File::create dest .map err e format! "Create temp file failed: {e}" ?; ⋮---- .chunk ⋮---- .map err e format! "Download interrupted: {e}" ? ⋮---- hasher.update &chunk ; file.write all &chunk .map err e format! "Write failed: {e}" ?; downloaded +=… 证据：`src-tauri/src/installer/downloader.rs`
- **Frago**（source_file）：use std::process::Command; ⋮---- use super::process::run with streaming; ⋮---- pub async fn check - Result { let uv = resolve uv path ; ⋮---- .args "tool", "list" .output .map err e e.to string ?; ⋮---- for line in text.lines { if line.starts with "frago-cli" line.starts with "frago " { ⋮---- .split whitespace .nth 1 .map v v.trim start matches 'v' .to string ; return Ok CheckResult { ⋮---- Ok CheckResult { ⋮---- async fn fetch latest pypi version package: &str - Option { let url = format! "https://pypi.org/pypi/{package}/json" ; ⋮---- .timeout std::time::Duration::from secs 10 .build .ok ? .get &url .send ⋮---- .ok ?; let json: serde json::Value = resp.json .await.ok ?; json "info" "versio… 证据：`src-tauri/src/installer/frago.rs`
- **Launcher**（source_file）：use std::process::Command; ⋮---- pub async fn check server - Result { ⋮---- use std::net::TcpStream; ⋮---- &SERVER ADDR.parse .unwrap , ⋮---- .is ok ; Ok ok ⋮---- pub async fn start server app: AppHandle - Result { ⋮---- if check server .await.unwrap or false { return Ok StartResult { ⋮---- message: "Server already running".into , ⋮---- let frago = resolve frago path ; ⋮---- let port arg = format! ":{}", crate::constants::SERVER PORT ; let output = Command::new "lsof" .args "-ti", &port arg .output ; ⋮---- for pid str in pids.split whitespace { ⋮---- if !pids.trim .is empty { ⋮---- let log dir = home dir .join ".frago" ; ⋮---- let log file = std::fs::File::create log dir.join "server.log" .… 证据：`src-tauri/src/installer/launcher.rs`
- **Main**（source_file）：mod commands; mod constants; mod installer; ⋮---- fn main { ⋮---- .plugin tauri plugin shell::init .invoke handler tauri::generate handler! ⋮---- .run tauri::generate context! .expect "error while running tauri application" ; 证据：`src-tauri/src/main.rs`
- **Client**（source_file）：import type { ServerInfo, ServerStatus, RecipeItem, TaskItem, TaskStep, ToolUsageStat, TaskSummary, TaskDetail, TaskListResponse, TaskStepsResponse, UserConfig, SystemDirectories, GenerateTitleResponse, AgentAttachedStartResponse, AgentAttachedInfo, SkillItem, GhCliStatus, APIEndpointConfig, MainConfig, ApiResponse, APIEndpointRequest, AuthUpdateRequest, AgentCoreSettings, RecipeSecretsFieldHttp, RecipeSecretsResponseHttp, VSCodeStatus, RunningTaskSummary, RecentTaskSummary, QuickRecipeItem, DashboardResourceCounts, DashboardStatus, DashboardData, DependencyStatus, InitStatus, DependencyCheckResult, InstallResultSummary, ResourceInstallResult, DependencyInstallResult, InitCompleteResult, Co… 证据：`src/frago/client/src/api/client.ts`
- **Index**（source_file）：import type { RecipeItem, RecipeDetail, RecipeRunResponse, SkillItem, UserConfig, ConfigUpdateResponse, SystemStatus, ConnectionStatus, TaskStartResponse, RecipeDeleteResponse, MainConfig, MainConfigUpdateResponse, AuthUpdateRequest, APIEndpoint, RecipeSecretsResponse, RecipeSecretsUpdateResponse, GhCliStatus, ApiResponse, TutorialResponse, CommunityRecipeItem, CommunityRecipeInstallResponse, } from '@/types/pywebview'; import { localISOString } from '@/utils/time'; ⋮---- function isPywebviewMode : boolean ⋮---- export function getApiMode : 'pywebview' 'http' ⋮---- function withMode httpFn: ...args: A = T, pywebviewFn: ...args: A = T, : ...args: A = T ⋮---- export async function runRecipeAs… 证据：`src/frago/client/src/api/index.ts`
- **Pywebview**（source_file）：import type { PyWebviewApi, TaskItem, TaskDetail, TaskStepsResponse, TaskStatus, RecipeItem, RecipeDetail, RecipeRunResponse, SkillItem, UserConfig, ConfigUpdateResponse, SystemStatus, ConnectionStatus, TaskStartResponse, RecipeDeleteResponse, MainConfig, MainConfigUpdateResponse, AuthUpdateRequest, RecipeSecretsResponse, RecipeSecretsUpdateResponse, GhCliStatus, ApiResponse, TutorialResponse, } from '@/types/pywebview'; ⋮---- function isApiFullyReady : boolean ⋮---- export function waitForPywebview : Promise ⋮---- const checkAndResolve = = ⋮---- const handleReady = = ⋮---- export function getApi : PyWebviewApi undefined ⋮---- export function isApiReady : boolean ⋮---- export async function… 证据：`src/frago/client/src/api/pywebview.ts`
- **Websocket**（source_file）：export type MessageTypeValue = typeof MessageType keyof typeof MessageType ; ⋮---- export interface WebSocketMessage { type: MessageTypeValue; timestamp: string; task id?: string; status?: string; data?: Record ; } ⋮---- type MessageHandler = message: WebSocketMessage = void; type ConnectionHandler = = void; ⋮---- interface WebSocketClientOptions { autoReconnect?: boolean; reconnectDelay?: number; maxReconnectDelay?: number; pingInterval?: number; } ⋮---- export class FragoWebSocketClient ⋮---- constructor options: WebSocketClientOptions = ⋮---- connect : void ⋮---- disconnect : void ⋮---- get isConnected : boolean ⋮---- on type: MessageTypeValue ' ', handler: MessageHandler : = void ⋮----… 证据：`src/frago/client/src/api/websocket.ts`
- **Usewebsocket**（source_file）：import { useEffect, useState, useCallback, useRef } from 'react'; import { getWebSocketClient, connectWebSocket, MessageType, type WebSocketMessage, type MessageTypeValue, } from '@/api/websocket'; import { getApiMode } from '@/api'; ⋮---- interface UseWebSocketOptions { autoConnect?: boolean; messageTypes?: MessageTypeValue ; onMessage?: message: WebSocketMessage = void; } ⋮---- interface UseWebSocketReturn { isConnected: boolean; lastMessage: WebSocketMessage null; connect: = void; disconnect: = void; send: message: Record = void; } ⋮---- export function useWebSocket options: UseWebSocketOptions = ⋮---- export function useTaskUpdates taskId?: string, onUpdate?: message: WebSocketMessage =… 证据：`src/frago/client/src/hooks/useWebSocket.ts`
- **Index**（source_file）：import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; ⋮---- import en from './locales/en.json'; import zh from './locales/zh.json'; ⋮---- function getInitialLanguage : string 证据：`src/frago/client/src/i18n/index.ts`
- **Code of Conduct**（documentation）：As members, contributors, and leaders, we pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. 证据：`CODE_OF_CONDUCT.md`
- **设计原则**（documentation）：1. 设计理念 - 简洁高效 ：界面元素精简，突出核心功能 - 一致性 ：保持组件、交互和视觉风格的一致性 - 可访问性 ：确保所有用户都能无障碍使用 - 响应式 ：适配不同设备尺寸 - 暗黑模式 ：提供完整的暗黑主题支持 证据：`DESIGN_PRINCIPLE.md`
- **frago**（documentation）：AI agent 的操作系统 — 让 AI agent 在你的电脑上运行，替你完成重复性工作。 证据：`README.zh-CN.md`
- **Community Recipe Security Policy**（documentation）：This document defines the security requirements for community recipes. All submitted recipes MUST comply with these rules. 证据：`community-recipes/SECURITY.md`
- **arxiv search papers**（documentation）：在 arXiv 学术数据库中搜索论文。arXiv 是全球最大的预印本论文库，涵盖物理、数学、计算机科学、定量生物学、定量金融、统计学、电气工程和系统科学、经济学等领域。 证据：`community-recipes/recipes/arxiv_search_papers/recipe.md`
- **bilibili download video**（documentation）：使用 yt-dlp 从 B站下载视频，支持： - 指定视频画质（360p ~ 4K） - 下载 AI 生成字幕（中/英/日） - 下载弹幕文件 - 仅下载字幕模式 证据：`community-recipes/recipes/bilibili_download_video/recipe.md`
- **diagnose timeline pa**（documentation）：功能描述 在使用者本机按时间范围采集 timeline / PA Primary Agent 相关运行数据，打成一个模板化诊断包（目录 + 同名 zip），回传给 frago 开发团队定位潜在 bug。配方只做「采集 + 结构化 + 轻量索引」，不做深度分析。 证据：`community-recipes/recipes/diagnose_timeline_pa/recipe.md`
- **diagnose timeline pa**（documentation）：Goal 给非开发的 frago 使用者用：在使用者本机按时间范围采集 timeline / PA Primary Agent 相关的运行数据， 打成一个模板化的诊断包（目录 + 同名 zip），回传给 frago 开发团队定位潜在 bug。 证据：`community-recipes/recipes/diagnose_timeline_pa/spec.md`
- **feishu broadcast message**（documentation）：生成的配置文件 .broadcast config.json 位于配方目录，格式： 证据：`community-recipes/recipes/feishu_broadcast_message/recipe.md`
- **feishu check messages**（documentation）：白名单统一配置在 ~/.frago/config.json → task ingestion.whitelist.feishu ： - allowed chats : 群白名单，仅轮询这些群 - allowed senders : 用户白名单，仅响应这些用户的消息（空数组=群内所有人） 证据：`community-recipes/recipes/feishu_check_messages/recipe.md`
- **feishu send message**（documentation）：凭证通过 FRAGO SECRETS 环境变量注入，配置于 ~/.frago/recipes.local.json 或 Web UI。 证据：`community-recipes/recipes/feishu_send_message/recipe.md`
- **feishu stream messages**（documentation）：通过飞书开放平台 WebSocket 长连接订阅 im.message.receive v1 事件。 证据：`community-recipes/recipes/feishu_stream_messages/recipe.md`
- **lark send message**（documentation）：Send text, image, or file messages to a Lark chat or user via the Lark Open Platform API overseas open.larksuite.com endpoint . 证据：`community-recipes/recipes/lark_send_message/recipe.md`
- **lark stream messages**（documentation）：Subscribe to im.message.receive v1 events via Lark open platform WebSocket long-connection. 证据：`community-recipes/recipes/lark_stream_messages/recipe.md`
- **transcript completion**（documentation）：把 spec 20260624-transcript-completion-recipe 的解析核心（ frago.server.services.transcript completion ）封装成配方。完成判定的权威信号是 Claude Code 写进 session JSONL 的 message.stop reason ，不读屏。配方复用 claude sessions / monitor / parser 的既有解析，自身不重写 JSONL 解析。 证据：`community-recipes/recipes/transcript_completion/recipe.md`
- **video cut studio**（documentation）：1. 素材浏览 - 扫描指定目录的视频/音频文件，按编号排序显示 2. 片段标注 - 在时间轴上标记需要使用的片段（起始-结束时间点） 3. 时间轴编排 - 拖拽调整片段顺序和位置 4. TTS 旁白 - 输入文本生成带情感的语音旁白 5. 视频合成 - 将所有片段和旁白合成为最终视频 证据：`community-recipes/recipes/video_cut_studio/recipe.md`
- **video cut studio ui**（documentation）：视频剪辑工作台的静态前端资源包，包含完整的 HTML/JS/CSS 文件。 证据：`community-recipes/recipes/video_cut_studio_ui/recipe.md`
- **volcengine tts with emotion**（documentation）：调用火山引擎 ICL 2.0 声音克隆API（V3 HTTP单向流式接口）生成带情感表达的语音。 证据：`community-recipes/recipes/volcengine_tts_with_emotion/recipe.md`
- **youtube download video ytdlp**（documentation）：使用 yt-dlp 从 YouTube 下载视频，支持： - 指定视频画质（360p ~ 4K） - 下载自动生成字幕和人工字幕 - 支持多种语言字幕 - 仅下载字幕模式 - 视频编码选择（AV1/VP9/H.264） 证据：`community-recipes/recipes/youtube_download_video_ytdlp/recipe.md`
- 其余 15 条证据见 `AI_CONTEXT_PACK.json` 或 `EVIDENCE_INDEX.json`。

## 宿主 AI 必须遵守的规则

- **把本资产当作开工前上下文，而不是运行环境。**：AI Context Pack 只包含证据化项目理解，不包含目标项目的可执行状态。 证据：`README.md`, `community-recipes/README.md`, `src/frago/_resources/extension_bundle/README.md`
- **回答用户时区分可预览内容与必须安装后才能验证的内容。**：安装前体验的消费者价值来自降低误装和误判，而不是伪装成真实运行。 证据：`README.md`, `community-recipes/README.md`, `src/frago/_resources/extension_bundle/README.md`

## 用户开工前应该回答的问题

- 你准备在哪个宿主 AI 或本地环境中使用它？
- 你只是想先体验工作流，还是准备真实安装？
- 你最在意的是安装成本、输出质量、还是和现有规则的冲突？

## 验收标准

- 所有能力声明都能回指到 evidence_refs 中的文件路径。
- AI_CONTEXT_PACK.md 没有把预览包装成真实运行。
- 用户能在 3 分钟内看懂适合谁、能做什么、如何开始和风险边界。

---

## Doramagic Context Augmentation

下面内容用于强化 Repomix/AI Context Pack 主体。Human Manual 只提供阅读骨架；踩坑日志会被转成宿主 AI 必须遵守的工作约束。

## Human Manual 骨架

使用规则：这里只是项目阅读路线和显著性信号，不是事实权威。具体事实仍必须回到 repo evidence / Claim Graph。

宿主 AI 硬性规则：
- 不得把页标题、章节顺序、摘要或 importance 当作项目事实证据。
- 解释 Human Manual 骨架时，必须明确说它只是阅读路线/显著性信号。
- 能力、安装、兼容性、运行状态和风险判断必须引用 repo evidence、source path 或 Claim Graph。

- **项目概览**：importance `high`
  - source_paths: README.md, community-recipes/README.md, pyproject.toml, src-tauri/package.json, src/frago/_resources/extension_bundle/README.md
- **Src 模块**：importance `high`
  - source_paths: src-tauri/src/commands.rs, src-tauri/src/constants.rs, src-tauri/src/installer/claude_code.rs, src-tauri/src/installer/downloader.rs, src-tauri/src/installer/frago.rs
- **Api 模块**：importance `high`
  - source_paths: src/frago/client/src/api/client.ts, src/frago/client/src/api/index.ts, src/frago/client/src/api/pywebview.ts, src/frago/client/src/api/websocket.ts
- **Capabilities 模块**：importance `high`
  - source_paths: src-tauri/capabilities/default.json

## Repo Inspection Evidence / 源码检查证据

- repo_clone_verified: true
- repo_inspection_verified: true
- repo_commit: `988e4226a04085c4083542197207fe50982381b5`
- inspected_files: `README.md`, `pyproject.toml`, `uv.lock`, `docs/browser-support.md`, `docs/browser-support.zh-CN.md`, `docs/concepts.md`, `docs/concepts.zh-CN.md`, `docs/developer.md`, `docs/developer.zh-CN.md`, `docs/examples.md`, `docs/examples.zh-CN.md`, `docs/installation.md`, `docs/installation.zh-CN.md`, `docs/knowledge/app.js`, `docs/knowledge/data.js`, `docs/recipes.md`, `docs/recipes.zh-CN.md`, `docs/user-guide.md`, `docs/user-guide.zh-CN.md`, `src/frago/__init__.py`

宿主 AI 硬性规则：
- 没有 repo_clone_verified=true 时，不得声称已经读过源码。
- 没有 repo_inspection_verified=true 时，不得把 README/docs/package 文件判断写成事实。
- 没有 quick_start_verified=true 时，不得声称 Quick Start 已跑通。

## Doramagic Pitfall Constraints / 踩坑约束

这些规则来自 Doramagic 发现、验证或编译过程中的项目专属坑点。宿主 AI 必须把它们当作工作约束，而不是普通说明文字。

### Constraint 1: 可能修改宿主 AI 配置

- Trigger: 项目面向 Claude/Cursor/Codex/Gemini/OpenCode 等宿主，或安装命令涉及用户配置目录。
- Host AI rule: 列出会写入的配置文件、目录和卸载/回滚步骤。
- Why it matters: 安装可能改变本机 AI 工具行为，用户需要知道写入位置和回滚方法。
- Evidence: capability.host_targets | https://github.com/tsaijamey/frago | host_targets=claude, openclaw, claude_code
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 2: 能力判断依赖假设

- Trigger: README/documentation is current enough for a first validation pass.
- Host AI rule: 将假设转成下游验证清单。
- Why it matters: 假设不成立时，用户拿不到承诺的能力。
- Evidence: capability.assumptions | https://github.com/tsaijamey/frago | README/documentation is current enough for a first validation pass.
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 3: 维护活跃度未知

- Trigger: 未记录 last_activity_observed。
- Host AI rule: 补 GitHub 最近 commit、release、issue/PR 响应信号。
- Why it matters: 新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。
- Evidence: evidence.maintainer_signals | https://github.com/tsaijamey/frago | last_activity_observed missing
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

- Trigger: no_demo
- Evidence: downstream_validation.risk_items | https://github.com/tsaijamey/frago | no_demo; severity=medium
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 5: 存在评分风险

- Trigger: no_demo
- Why it matters: 风险会影响是否适合普通用户安装。
- Evidence: risks.scoring_risks | https://github.com/tsaijamey/frago | no_demo; severity=medium
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 6: issue/PR 响应质量未知

- Trigger: issue_or_pr_quality=unknown。
- Host AI rule: 抽样最近 issue/PR，判断是否长期无人处理。
- Why it matters: 用户无法判断遇到问题后是否有人维护。
- Evidence: evidence.maintainer_signals | https://github.com/tsaijamey/frago | issue_or_pr_quality=unknown
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。

### Constraint 7: 发布节奏不明确

- Trigger: release_recency=unknown。
- Host AI rule: 确认最近 release/tag 和 README 安装命令是否一致。
- Why it matters: 安装命令和文档可能落后于代码，用户踩坑概率升高。
- Evidence: evidence.maintainer_signals | https://github.com/tsaijamey/frago | release_recency=unknown
- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。
