67 lines
3.1 KiB
Markdown
67 lines
3.1 KiB
Markdown
# 工具调用表:tool_invocation
|
||
|
||
**状态**:当前表
|
||
**来源**:`V005__create_session_storage.sql`、`V010__add_relevance_level_to_tool_invocation.sql`、`ToolInvocation`
|
||
|
||
## 定位
|
||
|
||
`tool_invocation` 是 Harness ToolBoundary 的长期 metadata-only 审计表。它记录 exact Run/Tool identity、状态、稳定错误码、耗时与字节数;完整请求、raw response 和 Agent projection 只短期存在于 Redis canonical invocation,不写入本表。
|
||
|
||
## 字段
|
||
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|---|---|---|---|
|
||
| `id` | BIGINT | 是 | 自增主键 |
|
||
| `session_id` | VARCHAR(64) | 是 | 所属会话目录 ID,保留用于粗粒度过滤和兼容 |
|
||
| `run_id` | VARCHAR(64) | 否 | 所属 `diagnosis_run.run_id`;新执行应写入 |
|
||
| `step_id` | BIGINT | 否 | 可关联 `agent_step.id` |
|
||
| `tool_name` | VARCHAR(64) | 是 | ACI Tool 名:`lookup_knowledge`、`query_logs` 或 `query_mysql` |
|
||
| `input_params` | JSON | 是 | 仅 `tool_call_id` 与 `request_bytes` metadata,不含 Tool 参数正文 |
|
||
| `output_preview` | TEXT | 否 | 仅 invocation/evidence status metadata |
|
||
| `output_length` | INT | 否 | Agent projection UTF-8 字节数 |
|
||
| `retrieval_layer` | VARCHAR(8) | 否 | 当前 Harness 审计固定为 `HARNESS` |
|
||
| `l0_match_count` | INT | 否 | L0 命中数量 |
|
||
| `l1_match_count` | INT | 否 | L1 命中数量 |
|
||
| `is_truncated` | BOOLEAN | 否 | 输出是否被截断 |
|
||
| `relevance_level` | VARCHAR(20) | 否 | 当前 Harness 复用该字段保存 evidence status |
|
||
| `dedup_reason` | VARCHAR(32) | 否 | 历史字段;当前 Harness 不写入 |
|
||
| `retrieval_details` | JSON | 否 | `tool_call_id`、status、evidence status、result bytes 与可选稳定错误码 |
|
||
| `duration_ms` | INT | 否 | 工具耗时 |
|
||
| `success` | BOOLEAN | 否 | 工具是否成功 |
|
||
| `error_message` | TEXT | 否 | 仅稳定错误码,不保存内部异常或 vendor message |
|
||
| `created_at` | DATETIME | 是 | 创建时间 |
|
||
|
||
## 索引
|
||
|
||
| 索引 | 字段 | 用途 |
|
||
|---|---|---|
|
||
| `idx_session_id` | `session_id` | 历史兼容和粗粒度排查 |
|
||
| `idx_tool_invocation_run_id` | `run_id, id` | Trace 与验收按 exact Run 查询 Tool 审计 |
|
||
| `idx_tool_name` | `tool_name` | 按工具类型排查 |
|
||
| `idx_retrieval_layer` | `retrieval_layer` | 观察 RAG L0/L1 行为 |
|
||
|
||
## 关系
|
||
|
||
- `tool_invocation.run_id` 逻辑关联 `diagnosis_run.run_id`。
|
||
- `tool_invocation.session_id` 保留为 `chat_session.session_id` 的冗余关联,便于粗粒度过滤和兼容查询。
|
||
- `tool_invocation.step_id` 可关联 `agent_step.id`,但当前不强制。
|
||
|
||
## 关键 JSON
|
||
|
||
当前 Harness 写入的 `retrieval_details` 结构为:
|
||
|
||
```json
|
||
{
|
||
"tool_call_id": "framework-call-id",
|
||
"status": "READY",
|
||
"evidence_status": "EVIDENCE_FOUND",
|
||
"agent_result_bytes": 512
|
||
}
|
||
```
|
||
|
||
## 注意点
|
||
|
||
- 本表不是完整证据真理源,EvidenceGuard 只读取当前 Run 的 Redis canonical invocation。
|
||
- `input_params`、`output_preview` 和 `retrieval_details` 均不得出现 SQL、日志 query、evidence body、凭据或 raw response。
|
||
- audit 写入失败应记录安全 warning,但不能改变已确定的 canonical Tool 结果。
|