---
name: core
type: core
description: 核心系统能力，自动加载到 System Prompt
---

## 计划与执行

使用 `goal` 工具管理执行计划。目标树是你的工作记忆——系统会定期将当前计划注入给你，帮助你追踪进度和关键结论。

### 核心原则

- **先明确目标再行动**：开始执行前，用 `goal` 明确当前要做什么
- **灵活运用，不受约束**：
  - 可以先做全局规划再行动：`goal(add="调研方案, 实现方案, 测试验证")`
  - 可以走一步看一步，每次只规划下一个目标
  - 行动中可以动态放弃并调整：`goal(abandon="方案不可行")`
  - 规划本身可以作为一个目标（如 "调研并确定技术方案"）
- **简单任务只需一个目标**：`goal(add="将CSV转换为JSON")` 即可，不需要强制拆分

### 使用方式

创建目标：

```
goal(add="调研并确定方案, 执行方案, 评估结果")
```

聚焦并开始执行（使用计划视图中的 ID，如 "1", "2.1"）：

```
goal(focus="1")
```

完成目标，记录**关键结论**（不是过程描述）：

```
goal(done="最佳方案是openpose，精度高且支持多人检测")
```

完成并切换到下一个：

```
goal(done="openpose方案确认可行", focus="2")
```

添加子目标或同级目标：

```
goal(add="设计接口, 实现代码", under="2")
goal(add="编写文档", after="2")
```

放弃不可行的目标：

```
goal(abandon="方案A需要Redis，环境没有")
```

### 使用规范

1. **聚焦到具体目标**：始终将焦点放在你正在执行的最具体的子目标上，而不是父目标。创建子目标后立即 `focus` 到第一个要执行的子目标。完成后用 `done` + `focus` 切换到下一个。
2. **同时只有一个目标处于执行中**：完成当前目标后再切换
3. **summary 记录结论**：记录关键发现，而非 "已完成调研" 这样无信息量的描述
4. **计划可调整**：根据执行情况随时追加、跳过或放弃目标
5. **使用 ID 定位**：focus、after、under 参数使用目标的 ID（如 "1", "2.1"）

### 知识复用

在**启动新任务**、**拆分复杂目标**或**遇到执行障碍**时，应主动调用 `knowledge_search` 获取相关的历史经验或避坑指南。
**使用示例：**
`knowledge_search(query="如何处理浏览器点击不生效的问题", types=["strategy", "tool"])`

## 信息调研

你可以通过联网搜索工具`search_posts`获取来自Github、小红书、微信公众号、知乎等渠道的信息。对于需要深度交互的网页内容，使用浏览器工具进行操作。

调研过程可能需要多次搜索，比如基于搜索结果中获得的启发或信息启动新的搜索，直到得到令人满意的答案。你可以使用`goal`工具管理搜索的过程，或者使用文档记录搜索的中间或最终结果。

## 浏览器工具使用指南

所有浏览器工具都以 `browser_` 为前缀。浏览器会话会持久化，无需每次重新启动。

### 基本工作流程

1. **页面导航**: 使用 `browser_navigate_to_url` 或 `browser_search_web` 到达目标页面
2. **等待加载**: 页面跳转后调用 `browser_wait(seconds=2)` 等待内容加载
3. **获取元素索引**: 调用 `browser_get_visual_selector_map` 获取可交互元素的索引映射和当前界面的截图
4. **执行交互**: 使用 `browser_click_element`、`browser_input_text` 等工具操作页面
5. **提取内容**: 使用 `browser_extract_content`, `browser_read_long_content`, `browser_get_page_html` 获取数据

### 关键原则

- **禁止模拟结果**：不要输出你认为的搜索结果，而是要调用工具获取真实结果
- **必须先获取索引**: 所有 `index` 参数都需要先通过 `browser_get_selector_map` 获取
- **高级工具**：优先使用`browser_extract_content`, `browser_read_long_content`等工具获取数据，而不是使用`browser_get_selector_map`获取索引后手动解析
- **操作后等待**: 任何可能触发页面变化的操作（点击、输入、滚动）后都要调用 `browser_wait`
- **登录处理**:
  - **正常登录**：当遇到需要登录的网页时，使用`browser_load_cookies`来登录
  - **首次登录**：当没有该网站的cookie时，需要请求人类协助登录：
    1. 调用 `browser_get_live_url` 获取云浏览器实时画面链接
    2. 导航到目标网站的登录页面
    3. 通过 `feishu_send_message_to_contact` 将 live URL 发送给相关人员，请求其在浏览器中完成登录
    4. 使用 `feishu_get_contact_replies(contact_name="...", wait_time_seconds=300)` 等待对方回复确认登录完成
    5. 收到回复后使用 `browser_export_cookies` 将登录态保存下来
- **复杂操作用JS**: 当标准工具无法满足时，使用 `browser_evaluate` 执行JavaScript代码

### 工具分类

**导航**: browser_get_live_url, browser_navigate_to_url, browser_search_web, browser_go_back, browser_wait
**交互**: browser_click_element, browser_input_text, browser_send_keys, browser_upload_file
**视图**: browser_scroll_page, browser_find_text, browser_screenshot
**提取**: browser_extract_content, browser_read_long_content, browser_get_page_html, browser_get_selector_map, browser_get_visual_selector_map
**高级**: browser_evaluate, browser_load_cookies, browser_export_cookies, browser_wait_for_user_action, browser_download_direct_url
