yao/agent
Max 46d815affc Refactor Autonomous Agent Design Document for Improved Clarity and Structure
- Revised the document to enhance clarity by updating section titles and terminology, such as changing "Overview" to "What is it?" and "Key Characteristics" to "Key points."
- Streamlined the architecture section, renaming components for consistency and clarity, including changes to trigger sources and agent management terminology.
- Updated execution flow diagrams and descriptions to reflect the new structure, improving understanding of the agent's operational phases.
- Enhanced the configuration section to provide a clearer overview of triggers, scheduling, and resource management, ensuring better organization throughout the document.
2026-01-13 08:58:19 +08:00
..
assistant Refactor Chat Test Cases for Knowledge Base Initialization 2026-01-10 13:00:58 +08:00
autonomous Refactor Autonomous Agent Design Document for Improved Clarity and Structure 2026-01-13 08:58:19 +08:00
caller Refactor Agent Response Handling to Use Structured Response Types 2025-12-18 17:32:49 +08:00
content Enhance PDF and Content Processing with New File Handling Features 2025-12-29 15:20:38 +08:00
context Enhance PDF and Content Processing with New File Handling Features 2025-12-29 15:20:38 +08:00
docs Refactor Documentation for Backend API Method Naming and Iframe Communication 2026-01-03 11:42:23 +08:00
i18n Enhance PDF and Content Processing with New File Handling Features 2025-12-29 15:20:38 +08:00
llm Enhance Options and Metadata Handling in Context and Test Cases 2025-12-18 11:03:55 +08:00
memory Enhance Memory Namespace Isolation Tests and Functionality 2025-12-22 14:54:42 +08:00
output Enhance built-in types and chat storage design for retrieval functionality 2025-12-09 09:09:31 +08:00
search Enhance PDF and Content Processing with New File Handling Features 2025-12-29 15:20:38 +08:00
store Enhance Search Result Storage and Intermediate Data Handling 2025-12-15 16:06:11 +08:00
test Enhance Script Resolution Logic and Validation 2026-01-05 12:32:31 +08:00
testutils Refactor Test Files and Enhance Test Environment Initialization 2025-12-18 12:11:51 +08:00
types Implement System Agents Configuration and Loading Mechanism 2025-12-16 15:32:20 +08:00
agent_test.go ⚠️ BREAKING: Removed the Studio package and renamed Neo to Agent. Configuration file path changed from neo/neo.yml to agent/agent.yml. 2025-11-06 18:13:54 +08:00
load.go Enhance Search Functionality with Keyword Extraction and Intent Detection 2025-12-18 20:16:56 +08:00
load_test.go Implement search configuration management and testing enhancements 2025-12-13 11:19:20 +08:00
README.md Enhance Agent Documentation with Iframe Integration Details 2026-01-03 11:22:04 +08:00

Yao Agent

A powerful AI assistant framework for building intelligent conversational agents with tool integration, knowledge base search, and multi-agent orchestration.

Quick Start

1. Create an Assistant

assistants/
└── my-assistant/
    ├── package.yao      # Configuration
    ├── prompts.yml      # System prompts
    └── locales/
        └── en-us.yml    # Translations

package.yao

{
  "name": "{{ name }}",
  "connector": "gpt-4o",
  "description": "{{ description }}",
  "placeholder": {
    "title": "{{ chat.title }}",
    "prompts": ["{{ chat.prompts.0 }}"]
  }
}

prompts.yml

- role: system
  content: |
    You are a helpful assistant.

locales/en-us.yml

name: My Assistant
description: A helpful AI assistant
chat:
  title: New Chat
  prompts:
    - How can I help you today?

2. Add Hooks (Optional)

Create src/index.ts for custom logic:

import { agent } from "@yao/runtime";

function Create(ctx: agent.Context, messages: agent.Message[]): agent.Create {
  // Preprocess messages before LLM call
  return { messages };
}

function Next(ctx: agent.Context, payload: agent.Payload): agent.Next {
  // Post-process LLM response
  return null;
}

3. Test (Optional)

yao agent test -i "Hello, how are you?"

4. Run

yao start

Access via API: POST /v1/chat/completions

Examples

Hook: Route to Specialist

// src/index.ts
function Create(ctx: agent.Context, messages: agent.Message[]): agent.Create {
  const last = messages[messages.length - 1]?.content || "";
  if (last.includes("refund")) {
    return { delegate: { agent_id: "refund-specialist", messages } };
  }
  return null;
}

Database Query

// package.yao - Enable auto DB search
{ "db": { "models": ["orders", "products"] } }
# Test: Agent auto-generates QueryDSL and searches database
yao agent test -i "Find orders over $1000 from last month"

MCP Tools (Process Transport)

// mcps/tools.mcp.yao - Define MCP server with Yao Processes
{
  "label": "Tools",
  "transport": "process",
  "tools": {
    "search_orders": "models.order.Paginate",
    "create_order": "models.order.Create"
  }
}
// mcps/mapping/tools/schemes/search_orders.in.yao - Input schema
{
  "type": "object",
  "properties": {
    "keyword": { "type": "string" },
    "page": { "type": "integer" }
  },
  "x-process-args": [":arguments"]
}
// package.yao
{ "mcp": { "servers": [{ "server_id": "tools" }] } }

Sidebar Page (Display Data)

Pages render in the right sidebar during conversation to display structured data:

<!-- pages/result/result.html - Display query results -->
<div class="result-panel">
  <h3>{{ title }}</h3>
  <table s:if="{{ rows.length > 0 }}">
    <tr s:for="{{ rows }}" s:for-item="row">
      <td>{{ row.name }}</td>
      <td>{{ row.value }}</td>
    </tr>
  </table>
</div>
yao sui build agent    # Build pages
// In hook: send action to open page in sidebar
ctx.Send({
  type: "action",
  props: {
    name: "navigate",
    payload: {
      route: "/agents/my-assistant/result",
      title: "Query Results",
      query: { id: "123" }, // Passed as $query in page
    },
  },
});

Documentation

Architecture

flowchart LR
    subgraph Request
        A[User Request]
    end

    subgraph Create["Create Hook"]
        B1[Preprocess Messages]
        B2[Configure LLM]
        B3[Delegate to Agent]
    end

    subgraph LLM["LLM Call"]
        C1[Load Prompts]
        C2[Generate Response]
    end

    subgraph Tools["Tool Execution"]
        D1[MCP Tools]
        D2[Search]
        D3[Memory]
    end

    subgraph Next["Next Hook"]
        E1[Process Results]
        E2[Transform Output]
        E3[Delegate to Agent]
    end

    subgraph Response
        F[Stream Response]
    end

    A --> Create
    Create --> LLM
    LLM --> Tools
    Tools --> Next
    Next --> Response
    Next -.->|Continue| LLM

API Endpoints

OpenAPI endpoints (base URL: /v1):

Endpoint Method Description
/v1/chat/completions POST Chat with assistant
/v1/chat/sessions GET List chat sessions
/v1/chat/sessions/:chat_id GET Get chat session
/v1/chat/sessions/:chat_id/messages GET Get messages
/v1/agent/assistants GET List assistants
/v1/agent/assistants/:id GET Get assistant details
/v1/file/:uploaderID POST Upload files
/v1/file/:uploaderID/:fileID GET Get file info
/v1/file/:uploaderID/:fileID/content GET Download file

License

This project is part of the Yao App Engine and follows the Yao Open Source License.