---
name: snow-app-docs
description: >-
  Guides the agent to read the built-in Snow App documentation
  (~/.snow/docs) before configuring or troubleshooting Snow App. Covers MCP
  servers; installing, managing, creating, and authoring Skills; sub-agents;
  Hooks; API keys/models; image generation; proxy/network; third-party config
  and Plugin runtimes; browser passwords and local-browser data import; app
  updates; security/privacy/tool authorization; personalization, system prompts,
  custom headers, themes, and shortcuts; usage/log diagnostics; project-scoped
  settings; settings.json fields; storage locations; and built-in tools. Use
  this Skill whenever the user asks to configure, inspect, create, author, or
  troubleshoot any of these areas. It covers the config built-in service
  (config-list/get/set/delete; scopes: settings/snowcfg/proxy/app/
  custom-headers/system-prompt/theme/language/permissions/lsp-config/buddy/
  subAgents/hooks/skills/logs/imagegen/personalization), including project-
  scoped mcpServers/sensitiveCommands/subAgents/hooks/skills via `projectId`,
  the read-only logs scope, imagegen multi-channel settings and top-level
  maxConcurrentImages, masked secrets, and app-control-openSettings.
enable: true
allowed-tools:
  - config-list
  - config-get
  - config-set
  - config-delete
  - user-interaction-askUserQuestion
  - app-control-openSettings
  - bash-terminal-execute
  - filesystem-read
  - filesystem-replace_edit
  - filesystem-create
  - websearch-websearch-search
  - websearch-websearch-fetch
---

# Snow App 文档阅读与配置指导（Docs & Configuration Guide）

当用户请求**配置 MCP 服务器、安装与管理 Skills、创建与编写 Skills、配置 Hooks
与子代理、配置 API 密钥与模型、配置图像生成、配置代理与网络、导入第三方配置
与插件、管理浏览器密码/数据、处理应用更新、个性化与自定义请求头、用量/日志诊断、
项目级设置**，或询问 **settings.json 字段 / 内置工具 / 安全边界 / 数据位置**时，
先阅读应用内置文档，再按文档步骤动手配置，而不是凭记忆操作。

## 1. 先读文档（Read the docs first）

