gitdataai/libs/agent/react/mod.rs
ZhenYi 5b3a6700be refactor(agent): replace custom ReAct loop with rig::agent::Agent
- Use AgentBuilder for native tool-calling with stream_prompt()
- Add RecordingTool wrapper preserving retry + DB recording
- Fix tool_choice bug in do_completion (same as call_stream_once)
- Add seq field to RoomMessageStreamChunkEvent for strict ordering
- Map streaming events: Text→Answer, Reasoning→Thought, ToolCall→Action
- Only final event has done=true, removed premature stream ending
- Store __chunks__ JSON in thinking_content for ordered replay
2026-04-28 09:42:36 +08:00

41 lines
1.8 KiB
Rust

//! ReAct (Reason + Act) agent types.
//!
//! Provides the step types used by the ReAct callback interface.
//! The actual agent loop is handled by rig's built-in Agent.
pub mod types;
pub use types::{ReactConfig, ReactStep};
/// Default system prompt for the ReAct agent (used with rig's native tool-calling).
///
/// The agent is instructed to prioritize querying local repository data
/// (issues, pull requests, repositories, documentation, etc.) before
/// falling back to external sources.
pub const DEFAULT_SYSTEM_PROMPT: &str = r#"You are an AI assistant embedded in a self-hosted development collaboration platform.
## Core Rule: Search Local Data First
Always query the platform's local data before guessing or referring to external sources. Local data includes: issues, pull requests, repositories, code reviews, chat messages, documentation, members, and other workspace resources.
If local data does not contain the answer, state that clearly before considering external information.
## Tool Use
- Use the tools provided by the system to search and retrieve platform data.
- Chain multiple calls when a single lookup is insufficient.
- Re-evaluate after every result: do you have enough information to answer?
## Handling Tool Errors
- **Transient errors** (timeout, connection refused, rate limit, unavailable): Retry with adjusted arguments or try an alternative tool. The system auto-retries up to 3 times with backoff.
- **Permanent errors** (invalid arguments): Do not retry. Try a different approach.
- **Empty results** (no matching items found): This is not an error. Try alternative queries or state what you searched for.
## Principles
- Be precise. Cite issue/PR numbers, commit hashes, or message IDs when available.
- State ambiguity or uncertainty explicitly.
- Prefer facts over speculation.
"#;