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.0significa que el resolutor casó un import o el archivo mismo;0.7casó un tipo receptor;0.4es el tokenizador genérico casando unName(pelado contra símbolos del mismo lenguaje. Una arista0.4es una pista, no un hecho. - Un nombre que no está es una sugerencia, no un error. Vuelve como
{found: false, hint, did_you_mean: [...]}— prueba uno de esos nombres en vez de caer en grep. Los lenguajes para los que Orchemax no tiene parser no aportan aristas. - 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. impactsin argumentos usa los cambios de tu propio checkout (git diff --name-only HEADmás los archivos sin seguimiento, corrido donde estás tú: el worktree del worker, no la raíz del workspace). Si pasaspaths,git_rangese ignora; si no hay ni uno ni otro y no hay cambios, pasasymbol: "Nombre".depthestá topado en 5 y por defecto es 2. La profundidad es donde estas consultas se ponen caras; amplíala 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ímbolosorch:export, las herramientas de grafo también leen definiciones locales — así que un helper privado que nadie exportó igual aparece como llamador. - Tu propio proyecto siempre se puede leer. Un worker que pide un símbolo del código
que le tocó recibe el cuerpo desde su propio worktree, símbolos locales (sin etiqueta)
incluidos. La restricción a
orch:exportaplica solo cuandoproject:nombra otro proyecto, y el rechazo lo dice. - Las respuestas tienen techo de bytes y degradan para entrar.
trace_path2.000 B,impact3.000 B,architecture4.000 B,code_snippetel cuerpo más 200 B. Las filas se ordenan por cantidad de referencias y se cortan enlimit(20); una lista cortada traehas_morey uncursor. Pideverbose: trueuna vez si de verdad quieres la forma completa. sessionya es opcional. El asiento sale deORCH_SESSION; pasasessionsolo cuando manejes las herramientas en nombre de otro asiento.