文档随应用安装到 `~/.snow/docs/`（Windows 为 `C:\Users\<用户名>\.snow\docs\`）。
根据用户界面语言选择分支：

- 中文界面 → 读 `~/.snow/docs/zh-CN/`
- English UI → read `~/.snow/docs/en/`

按任务定位文档（路径相对所选语言分支）：

| 任务 | 使用指南（How-to） | 参考手册（Reference） |
| --- | --- | --- |
| 配置 MCP 服务器 | `2-使用指南/1-配置MCP服务器.md`（en: `2-guides/1-configure-mcp.md`） | `3-参考手册/1-settings.json配置参考.md` |
| 安装与管理 Skills | `2-使用指南/2-安装与管理Skills.md`（en: `2-guides/2-install-and-manage-skills.md`） | — |
| 创建与编写 Skills | `2-使用指南/21-创建与编写Skills.md`（en: `2-guides/21-create-and-author-skills.md`） | — |
| 配置 API 密钥与模型 | `2-使用指南/3-配置API密钥与模型.md`（en: `2-guides/3-configure-api-keys.md`） | `3-参考手册/1-settings.json配置参考.md` |
| 配置图像生成 | `2-使用指南/9-图像生成.md`（en: `2-guides/9-image-generation.md`） | `3-参考手册/2-内置工具参考.md`（imagegen 章节与 config 的 imagegen scope） |
| 使用聊天与 AI 助手（界面/对话/命令/回滚/压缩） | `2-使用指南/10-使用聊天与AI助手.md`（en: `2-guides/10-using-chat-and-ai.md`） | — |
| 终端与 SSH 远程管理 | `2-使用指南/11-终端与SSH远程管理.md`（en: `2-guides/11-terminal-and-ssh.md`） | — |
| Git 面板与代码浏览 | `2-使用指南/12-Git面板与代码浏览.md`（en: `2-guides/12-git-and-code-browsing.md`） | — |
| 配置代理与网络 | `2-使用指南/4-配置代理与网络.md`（en: `2-guides/4-configure-proxy.md`） | — |
| 配置 Hooks 与子代理 | `2-使用指南/5-配置Hooks与子代理.md`（en: `2-guides/5-configure-hooks-and-subagents.md`） | — |
| 浏览器自动化 | `2-使用指南/6-浏览器自动化.md`（en: `2-guides/6-browser-automation.md`） | — |
| 代码库索引与代码诊断 | `2-使用指南/7-代码库索引与代码诊断.md`（en: `2-guides/7-codebase-index-and-diagnostics.md`） | — |
| 第三方配置导入与插件 runtime | `2-使用指南/8-第三方配置导入.md`（en: `2-guides/8-third-party-configuration-import.md`） | `3-参考手册/5-安全与信任边界.md` |
| AI 开发协作、经验与前端美化工作流 | `2-使用指南/13-AI开发协作.md`、`2-使用指南/14-AI开发经验与教训.md`、`2-使用指南/15-前端设计与美化工作流.md`（en: `2-guides/13-ai-development-collaboration.md`、`2-guides/14-ai-development-lessons.md`、`2-guides/15-frontend-design-and-beautification-workflow.md`） | `4-架构与开发/2-开发者指南.md` |
| 安全、隐私与工具授权 | `2-使用指南/16-安全隐私与工具授权.md`（en: `2-guides/16-security-privacy-and-tool-authorization.md`） | `3-参考手册/5-安全与信任边界.md` |
| 浏览器设置、密码保险库与本机导入 | `2-使用指南/17-浏览器设置密码与数据导入.md`（en: `2-guides/17-browser-settings-passwords-and-import.md`） | `3-参考手册/4-数据存储位置.md` |
| 应用更新 | `2-使用指南/18-应用更新.md`（en: `2-guides/18-app-updates.md`） | `3-参考手册/5-安全与信任边界.md` |
| 系统提示词、个性化、请求头、主题与快捷键 | `2-使用指南/19-个性化主题与快捷键.md`（en: `2-guides/19-personalization-theme-and-shortcuts.md`） | `3-参考手册/3-配置文件字段参考.md` |
| 用量统计与系统日志 | `2-使用指南/20-用量统计与系统日志.md`（en: `2-guides/20-usage-statistics-and-system-logs.md`） | `3-参考手册/4-数据存储位置.md` |
| 查询内置工具 / 配置域 / 日志 | — | `3-参考手册/2-内置工具参考.md`（en: `3-reference/2-builtin-tools-reference.md`） |
| 查询配置文件字段 | — | `3-参考手册/3-配置文件字段参考.md`（en: `3-reference/3-config-file-field-reference.md`） |

> 若 `~/.snow/docs/` 不存在，说明文档尚未同步，可提示用户重启应用后重试。

## 2. 按文档执行配置（Then apply the configuration）

**通用流程**：任何配置任务，先 `config-list scope=<域>` 查看现状——DB 型域
（subAgents / hooks / imagegen）的响应会附带 **guidance 使用规则引导**（如
创建子代理的关键规则、hook 退出码约定），再按本文与文档步骤执行；需要
`projectId` 时（项目级配置），在 `~/.snow/projects/index.json` 中按项目路径
查 `projectId`（即 directoryId），或直接问用户从界面获取。

通读对应文档后按步骤执行：

- **MCP 服务器（全局）**：用 `config-set` 写 `settings` 域的 `mcpServers` 键
  （value 为服务器名到配置对象的映射，Windows 路径用 `\\` 转义）；
  写入会自动按差集同步到应用数据库，**立即生效**，无需手动同步；
  也可先 `config-get`/`config-list` 查看现状。
- **MCP 服务器（项目级）**：给 `config-set settings mcpServers` 传
  `projectId` 可**全量替换**该项目级 MCP 服务器（value 同样为
  `{name: {type,url,command,args,env,headers,enabled,timeoutMs}}`，写入应用
  数据库立即生效）；`config-get`/`config-delete` 传 `projectId` 读取/清空
  项目级 MCP 服务器。
- **敏感命令（项目级）**：`config-set settings sensitiveCommands [数组]`
  传 `projectId` 全量替换项目级敏感命令（元素 `{commandId, pattern,
  description, enabled}`；commandId 匹配全局规则时为 enabled 覆盖，其余为
  项目自定义规则）；`config-get`/`config-delete` 传 `projectId` 读取/清空。
- **API 密钥与模型（档案）**：多档案存在应用数据库 `api_configs` 表，
  `active-profile.json` 的 `activeProfile` 仅 CLI 兼容层；**运行时以 DB 的
  `is_active` 为准**。`snowcfg` 域读写的是当前生效档案（config.json 镜像）。
  优先用 **`apiProfiles` 域**（写 DB、与 UI 同源、立即生效），详细步骤见
  `2-使用指南/3-配置API密钥与模型.md` 第 5 节。操作速查：
  - **查看全部档案**：`config-list scope=apiProfiles`（apiKey/visionApiKey
    脱敏，isActive 标出生效档案）；当前档案用 `config-list scope=snowcfg`；
  - **新建档案（支持无密钥建档→用户后补密钥）**：`config-set scope=apiProfiles
    key=<档案名> value={baseUrl, advancedModel, basicModel}` 先建无密钥档案，
    用户提供密钥后再 `value={apiKey}` 补上（**空/省略 apiKey 一律保留旧值**，
    不丢密钥）；
  - **改密钥/模型等字段**：`config-set scope=apiProfiles key=<档案名>
    value={apiKey|advancedModel|basicModel|...}`（未提供的字段保留现值，
    configJson 自动组装）；
  - **切换档案**：`config-set scope=apiProfiles key=<档案名>
    value={isActive:true}`（写 DB，**对新会话立即生效**；已有会话绑定创建
    时的档案、不受切换影响——会话隔离；子代理会话严格绑定、档案被删会失败）；
    `scope=app activeProfile` 仅 CLI 兼容层，不改变运行时档案；
  - **删除档案**：先经 `askUserQuestion` 获用户同意，再
    `config-delete scope=apiProfiles key=<档案名> confirmed=true`
    （存储层自动保证至少一个生效档案）；
  - 密钥读取一律脱敏（如 `sk-****abcd`），**不要索要或展示明文密钥**。
- **代理 / 主题等配置**：通过 `config` 工具读写白名单域——`proxy`
  （proxy-config.json）、`custom-headers`、`system-prompt`、`theme`、
  `language`、`permissions`、`lsp-config`、`buddy`。
  文件型配置写后**可能需要重启应用或 UI 重存生效**。
- **子代理**：先 `config-list scope=subAgents` 查看现有代理与响应中的
  **创建规则 guidance**；`config-set scope=subAgents key=<agentId> value={name,
  description, systemPrompt, toolsJson, configProfile}` 创建/更新；
  `config-delete scope=subAgents key=<agentId>` 删除；写入应用数据库**立即生效**。
  关键规则：
  - `toolsJson` 接受 JSON 字符串或工具名数组；**显式工具名列表必须传
    `projectId`（项目级）**——全局代理只能用 `"*"`（全部工具）或空列表；
    每个工具名必须是该项目已启用的工具全名
  - `configProfile` 必须是已存在的 API 配置档名，留空 = 跟随全局生效配置
  - `systemPrompt` 必须**完全自包含**（子代理无会话历史：使命/原则/流程/工具用法/输出格式）
  - 项目级代理激活时优先于同名全局代理；内置 `agent_general` 不可修改/删除
  - 详细规则见文档 `2-使用指南/5-配置Hooks与子代理.md` 第 2 节
- **Hooks**：`config-list scope=hooks` 查看；`config-set scope=hooks
  key=<hookType> value={rules:[{description, matcher?, hooks:[{type,
  command?|prompt?|content?, timeout?, enabled:true}]}]}` 配置；传 `projectId`
  为项目级。**每个需要执行的 action 都必须显式写 `enabled: true`；缺省、
  null 或 false 均不会执行。**写入应用数据库立即生效。
- **全局规则（personalization）**：`~/.snow/ROLE.md` 是全局角色/规则文件
  （纯文本 markdown，非 JSON）。`config-list scope=personalization` 返回
  键规格 + 长度/预览；`config-get scope=personalization key=role` 返回规则
  全文（文件不存在时返回 null）；`config-set scope=personalization key=role
  value=<字符串>` 整体替换规则全文（写前自动备份，写后下一个对话生效）；
  `config-delete scope=personalization key=role` 删除 ROLE.md（恢复默认，
  需用户确认）。修改后提示用户到「设置 → 个人化设置」或重启应用生效。
- **管理 Skills**：先读安装管理指南。扫描同 ID 覆盖优先级为
  `<project>/.snow/skills` > `<project>/.agents/skills` > `~/.snow/skills` >
  `~/.agents/skills`。用 `config-list scope=skills` 查看有效 `path`、状态与
  GitHub 已装记录；用 `config-set scope=skills key=<skillId>
  value={enabled: true|false}` 切换开关——config API 参数名是 `enabled`，
  但不传 `projectId` 时实际改写 SKILL.md frontmatter 的 **`enable`** 字段；
  传 `projectId` 时写入项目数据库覆盖，且优先于 frontmatter。GitHub 安装用
  `value={url, location}`，`location` 为 `global` 或 `project`（项目安装需
  `projectId`）。`config-delete scope=skills key=<skillId>` 仅卸载
  `~/.snow/skills-registry.json` 已登记的 GitHub Skill，且删除前必须确认；
  手动放置或应用自带 Skill 不在此卸载边界内。
- **创建 / 编写 Skills**：必须先完整阅读
  `2-使用指南/21-创建与编写Skills.md`（en:
  `2-guides/21-create-and-author-skills.md`）。真实 frontmatter 字段是
  **`enable` 与 `allowed-tools`**，不是 `enabled` / `allowed_tools`；技能 ID
  来自 `SKILL.md` 相对扫描根目录的路径，不来自 `name`。创建前检查四个扫描
  根目录的同 ID 覆盖，使用最小权限工具列表，创建后用 config list/get 核对
  `id`、`path`、`defaultEnabled`、`enabled` 与 `allowedTools`，再运行只读测试。
- **图像生成（多渠道）**：用 `config-list scope=imagegen` 查看各渠道状态
  （enabled/model/configured）与全局 `maxConcurrentImages`（最大并发生成数
  1-8，默认 4，AI 一次请求多张时最多同时生成的张数）；写入用 `config-set
  scope=imagegen value={channels:[...]}` 全量替换，或 `{<channelId>: {...}}`
  按渠道合并（**未提供的字段保留原值**，`maxConcurrentImages` 也会保留除非
  显式提供），或 `{maxConcurrentImages: 6}` 单独调整并发数（自动收敛 1-8）；
  `config-get scope=imagegen key=<channelId|openai|gemini|maxConcurrentImages>`
  读取（省略 key 返回完整设置）；`config-delete scope=imagegen` 清空。写入
  应用数据库 `system_settings` 表（code=`imagegen_settings`）**立即生效**，
  与设置面板同源；图形界面为**设置 → 图像生成**
  （`app-control-openSettings page=imagegen-settings`）。注意：渠道需
  `enabled`+`apiKey`+`model` 三者齐备才可用，所有渠道均未配置时
  `imagegen-generate` 工具对模型隐藏；`apiKey` 读取一律脱敏
  （如 `sk-e****7890`），**不要索要或展示明文密钥**。
- **日志诊断（只读）**：应用异常时用 `config-list scope=logs` 列出
  `~/.snow/log` 下的日志文件（含最近 error 文件摘要），用 `config-get
  scope=logs key=<文件名>` 或级别简写（`error`/`warn`/`info`/`debug`，读取
  今天的对应文件）读取日志尾部（可选 `limit` 控制行数，默认 200、最大
  2000）定位异常；`config-delete scope=logs key=<精确文件名>` 清理日志。
  日志路径也可在 **设置 → 系统日志**（`app-control-openSettings page=system-logs`）
  查看。
- **安全须知**：`config` 工具只能读写白名单内的配置域与键，写前有类型与
  嵌套结构校验（`codebase`/`custom-headers.schemes`/`system-prompt.prompts`/
  `lsp-config.servers` 深度校验，防止写坏内部字段）；`config-get` 对
  `apiKey`/`visionApiKey`/自定义请求头/系统提示词等敏感键强制脱敏
  （如 `sk-****abcd`），**不要向用户索要或试图获取明文密钥**；每次写入前
  自动备份到 `~/.snow/.config-backups/`，写入为原子替换，**写入成功后清理
  本次备份**（临时安全网）。
- **删除必须二次确认**：`config-delete` 是破坏性操作，**调用前必须先通过
  `user-interaction` 的 `askUserQuestion` 向用户展示将要删除的 scope/key 与
  影响，获得明确同意后携带 `confirmed: true` 调用**，否则会被拒绝。特别
  注意：`imagegen` 域的 delete 是**清空全部图像生成渠道**（不是只删命名
  键）；`skills` 域 delete 卸载技能；`logs` 域 delete 删除日志文件。任何
  delete 前都先 `config-get`/`config-list` 确认现状。
- **打开设置页**：用 `app-control-openSettings page=<page id>`。全部 21 个
  页面 id：`api-settings`（API 档案）、`imagegen-settings`（图像生成）、
  `image-library`（图片库）、`proxy-browser-settings`（代理与浏览器）、
  `codebase-settings`（代码库）、`system-prompt-settings`（系统提示词）、
  `personalization-settings`（个性化）、`custom-headers-settings`（自定义请求头）、
  `mcp-settings`（MCP）、`import-settings`（第三方配置导入）、`skills-settings`
  （Skills）、`sub-agent-settings`（子代理）、`sensitive-command-settings`
  （敏感命令）、`hooks-settings`（Hooks）、`theme-settings`（主题）、
  `terminal-settings`（终端）、`browser-settings`（浏览器设置）、
  `keyboard-shortcuts-settings`（快捷键）、`privacy-settings`（隐私）、
  `usage-settings`（用量统计）、`system-logs`（系统日志）。
  **agent 可配置 vs UI-only**：除以下页面外均可由 agent 用 config 工具直接
  读写（见上文各域）：`import-settings`（导入）、`terminal-settings`（终端）、
  `keyboard-shortcuts-settings`（快捷键）、`privacy-settings`（隐私，部分由
  `permissions` 域覆盖）、`usage-settings`（用量，仅 `logs` 域只读覆盖）、
  `image-library`（图片库，只读展示）、`browser-settings`（浏览器设置——
  页面可打开，但**起始页/密码为 UI-only**，agent 不能读取或修改密码）——
  这些为 UI-only，agent 只能打开设置页引导用户操作，不能直接改配置。
- **编辑配置文件**：需要读写 `~/.snow/` 下的 JSON 时使用 filesystem 工具，
  注意 **Windows 路径中的反斜杠必须写成 `\\`**（JSON 转义），否则
  `\f`/`\n`/`\v` 会被解析为转义序列导致配置失效。

## 3. 完成确认（Confirm with the user）

配置完成后，向用户确认结果，并主动询问是否需要进一步验证
（例如获取 MCP 工具列表验证连通性、读取日志确认异常已消失）。
