Desktop pet application with Live2D + PNG sprites + LLM chat (Electron + Vite + React). Includes built-in tools for browser control, file operations, clipboard management, system notifications, and MCP server integration.
Desktop Pet exposes 11 tools with complete input schemas and descriptions in Chinese. Naming follows verb_noun convention (open_url, web_search, list_installed_apps). Descriptions are detailed and contextual (avg ~180 chars), explaining WHEN to use each tool and warning about side effects. However, output schemas are entirely undocumented, no structured response format is specified for any tool. Error handling is minimal; handlers throw generic errors without recovery guidance. Parameters lack type constraints (e.g., 'limit' has no min/max bounds). The server is STDIO-only, capping protocol readiness at 50. Tool composition is reasonable (each does one thing), but missing pagination support for list_installed_apps and no idempotency guarantees.
读取系统剪贴板的文本内容。
返回当前本地时间 + ISO + 时区 + 星期 + Unix 时间戳。AI 不知道"今天是几号 / 现在几点"时调用这个。
列出一个本地目录下的所有文件和子目录(只列一层,不递归)。用户说「看看这个项目 / 文件夹有什么 / 目录结构」时调这个。返回 JSON 数组,每项含 name / type(file/dir)/ size。
列出系统已安装应用(从开始菜单/Applications 文件夹扫 .lnk / .app)。可选 keyword 做模糊筛选。返回应用名 + 启动路径列表。
弹一个系统级桌面通知(右下角 toast)。
按名字模糊匹配并启动一个已安装应用(优先开始菜单/Applications)。比如 "vscode" / "微信" / "chrome"。⚠ 真启动程序,需要确认。
用系统默认程序「启动」一个本地文件 / 文件夹 / 可执行文件(等同于双击)。⚠ 注意:这只是把它交给资源管理器/默认程序去打开窗口,**不是读取内容**。如果用户说「看看 / 读 / 查看 / 检查 / 分析 / 总结」一个文件或目录的「内容」,请使用 filesystem MCP server 的 read_file / read_text_file / list_directory / directory_tree 等工具,而不要用这个 open_path。只有用户明确说「打开 / 启动 / 跑 / 运行 / 在资源管理器里看」时才用 open_path。
No output schemas documented for any tool. LLMs cannot predict response structure, forcing them to parse unstructured text and plan downstream calls blindly.
Numeric parameters lack bounds. 'limit' in list_installed_apps has no min/max; LLMs could pass 0, negative, or absurdly large values.
Error handling is minimal. Handlers throw generic errors ('url is required', 'path not found') without recovery guidance. LLMs cannot determine if errors are retryable or user-fixable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
在用户默认浏览器中打开一个 URL(http/https/file 等)。不会等待用户行为。比如打开网页、文档、本地 HTML 等。
读取一个本地文本文件的内容(代码、配置、文档等)并返回字符串。用户说「看看 / 读 / 查看 / 分析 / 总结 / 解释」一个具体文件的内容时调这个,**不要**用 app__open_path(那只是启动外部程序窗口)。⚠ 安全:仅返回文本(检测到二进制会拒绝)。最多读取 256KB,超过会截断。用户会看到一个"AI 想读取 X 文件"的确认弹窗,点允许才会真读。路径要绝对路径(Windows 形如 D:\\path\\to\\file.ts,Unix 形如 /home/user/file.txt)。
写入文本到系统剪贴板(覆盖原内容)。⚠ 修改剪贴板,需要确认。
用搜索引擎搜一个关键词,**在用户的默认浏览器里打开搜索结果页**。⚠ 你看不到搜索结果(本工具不会把网页内容返回给你),它只是替用户打开浏览器搜索页。所以如果用户希望你「告诉他答案」「给他总结」,这个工具帮不上;只有用户明确说「帮我搜一下」「打开搜索」时才调用。engine 可选: bing(默认) / google / baidu / duckduckgo。
list_installed_apps returns unbounded results (default 50, no pagination). Large result sets waste tokens and degrade LLM reasoning.
No idempotency guarantees. Tools like open_app and set_clipboard have side effects but no confirmation or dry-run support. Agents cannot safely retry on ambiguous failures.