catpane-ios-console
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCatPane iOS console MCP
CatPane iOS控制台MCP
Use this skill when you need iOS logs from CatPane's MCP runtime. It is for live debugging, reproductions, and incremental monitoring of simulator or physical-device output.
当你需要从CatPane的MCP运行时获取iOS日志时使用此技能。它适用于模拟器或物理设备输出的实时调试、问题复现以及增量监控。
Use it when
适用场景
- you need to discover whether a useful capture already exists
- you need to start a scoped capture for an iOS simulator or physical device
- you need focused log queries instead of dumping raw console output
- you need to poll for new high-signal logs during an investigation
- 你需要确认是否已存在可用的捕获任务
- 你需要为iOS模拟器或物理设备启动一个范围化的捕获任务
- 你需要针对性的日志查询,而非导出原始控制台输出
- 你需要在排查问题期间轮询获取新的高价值日志
Tool surface
工具功能
- — inspect captures and optionally include all currently available capture devices
get_status - — list all currently available capture devices; focus on iOS entries
list_devices - — start buffering console logs for an iOS capture target
start_capture - — read buffered logs with filters and cursor pagination
get_logs - — reset the buffered window for a capture without stopping it
clear_logs - — stop and remove a capture
stop_capture - — detect structured crash reports from buffered logs
get_crashes - — pin high-signal matches so they survive main-buffer overflow
create_watch - — inspect active pinned watches
list_watches - — poll retained watch matches incrementally
get_watch_matches
Supporting docs:
- tools/status.md —
get_status - tools/list-devices.md —
list_devices - tools/capture.md — ,
start_capture,clear_logsstop_capture - tools/get-logs.md —
get_logs
- — 检查捕获任务状态,可选择包含所有当前可用的捕获设备
get_status - — 列出所有当前可用的捕获设备;重点关注iOS条目
list_devices - — 为iOS捕获目标启动控制台日志缓冲
start_capture - — 通过过滤器和游标分页读取缓冲日志
get_logs - — 在不停止捕获的情况下重置缓冲窗口
clear_logs - — 停止并移除捕获任务
stop_capture - — 从缓冲日志中检测结构化崩溃报告
get_crashes - — 固定高价值匹配日志,使其不会因主缓冲区溢出而丢失
create_watch - — 查看当前活跃的固定监控任务
list_watches - — 增量轮询保留的监控匹配结果
get_watch_matches
相关文档:
- tools/status.md —
get_status - tools/list-devices.md —
list_devices - tools/capture.md — ,
start_capture,clear_logsstop_capture - tools/get-logs.md —
get_logs
Recommended workflow
推荐工作流程
- Check runtime state first.
- Call with
get_status.{"includeDevices": true} - If a suitable capture already exists and is , reuse it.
running - If you only need device identifiers, is the lighter call.
list_devices - Both calls can include Android devices too, so filter to for this skill.
platform: "iOS"
- Call
- Start capture only when needed, and scope it early.
- Call with
start_capturewhen more than one capture target is available.device - For iOS, prefer ,
process, and simulatortextscope so irrelevant lines never enter the main buffer.predicate - Use on physical iOS captures when you need a lighter default stream.
quiet: true - Use only when replacing an existing capture on the same target.
restart: true
- Call
- Clear logs before a fresh reproduction.
- Call to reset the main buffer and any retained watch matches.
clear_logs
- Call
- Create a pinned watch for the important signal.
- Call for the app process, subsystem, or key error text before reproducing.
create_watch - Poll during the session; retained matches survive main-buffer overflow.
get_watch_matches
- Call
- Check crashes early.
- Call after reproduction to surface structured crash reports without paging raw logs first.
get_crashes
- Call
- Query with focused filters.
- Keep pulls small.
get_logs - Start with ,
limit, andminLevel.text - Use ,
process, andsubsystemto narrow results to specific system components.category - Prefer targeted queries over large unfiltered pulls.
- Keep
- Page with cursors.
- is cursor-based.
get_logs - Reuse the same , pass
orderas the nextpage.nextCursor, and stop whencursoris false.page.hasMore
- Use for incremental polling.
since- Keep the last processed timestamp.
- Pass it back as on the next call.
since - is inclusive, so expect one boundary overlap and dedupe by
sinceif needed.seq
- Stop capture only when you are done.
- Use when the capture is no longer needed.
stop_capture
- Use
- 先检查运行时状态
- 调用并传入
get_status{"includeDevices": true} - 如果已有合适的捕获任务处于状态,则复用它
running - 若仅需设备标识符,是更轻量的调用
list_devices - 这两个调用都会包含Android设备,因此针对此技能需筛选
platform: "iOS"
- 调用
- 仅在需要时启动捕获,并尽早设置范围
- 当存在多个捕获目标时,调用并指定
start_capturedevice - 对于iOS,优先使用、
process和模拟器text来设置范围,避免无关日志进入主缓冲区predicate - 在物理iOS设备捕获时,若需要更轻量化的默认流,可使用
quiet: true - 仅在替换同一目标上的现有捕获任务时使用
restart: true
- 当存在多个捕获目标时,调用
- 在全新复现问题前清除日志
- 调用重置主缓冲区和所有保留的监控匹配结果
clear_logs
- 调用
- 为重要日志创建固定监控
- 在复现问题前,调用针对应用进程、子系统或关键错误文本设置监控
create_watch - 在会话期间轮询;保留的匹配结果不会因主缓冲区溢出而丢失
get_watch_matches
- 在复现问题前,调用
- 尽早检查崩溃信息
- 复现问题后调用,无需先分页查看原始日志即可获取结构化崩溃报告
get_crashes
- 复现问题后调用
- 使用针对性过滤器进行查询
- 控制的返回数据量
get_logs - 先使用、
limit和minLevel参数text - 使用、
process和subsystem将结果缩小到特定系统组件category - 优先使用针对性查询,而非大量无过滤的日志导出
- 控制
- 使用游标进行分页
- 基于游标实现分页
get_logs - 保持相同的,将
order作为下一次调用的page.nextCursor,当cursor为false时停止分页page.hasMore
- 使用进行增量轮询
since- 记录最后处理的时间戳
- 将其作为参数传入下一次调用
since - 是包含性的,因此可能会出现一次边界重叠,必要时可通过
since去重seq
- 仅在完成操作后停止捕获
- 当不再需要捕获任务时,使用停止它
stop_capture
- 当不再需要捕获任务时,使用
Query rules
查询规则
- Always prefer or
captureIdonce more than one capture exists. Unqualified calls only auto-resolve when exactly one capture is registered.device - reads the main in-memory ring buffer for a capture. Older entries can age out when the buffer reaches capacity.
get_logs - +
create_watchgive you a second retained path for relevant lines; use that for long or noisy iOS sessions.get_watch_matches - is exclusive:
cursor- returns older entries with
order: "desc"seq < cursor - returns newer entries with
order: "asc"seq > cursor
- Use to decide whether to continue paging.
page.hasMoreis still the correct next anchor.page.nextCursor - is a threshold, not an exact match. Example:
minLevelreturnswarn,warn, anderror.fatal - is a case-insensitive substring filter over process name, subsystem, category, and message.
text - is a case-insensitive substring filter on the originating process name.
process - is a case-insensitive substring filter on the logging subsystem.
subsystem - is a case-insensitive substring filter on the logging category.
category - must use the format:
sinceMM-DD HH:MM:SS.mmm
- 当存在多个捕获任务时,始终优先使用或
captureId。只有当恰好注册了一个捕获任务时,未指定参数的调用才会自动解析device - 读取捕获任务的主内存环形缓冲区。当缓冲区达到容量时,较旧的条目会被淘汰
get_logs - +
create_watch为相关日志提供了第二条保留路径;在长时间或高噪声的iOS会话中使用此功能get_watch_matches - 是排他性的:
cursor- 返回
order: "desc"的旧条目seq < cursor - 返回
order: "asc"的新条目seq > cursor
- 使用决定是否继续分页。
page.hasMore仍是正确的下一个锚点page.nextCursor - 是阈值,而非精确匹配。例如:
minLevel会返回warn、warn和error级别的日志fatal - 是对进程名称、子系统、类别和消息的不区分大小写的子字符串过滤器
text - 是对源进程名称的不区分大小写的子字符串过滤器
process - 是对日志子系统的不区分大小写的子字符串过滤器
subsystem - 是对日志类别的不区分大小写的子字符串过滤器
category - 必须使用格式:
sinceMM-DD HH:MM:SS.mmm
Quick start
快速开始
get_statusjson
{
"includeDevices": true
}start_capturejson
{
"device": "My iPhone",
"process": "MyApp",
"text": "timeout",
"quiet": true
}create_watchjson
{
"device": "My iPhone",
"name": "app-errors",
"pattern": "timeout",
"minLevel": "error",
"tag": "MyApp"
}get_watch_matchesjson
{
"device": "My iPhone",
"watchId": "w1",
"sinceSeq": 0,
"limit": 100
}get_logsjson
{
"device": "My iPhone",
"order": "desc",
"limit": 50,
"minLevel": "error",
"process": "MyApp",
"subsystem": "com.example.app"
}get_statusjson
{
"includeDevices": true
}start_capturejson
{
"device": "My iPhone",
"process": "MyApp",
"text": "timeout",
"quiet": true
}create_watchjson
{
"device": "My iPhone",
"name": "app-errors",
"pattern": "timeout",
"minLevel": "error",
"tag": "MyApp"
}get_watch_matchesjson
{
"device": "My iPhone",
"watchId": "w1",
"sinceSeq": 0,
"limit": 100
}get_logsjson
{
"device": "My iPhone",
"order": "desc",
"limit": 50,
"minLevel": "error",
"process": "MyApp",
"subsystem": "com.example.app"
}