Files
Sprimo/skills/rust-router/patterns/negotiation.md
2026-02-12 22:58:33 +08:00

4.4 KiB

Negotiation Protocol

比较查询和跨领域问题的处理协议

When to Enable Negotiation

For complex queries requiring structured agent responses, enable negotiation mode.

Query Pattern Enable Negotiation Reason
Single error code lookup No Direct answer
Single crate version No Direct lookup
"Compare X and Y" Yes Multi-faceted
Domain + error Yes Cross-layer context
"Best practices for..." Yes Requires synthesis
Ambiguous scope Yes Needs clarification
Multi-crate question Yes Multiple sources

Negotiation Decision Flow

Query Received
     │
     ▼
┌─────────────────────────────┐
│ Is query single-lookup?     │
│ (version, error code, def)  │
└─────────────────────────────┘
     │
     ├── Yes → Direct dispatch (no negotiation)
     │
     ▼ No
┌─────────────────────────────┐
│ Does query require:         │
│ - Comparison?               │
│ - Cross-domain context?     │
│ - Synthesis/aggregation?    │
│ - Multiple sources?         │
└─────────────────────────────┘
     │
     ├── Yes → Dispatch with negotiation: true
     │
     ▼ No
┌─────────────────────────────┐
│ Is scope ambiguous?         │
└─────────────────────────────┘
     │
     ├── Yes → Dispatch with negotiation: true
     │
     ▼ No
     └── Direct dispatch (no negotiation)

Negotiation Dispatch

When dispatching with negotiation:

1. Set `negotiation: true`
2. Include original query context
3. Expect structured response:
   - Findings
   - Confidence (HIGH/MEDIUM/LOW/UNCERTAIN)
   - Gaps identified
   - Context questions (if any)
4. Evaluate response against original intent

Orchestrator Evaluation

After receiving negotiation response:

Confidence Intent Coverage Action
HIGH Complete Synthesize answer
HIGH Partial May need supplementary query
MEDIUM Complete Accept with disclosed gaps
MEDIUM Partial Refine with context
LOW Any Refine or try alternative
UNCERTAIN Any Try alternative or escalate

Refinement Loop

If response insufficient:

Round 1: Initial query
  │
  ▼ (LOW confidence or gaps block intent)
Round 2: Refined query with:
  - Answers to agent's context questions
  - Narrowed scope
  │
  ▼ (still insufficient)
Round 3: Final attempt with:
  - Alternative agent/source
  - Maximum context provided
  │
  ▼ (still insufficient)
Synthesize best-effort answer with disclosed gaps

Integration with 3-Strike Rule

Negotiation follows the 3-Strike escalation:

Strike 1: Initial query returns LOW confidence
  → Refine with more context

Strike 2: Refined query still LOW
  → Try alternative agent/source

Strike 3: Still insufficient
  → Synthesize best-effort answer
  → Report gaps to user explicitly

See _meta/error-protocol.md for full escalation rules.

Negotiation Routing Examples

Example 1: No Negotiation Needed

Query: "What is tokio's latest version?"
Analysis: Single lookup
Action: Direct dispatch to crate-researcher

Example 2: Negotiation Required

Query: "Compare tokio and async-std for a web server"
Analysis: Comparative + domain context
Action: Dispatch with negotiation: true
Expected: Structured responses from both runtime lookups
Evaluation: Check if web-server specific data found

Example 3: Cross-Domain Negotiation

Query: "E0382 in my trading system"
Analysis: Error code + domain context
Action:
  - Dispatch m01-ownership (standard - error is defined)
  - Dispatch domain-fintech (negotiation: true - domain context)
Synthesis: Combine error explanation with domain-appropriate fix
  • _meta/negotiation-protocol.md - Full protocol specification
  • _meta/negotiation-templates.md - Response templates
  • _meta/error-protocol.md - 3-Strike escalation
  • agents/_negotiation/response-format.md - Agent response format