Preguntarle a otro proyecto cómo resolvió X
Levanta un ask bloqueante al Chair de otro proyecto, recibe una referencia a un símbolo y trae el cuerpo — sin código pegado.
Prompt#
Pregúntale al proyecto checkout cómo resolvió los reintentos idempotentes antes de que yo escriba los nuestros.
Qué hace el Chair#
Enruta un ask bloqueante al Chair corriendo del proyecto nombrado; ese Chair responde
con un puntero al símbolo, y tu asiento trae el cuerpo por su cuenta.
Llamadas MCP#
ask({
"question": "How does checkout make provider retries idempotent?",
"context": "we need the same guarantee in billing; found no shared symbol for it",
"to_project": "checkout",
"timeout_sec": 600
})
El Chair del otro proyecto responde con una referencia, no con un pegado:
ask_answer({
"id": 41,
"answer": "One idempotency key per attempt, stored before the call. See the symbol.",
"by": "checkout-chair",
"symbol_ref": { "project": "checkout",
"path": "internal/pay/retry.go", "line": 88, "symbol": "RetryIdempotent" }
})
Y entonces lees exactamente ese cuerpo:
code_snippet({ "symbol": "RetryIdempotent", "project": "checkout", "max_lines": 120 })
¿No hay Chair corriendo allá? El registro igual responde:
search_shared_symbols({ "query": "idempotent retry", "project": "checkout", "limit": 10 })
inspect_symbol({ "name": "RetryIdempotent" })
Respuesta esperada#
ask bloquea y devuelve el JSON del ask con answer lleno. code_snippet devuelve
{symbol, start_line, end_line, body, file_bytes}. search_shared_symbols devuelve un
arreglo JSON — [] cuando no hay coincidencias — y cada hit trae el proyecto
registrado bajo el que resuelve.
Trampas#
to_projectexige ese proyecto registrado y su Chair corriendo. Si no:project "checkout" not registered (orch project list), ono running chair for project "checkout".code_snippetentre proyectos es solo alcance shared. Un símbolo de otro proyecto responde únicamente si lleva un comentarioorch:export <Name> — <purpose>. El código sin etiquetar de allá te es invisible por diseño; dentro de tu propio proyecto sí ves los símbolos locales.search_shared_symbolseinspect_symbolresponden soloshared. Las herramientas de grafo (trace_path,impact,architecture) además leen las definiciones locales.- Un timeout no es silencio. El ask queda marcado
timeout, la herramienta devuelve un error nombrando la pregunta, y una respuesta tardía se rechaza. Ahí decides tú, y lo dices enverify_report. options[], si lo pasas, es el conjunto completo de respuestas aceptadas (sin distinguir mayúsculas). Cualquier cosa fuera de ahí se rechaza, no se registra.- Responde con
symbol_ref, no con código pegado. El puntero no lleva contenido, sobrevive a las ediciones y deja el código del otro proyecto en su propia máquina.