Quién llama a esto y qué se rompe si lo cambio

El grafo de llamadas alrededor de un símbolo, y el radio de impacto de un diff — sin leer un solo archivo entero.

Prompt#

¿Quién llama a ResolveAgentCmd, y qué se rompe si lo cambio?

Qué hace el Chair#

Consulta el índice de símbolos del propio workspace: primero los llamadores, después el alcance de los archivos que vas a tocar.

Llamadas MCP#

trace_path({ "symbol": "ResolveAgentCmd", "direction": "callers", "depth": 2 })

Después, el radio de impacto del cambio:

impact({ "paths": ["client/internal/config/config.go"] })

O contra un rango de la rama en vez del árbol de trabajo:

impact({ "git_range": "main...HEAD" })

Y lee solo el cuerpo que de verdad necesitas:

code_snippet({ "symbol": "ResolveAgentCmd", "max_lines": 120 })

Equivalentes en CLI: orch symbols trace <name>, orch symbols impact, orch symbols snippet <name>, orch symbols arch.

Respuesta esperada#

trace_path devuelve {root, nodes, edges}, con un confidence por arista. impact devuelve {paths, touched, callers, edges}touched: [] cuando el diff no alcanza nada indexado. architecture devuelve {dirs, edges}, un mapa por directorio que vale leer antes de decidir dónde va un cambio.

Trampas#

  • Lee el confidence. 1.0 significa que el resolutor casó un import o el archivo mismo; 0.7 casó un tipo receptor; 0.4 es el tokenizador genérico casando un Name( pelado contra símbolos del mismo lenguaje. Una arista 0.4 es una pista, no un hecho.
  • Lo no indexado da error, no un resultado vacío. Los lenguajes para los que orch no tiene parser no aportan ninguna arista.
  • El grafo solo ve símbolos con firma. Constantes, nombres de tabla, flags de esquema, códigos de feature y todo lo que vive dentro de una cadena son invisibles para trace_path — para eso, grep. Es el único caso en que leer archivos sigue ganando.
  • impact sin argumentos usa tu git diff --name-only del árbol de trabajo. Si pasas paths, git_range se ignora.
  • depth está topado en 5 y por defecto es 2. La profundidad es donde estas consultas se ponen caras; ampliála una vez, no por costumbre.
  • Aquí el código sin etiquetar sí se ve. A diferencia de search_shared_symbols, que responde solo con símbolos orch:export, las herramientas de grafo también leen definiciones locales — así que un helper privado que nadie exportó igual aparece como llamador.
  • Pasa session en cualquiera de estas cuando quieras que el ahorro de bytes se contabilice bajo tu asiento en usage_status.