> ## Documentation Index
> Fetch the complete documentation index at: https://gugu.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 开发与调试

> 从文件夹安装，检查权限、页面、窄屏与实际交互。

先让 App 在自己的测试材料上完成一次工作，再准备提交市场。制作包、同意权限和验证结果是三个步骤。

## 两种开发入口

**手写文件**：按[起步示例](/extensions)制作目录，从咕咕的 App 管理中安装。改过代码后重新安装，让咕咕校验新的清单与文件。不要把文件复制或软链到咕咕的数据目录。

**让咕咕内的 Agent 制作**：先读 `guide_read apps` 和相关专题。`app_create` 写出目录，`app_install` 安装，`app_check` 检查加载、错误、页面快照和图片。部分工具在 `catalog_list` 中查找。外部编辑器不具备咕咕内的安装工具，完成包后由人安装。

不申请权限的包可直接安装；自己已安装的 App 若未增加权限，重装通常直接替换。首次声明权限或新增权限时，咕咕向人出示确认单。拒绝、关闭或超时均不算安装完成。

## 页面能运行什么

| 内容 | 当前限制 |
| - | - |
| JavaScript | 包内文件，使用 script src；内联脚本、CDN 脚本、eval 和 new Function 被拒绝 |
| CSS | 支持内联样式；优先使用平台样式和 --em- 主题变量 |
| 图片、字体、音视频 | 可来自包内或 network 声明过的 HTTPS 域名；代码仍须在包内 |
| 网络请求 | 仅声明域名的 HTTPS/WSS；本机、内网名和 IP 字面量被拒绝 |
| 页面系统访问 | 没有 Node、require、Electron 接口；不能访问其他 App 的页面 |
| 嵌套内容 | 不支持 iframe、object、表单提交或打开新窗口 |

默认用语义 HTML，页面已经有咕咕的样式。自定义绘图或编辑器使用 `--em-background`、`--em-foreground`、`--em-border` 等变量，跟随明暗主题。图标按钮提供可读名称，输入框提供 label。

普通页面隐藏或挪动后仍可能存活；不要依赖切换页签触发重新加载。重启、升级或撤权会重新加载入口。真实数据写入共享文件或 App 私有存储，别只留在内存里。

## 检查一次真实操作

1. 安装后先确认页面打开，错误区域清楚，没有只画出界面却无法点击的情况。
2. 输入并保存一条数据，退出 App 后重开，检查它仍在；共享 App 再让第二位成员检查同一文件。
3. 切明暗主题，缩窄页面，检查键盘、中文输入与按钮标签。
4. 收回一项已申请权限，检查功能说明失败原因；重新授权后再试。
5. 模拟没有数据和读取失败，确保这两种情况显示不同。

用 `app_check` 时，按快照里的角色和名称定位控件，可传 click、fill、press、waitFor 等 steps，返回的 page 可用于接着操作。检查截图里的窄屏、亮色和暗色，不只看 `ok`。

程序启动失败看 App 管理中的状态和最后错误输出。工具已经安装不等于程序已经成功运行；页面调用程序时也要处理错误。

## 清单校验

安装会用客户端自己的 schema 校验。参与产品开发、有产品源码环境的开发者还可按仓库 `gugu-extension` skill 在不启动界面的情况下调用 `safeParseExtensionManifest`。

无论采用哪种校验，都先准备一个应当失败的清单，例如把 id 写成 `notes.starter` 或把 apiVersion 写成 999，确认它被拒绝；再确认正常示例通过。

要上架时，另跑[市场校验](/apps/publishing)。市场校验检查来源和发布包，不能代替页面功能验收。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.