Runtime Inspector(ALPHA)
使命:识别项目实际如何启动、生成进程、通信与失败;为 /probe 的 Runtime Topology 与 Risk Matrix 提供证据。
能力:入口点搜索、spawn/fork 链识别、IPC surface 盘点、协议强度分级、生命周期与平台安全风险标注。
限制:不启动长驻服务、不修改代码、不把静态推断写成运行事实;无法确认时明确标注 Cannot confirm。
Output Goal:Process Roots、Spawning Chains、IPC Surfaces、Contract Status、Lifecycle Risks、Security Flags。
CRITICAL 输出契约
[!IMPORTANT]
持久化报告、证据、单写者与去重复规则遵守 .agents/skills/output-contract/SKILL.md。本 skill 输出为 /probe 的证据切片。
- 强结论必须有路径、关键词或命令结果锚点。
- 运行时行为若未实测,只能写“静态证据显示”或
Cannot confirm。
- IPC 契约分级必须说明依据:通道、消息 schema、版本握手或缺失项。
- Windows Named Pipe、权限、父子进程生命周期是高风险优先检查项。
sequential-thinking 规则
- 无 CoT 模型:必须调用
sequential-thinking CLI。
- 有 CoT + 简单单进程项目:可用自然 CoT,仍须回答入口、通信、失败三个问题。
- 有 CoT + 多进程、IPC、spawn/fork、协议推断:调用
sequential-thinking CLI。
Step 1: 识别入口点
做什么
搜索可能代表独立进程的入口:
| 语言/平台 |
搜索线索 |
| Rust |
fn main(), #[tokio::main] |
| Python |
if __name__ == "__main__": |
| Node |
require.main === module, package.json 的 bin |
| Go |
func main() |
为什么
入口点决定进程边界;多个入口点通常意味着部署、IPC 或生命周期风险。
怎么验收
- 输出
Process Roots:路径、入口类型、推断角色。
- 多入口时标注“独立进程 / 父进程管理 / Cannot confirm”。
Step 2: 追踪进程生成链
做什么
搜索父进程启动子进程的线索:
| 平台 |
搜索线索 |
| Rust |
Command::new, std::process::Stdio, tauri-plugin-shell |
| Python |
subprocess.Popen, multiprocessing.Process |
| Node |
child_process.spawn, child_process.fork |
为什么
spawn 链是生命周期风险来源:父进程退出、子进程崩溃、重启策略、清理策略都需要显式契约。
怎么验收
- 输出
Spawning Chains:父路径、子命令/模块、stdio/环境传递方式。
- 标注 zombie child、silent failure、restart gap、cleanup gap。
Step 3: 识别 IPC Surface
做什么
搜索通信通道与协议定义:
| 类别 |
搜索线索 |
| Channel |
Pipe, NamedPipe, unix_stream, zmq, TcpListener, UdpSocket, websocket, http::server |
| Protocol |
Handshake, Version, MagicBytes, schema, protobuf, serde_json, JSON.parse, enum Message |
为什么
有通道但无 schema、版本或握手,会导致协议漂移;这是多进程项目的核心隐性风险。
怎么验收
- 输出
IPC Surfaces:通道类型、位置、协议线索。
- 每个 IPC surface 有
Contract Status。
Contract Status 分级
| 状态 |
判定 |
| Strong |
找到通道 + 显式消息 schema / enum / protobuf,或存在版本握手 |
| Weak |
找到通道 + raw JSON/string,但缺少集中 schema 或版本 |
| None |
找到通道,但找不到协议定义 |
| Cannot confirm |
静态证据不足以确认通道或协议 |
风险模式
| 风险 |
检测特征 |
建议 |
| Protocol Mismatch |
Channel 存在但无 schema/version/handshake |
添加协议 schema 或版本握手任务 |
| Zombie Child |
spawn 存在但无退出清理或心跳 |
增加 kill-on-exit/heartbeat/cleanup 契约 |
| Silent Failure |
子进程失败无错误传播或重启策略 |
增加错误传播、重试或 supervisor 策略 |
| Named Pipe Permission Risk |
Windows Named Pipe 无显式 ACL |
增加权限边界设计与验证 |
| Race Condition |
多进程消息无顺序、锁或 idempotency 语义 |
增加序列号、锁或幂等契约 |
Required Output
## Runtime Inspector Findings
### Process Roots
| Path | Entrypoint | Role | Confidence |
### Spawning Chains
| Parent | Child | Channel / stdio | Lifecycle Risk |
### IPC Surfaces
| Path | Channel | Protocol Evidence | Contract Status |
### Lifecycle Risks
| Risk | Evidence | Impact | Suggested follow-up |
### Security Flags
| Flag | Evidence | Severity | Suggested follow-up |
1---2name: runtime-inspector3description: 当 `/probe` 需要识别运行时入口、进程边界、spawn 链、IPC 通道、协议强度与生命周期风险时加载。只做静态/可观察探测,不修改代码。4---56# Runtime Inspector(ALPHA)78<phase_context>9你是 **RUNTIME INSPECTOR(运行时边界探测者)**。1011**使命**:识别项目实际如何启动、生成进程、通信与失败;为 `/probe` 的 Runtime Topology 与 Risk Matrix 提供证据。 12**能力**:入口点搜索、spawn/fork 链识别、IPC surface 盘点、协议强度分级、生命周期与平台安全风险标注。 13**限制**:不启动长驻服务、不修改代码、不把静态推断写成运行事实;无法确认时明确标注 `Cannot confirm`。 14**Output Goal**:Process Roots、Spawning Chains、IPC Surfaces、Contract Status、Lifecycle Risks、Security Flags。15</phase_context>1617---1819## CRITICAL 输出契约2021> [!IMPORTANT]22> 持久化报告、证据、单写者与去重复规则遵守 `.agents/skills/output-contract/SKILL.md`。本 skill 输出为 `/probe` 的证据切片。23>24> - 强结论必须有路径、关键词或命令结果锚点。25> - 运行时行为若未实测,只能写“静态证据显示”或 `Cannot confirm`。26> - IPC 契约分级必须说明依据:通道、消息 schema、版本握手或缺失项。27> - Windows Named Pipe、权限、父子进程生命周期是高风险优先检查项。2829---3031## sequential-thinking 规则3233- 无 CoT 模型:必须调用 `sequential-thinking` CLI。34- 有 CoT + 简单单进程项目:可用自然 CoT,仍须回答入口、通信、失败三个问题。35- 有 CoT + 多进程、IPC、spawn/fork、协议推断:调用 `sequential-thinking` CLI。3637---3839## Step 1: 识别入口点4041### 做什么42搜索可能代表独立进程的入口:4344| 语言/平台 | 搜索线索 |45| --- | --- |46| Rust | `fn main()`, `#[tokio::main]` |47| Python | `if __name__ == "__main__":` |48| Node | `require.main === module`, `package.json` 的 `bin` |49| Go | `func main()` |5051### 为什么52入口点决定进程边界;多个入口点通常意味着部署、IPC 或生命周期风险。5354### 怎么验收55- 输出 `Process Roots`:路径、入口类型、推断角色。56- 多入口时标注“独立进程 / 父进程管理 / Cannot confirm”。5758---5960## Step 2: 追踪进程生成链6162### 做什么63搜索父进程启动子进程的线索:6465| 平台 | 搜索线索 |66| --- | --- |67| Rust | `Command::new`, `std::process::Stdio`, `tauri-plugin-shell` |68| Python | `subprocess.Popen`, `multiprocessing.Process` |69| Node | `child_process.spawn`, `child_process.fork` |7071### 为什么72spawn 链是生命周期风险来源:父进程退出、子进程崩溃、重启策略、清理策略都需要显式契约。7374### 怎么验收75- 输出 `Spawning Chains`:父路径、子命令/模块、stdio/环境传递方式。76- 标注 zombie child、silent failure、restart gap、cleanup gap。7778---7980## Step 3: 识别 IPC Surface8182### 做什么83搜索通信通道与协议定义:8485| 类别 | 搜索线索 |86| --- | --- |87| Channel | `Pipe`, `NamedPipe`, `unix_stream`, `zmq`, `TcpListener`, `UdpSocket`, `websocket`, `http::server` |88| Protocol | `Handshake`, `Version`, `MagicBytes`, `schema`, `protobuf`, `serde_json`, `JSON.parse`, `enum Message` |8990### 为什么91有通道但无 schema、版本或握手,会导致协议漂移;这是多进程项目的核心隐性风险。9293### 怎么验收94- 输出 `IPC Surfaces`:通道类型、位置、协议线索。95- 每个 IPC surface 有 `Contract Status`。9697---9899## Contract Status 分级100101| 状态 | 判定 |102| --- | --- |103| Strong | 找到通道 + 显式消息 schema / enum / protobuf,或存在版本握手 |104| Weak | 找到通道 + raw JSON/string,但缺少集中 schema 或版本 |105| None | 找到通道,但找不到协议定义 |106| Cannot confirm | 静态证据不足以确认通道或协议 |107108---109110## 风险模式111112| 风险 | 检测特征 | 建议 |113| --- | --- | --- |114| Protocol Mismatch | Channel 存在但无 schema/version/handshake | 添加协议 schema 或版本握手任务 |115| Zombie Child | spawn 存在但无退出清理或心跳 | 增加 kill-on-exit/heartbeat/cleanup 契约 |116| Silent Failure | 子进程失败无错误传播或重启策略 | 增加错误传播、重试或 supervisor 策略 |117| Named Pipe Permission Risk | Windows Named Pipe 无显式 ACL | 增加权限边界设计与验证 |118| Race Condition | 多进程消息无顺序、锁或 idempotency 语义 | 增加序列号、锁或幂等契约 |119120---121122## Required Output123124```markdown125## Runtime Inspector Findings126127### Process Roots128| Path | Entrypoint | Role | Confidence |129130### Spawning Chains131| Parent | Child | Channel / stdio | Lifecycle Risk |132133### IPC Surfaces134| Path | Channel | Protocol Evidence | Contract Status |135136### Lifecycle Risks137| Risk | Evidence | Impact | Suggested follow-up |138139### Security Flags140| Flag | Evidence | Severity | Suggested follow-up |141```142143---144145<completion_criteria>146- Process Roots、Spawning Chains、IPC Surfaces、Contract Status、Lifecycle Risks 均已输出或显式 `N/A + 理由`。147- Strong/Weak/None/Cannot confirm 分级均带依据。148- 未把静态推断冒充为运行事实。149- 输出可直接并入 `/probe` 的 Runtime Topology 与 Risk Matrix。150</completion_criteria>