Token导航 LogoToken导航

Agent Skill · 研究检索

epsimo-agent(epsimo Agent 搜索)

epsimo-agent 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

epsimo-agent 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为接触敏感数据;许可证为 MIT,第三方扫描有提醒项,按安装量在研究检索类的 73,675 个 Skill 里排第 68,884。

总安装 222周安装 9GitHub Stars 公开资料未说明下载 70核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:epsimo-agent(epsimo Agent 搜索)
来源仓库:https://github.com/thierryteisseire/epsimo-agent
仓库路径:skills/epsimo-agent
安装命令:
npx skills add https://github.com/thierryteisseire/epsimo-agent --skill epsimo-agent
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/thierryteisseire/epsimo-agent --skill epsimo-agent

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

epsimo-agent 用于构建 AI 智能体应用框架,支持持久线程和虚拟数据库状态管理。适用于 Next.js 项目快速启动、CLI 工具和 React UI Kit 集成,提供统一开发体验。可创建 MVP 应用并通过认证、项目生成和部署流程快速上线,支持 Beta 版本演进。

安装前应确认权限范围和维护状态,注意是否会触发网络请求或外部服务调用,确保数据安全。适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

来源仓库内路径:skills/epsimo-agent

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/thierryteisseire/epsimo-agent --skill epsimo-a…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要接触敏感数据,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

epsimo-agent 怎么安装?

在终端执行 npx skills add https://github.com/thierryteisseire/epsimo-agent --skill epsimo-agent。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

epsimo-agent 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

epsimo-agent 需要什么权限?

权限级别是接触敏感数据。该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

epsimo-agent 是免费的吗?

来源标注的许可证是 MIT。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

epsimo-agent 用的人多吗?

公开数据是累计安装 222 次,近一周安装 9 次,下载 70 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

epsimo-agent 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 3 个目录同时收录,说明这个 Skill 流传比较广。
  • 许可证明确为 MIT,商用和分发边界好判断。

先想清楚的地方

  • 需要接触敏感数据,装到常用环境前要先评估影响面。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 环境里有大量密钥、凭证,不方便给第三方 Skill 读取的人。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
epsimo-agent

epsimo Agent 搜索 · 本页

222—接触敏感数据MIT有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Epsimo Agent Framework

[!NOTE] This is a Beta Release (v0.2.1). Features and APIs may evolve based on feedback.

The Epsimo Agent Framework allows you to build sophisticated AI-powered applications with agents, persistent threads, and a "Virtual Database" state layer. It provides a unified CLI, a Python SDK, and a React UI Kit.

Base URL: https://api.epsimoagents.com Frontend URL: https://app.epsimoagents.com


🚀 Quick Start: Create an MVP in 3 Commands

The fastest way to build an Epsimo app is using the project generator:

# 1. Authenticate
epsimo auth

# 2. Create a new Next.js project
epsimo create "My AI App"

# 3. Initialize and Deploy
cd my-ai-app
epsimo init
epsimo deploy

Your AI app is now live with persistent conversations, Virtual Database state, and a pre-built chat UI.


📦 Installation

CLI & Python SDK

# Install dependencies
pip install -r requirements.txt

# Make CLI executable (if using from source)
chmod +x epsimo/cli.py
export PATH="$PATH:$(pwd)/epsimo"

# Or via npm (for Claude Code skills)
npm install -g epsimo-agent

Dependencies:

  • requests>=2.28.0
  • pyyaml>=6.0
  • click>=8.0.0
  • python-dotenv>=0.19.0

🔐 Authentication

Login Flow

# Interactive login
epsimo auth login

# Login with environment variables
export EPSIMO_EMAIL=your@email.com
export EPSIMO_PASSWORD=your-password
epsimo auth

Programmatic Authentication

from epsimo.auth import perform_login, get_token

# Login and get token
token = perform_login("your@email.com", "password")

# Get cached token (auto-refreshes if expired)
token = get_token()

Token Management

Tokens are stored in ~/code/epsimo-frontend/.epsimo_token and expire after 1 hour.

Token Storage Format:

{
  "access_token": "eyJhbG...",
  "token": "eyJhbG...",
  "jwt_token": "eyJhbG...",
  "expires_in": 3600
}

Best Practices:

  • ✅ Use environment variables (EPSIMO_API_KEY) for production
  • ✅ Never commit .epsimo_token to version control
  • ✅ Implement token refresh on 401 errors
  • ✅ Use project-specific tokens for multi-tenant apps

🛠️ Unified CLI (epsimo)

The epsimo CLI is the main tool for managing your agents and data.

Authentication Commands

CommandDescription
epsimo authInteractive login with email/password
epsimo whoamiDisplay current user info and thread usage

Example:

$ epsimo whoami
👤 Fetching user info...
Logged in as: user@example.com
Threads Used: 45/100

Project Management

CommandDescription
epsimo projectsList all projects
epsimo projects --jsonList projects in JSON format
epsimo create <name>Scaffold a full Next.js application with Epsimo
epsimo initLink a local directory to an Epsimo project
epsimo deploySync your epsimo.yaml configuration to the platform

Example:

$ epsimo projects
📁 Fetching projects...
ID                                      | Name
-----------------------------------------------------------------
proj_abc123                             | Customer Support Bot
proj_xyz789                             | Research Assistant

Virtual Database Commands

Threads can serve as a persistent structured storage layer.

CommandDescription
epsimo db query --project-id <P_ID> --thread-id <T_ID>View all structured thread state
epsimo db get --project-id <P_ID> --thread-id <T_ID> --key <K>Get specific key from thread state
epsimo db set --project-id <P_ID> --thread-id <T_ID> --key <K> --value <V>Seed state for testing

Example:

$ epsimo db query --project-id proj_abc --thread-id thread_123
{
  "user_preferences": {
    "theme": "dark",
    "language": "en"
  },
  "status": "active"
}

$ epsimo db set --project-id proj_abc --thread-id thread_123 \
  --key "status" --value '"completed"'

Credits & Billing

CommandDescription
epsimo credits balanceCheck current thread balance and subscription tier
epsimo credits buy --quantity <N>Generate a Stripe checkout URL for purchasing threads

Example:

$ epsimo credits balance
💳 Checking balance...

=== Thread Balance ===
Threads Used:      45
Total Allowance:   100
Threads Remaining: 55
======================

$ epsimo credits buy --quantity 1000
🛒 Preparing purchase of 1000 threads...
ℹ️  Estimated cost: 80.0 EUR

✅ Checkout session created successfully!
Please visit this URL to complete your purchase:

https://checkout.stripe.com/session_...

Pricing:

  • < 500 threads: €0.10/thread
  • 500-999 threads: €0.09/thread
  • 1000+ threads: €0.08/thread

Resource Listing

CommandDescription
epsimo assistants --project-id <P_ID>List all assistants in a project
epsimo assistants --project-id <P_ID> --jsonList assistants in JSON format
epsimo threads --project-id <P_ID>List all threads in a project

📚 Python SDK

Installation & Setup

from epsimo import EpsimoClient

# Initialize with API key (JWT token)
client = EpsimoClient(api_key="your-token-here")

# Or use environment variable
# export EPSIMO_API_KEY=your-token-here
client = EpsimoClient()

# Or use custom base URL
client = EpsimoClient(
    api_key="token",
    base_url="https://api.epsimoagents.com"
)

Resource Clients

The SDK provides dedicated resource clients for each entity type:

ResourceAccess viaPurpose
Projectsclient.projectsTop-level containers
Assistantsclient.assistantsAI agents with instructions
Threadsclient.threadsPersistent conversations
Filesclient.filesDocument uploads
Creditsclient.creditsBilling & usage
Databaseclient.dbVirtual DB access

Projects

# List all projects
projects = client.projects.list()
for p in projects:
    print(f"{p['project_id']}: {p['name']}")

# Create a new project
project = client.projects.create(
    name="My AI Project",
    description="Customer support automation"
)
print(f"Created project: {project['project_id']}")

# Get project details (includes project-specific token)
details = client.projects.get(project_id="proj_abc123")
project_token = details['access_token']

# Delete a project
client.projects.delete(project_id="proj_abc123")

Assistants

# List assistants in a project
assistants = client.assistants.list(project_id="proj_abc123")

# Create an assistant
assistant = client.assistants.create(
    project_id="proj_abc123",
    config={
        "name": "Support Agent",
        "instructions": "You are a helpful customer support agent.",
        "model": "gpt-4o",
        "configurable": {
            "type": "agent",
            "agent_type": "agent"
        },
        "tools": [
            {
                "type": "search_tavily",
                "max_results": 5
            },
            {
                "type": "function",
                "name": "update_database",
                "description": "Save structured data to thread state",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "key": {"type": "string"},
                        "value": {"type": "object"}
                    },
                    "required": ["key", "value"]
                }
            }
        ]
    }
)

# Get assistant details
assistant = client.assistants.get(
    project_id="proj_abc123",
    assistant_id="asst_xyz789"
)

# Delete an assistant
client.assistants.delete(
    project_id="proj_abc123",
    assistant_id="asst_xyz789"
)

Threads

# List threads in a project
threads = client.threads.list(project_id="proj_abc123")

# Create a new thread
thread = client.threads.create(
    project_id="proj_abc123",
    assistant_id="asst_xyz789",
    name="Customer #1234",
    metadata={
        "configurable": {},
        "type": "thread"
    }
)

# Get thread details and messages
thread_data = client.threads.get(
    project_id="proj_abc123",
    thread_id="thread_123"
)
print(f"Messages: {len(thread_data['messages'])}")

# Delete a thread
client.threads.delete(
    project_id="proj_abc123",
    thread_id="thread_123"
)

Streaming Conversations

# Stream assistant responses
for chunk in client.threads.run_stream(
    project_id="proj_abc123",
    thread_id="thread_123",
    assistant_id="asst_xyz789",
    message="Hello, how can you help me?"
):
    print(chunk, end="", flush=True)

Files

# List files in a project
files = client.files.list(project_id="proj_abc123")

# Upload a file
file = client.files.upload(
    project_id="proj_abc123",
    file_path="/path/to/document.pdf",
    purpose="retrieval"  # or "assistants"
)

# Delete a file
client.files.delete(
    project_id="proj_abc123",
    file_id="file_abc123"
)

Credits

# Get current balance
balance = client.credits.get_balance()
print(f"Threads used: {balance['thread_counter']}/{balance['thread_max']}")

# Create checkout session
checkout = client.credits.create_checkout_session(
    quantity=1000,
    amount=80.00
)
print(f"Checkout URL: {checkout['url']}")

Virtual Database

# Get all structured data from a thread
db_state = client.db.get_all(
    project_id="proj_abc123",
    thread_id="thread_123"
)
print(f"User preferences: {db_state.get('user_preferences')}")

# Get specific key
user_prefs = client.db.get(
    project_id="proj_abc123",
    thread_id="thread_123",
    key="user_preferences"
)
print(f"Theme: {user_prefs.get('theme')}")

# Set value (for seeding/testing)
client.db.set(
    project_id="proj_abc123",
    thread_id="thread_123",
    key="status",
    value="active"
)

🎨 React UI Kit

The UI Kit provides high-level components for immediate integration.

ThreadChat Component

A modern, dark-themed chat interface with streaming and tool support.

import { ThreadChat } from "@/components/epsimo";

export default function App() {
  return (
    <ThreadChat
      assistantId="asst_xyz789"
      projectId="proj_abc123"
      placeholder="Ask me anything..."
      theme="dark"
    />
  );
}

Features:

  • ✅ Real-time streaming responses
  • ✅ Tool call visualization
  • ✅ Message history
  • ✅ Dark/light theme support
  • ✅ Mobile responsive

useChat Hook (Headless)

For custom UI implementations:

import { useChat } from "@/hooks/epsimo";

export default function CustomChat() {
  const {
    messages,
    sendMessage,
    isLoading,
    error
  } = useChat({
    projectId: "proj_abc123",
    threadId: "thread_123",
    assistantId: "asst_xyz789"
  });

  return (
    <div>
      {messages.map(msg => (
        <div key={msg.id} className={msg.role}>
          {msg.content}
        </div>
      ))}

      <button
        onClick={() => sendMessage("Hello")}
        disabled={isLoading}
      >
        {isLoading ? "Sending..." : "Send"}
      </button>

      {error && <div className="error">{error}</div>}
    </div>
  );
}

📦 Tool Library

Found in epsimo/tools/library.yaml, this collection provides reusable JSON schemas for common tasks.

Available Tools

ToolTypeDescriptionConfiguration
database_syncfunctionAllow agents to write structured JSON to thread statekey, value parameters
web_search_tavilysearch_tavilyAdvanced search with source attributionmax_results: 5
web_search_ddgddg_searchFast DuckDuckGo search for simple queriesNone
retrieval_optimizedretrievalHigh-accuracy document search in uploaded filestop_k: 5, score_threshold: 0.7
task_managementfunctionTrack and update user tasksaction, details parameters

Using Tools in epsimo.yaml

assistants:
  - name: "Research Assistant"
    model: "gpt-4o"
    instructions: "You help with research tasks and save findings to the database."
    tools:
      - type: search_tavily
        max_results: 5
      - type: function
        name: update_database
        description: "Persist research findings to thread state"
        parameters:
          type: object
          properties:
            key:
              type: string
              description: "The data category (e.g. 'research_notes')"
            value:
              type: object
              description: "The JSON data to store"
          required: ["key", "value"]

💾 Virtual Database Pattern

Threads serve as persistent, structured storage — eliminating the need for a separate database.

How It Works

  1. Agent writes to DB using the update_database tool
  2. Data persists in thread state (indexed by thread)
  3. Query from SDK, CLI, or frontend

Benefits

  • ✅ Zero Configuration — No database server required
  • ✅ Contextual Storage — Data is naturally partitioned by conversation
  • ✅ Agent Awareness — The assistant always "knows" what's in its DB
  • ✅ Queryable — Access from both agent code and application code

Example Workflow

Step 1: Assistant saves user preferences

// Agent calls update_database tool
{
  "name": "update_database",
  "arguments": {
    "key": "user_preferences",
    "value": {
      "theme": "dark",
      "language": "en",
      "notifications": true
    }
  }
}

Step 2: Query from your application

# Python SDK
prefs = client.db.get(project_id, thread_id, "user_preferences")
if prefs.get('theme') == 'dark':
    apply_dark_theme()

Step 3: CLI inspection

$ epsimo db query --project-id proj_123 --thread-id thread_456
{
  "user_preferences": {
    "theme": "dark",
    "language": "en",
    "notifications": true
  }
}

See docs/virtual_db_guide.md for comprehensive guide.


🔧 Error Handling & Best Practices

HTTP Status Codes

CodeMeaningAction
200SuccessContinue processing
201CreatedCapture returned ID
401UnauthorizedRefresh token or re-authenticate
403ForbiddenCheck user/project permissions
404Not FoundVerify resource ID
429Rate LimitedImplement exponential backoff
500Server ErrorRetry with exponential backoff

Retry Logic with Exponential Backoff

import time
import requests
from requests.exceptions import HTTPError

def make_request_with_retry(url, headers, method="GET", json_data=None, max_retries=5):
    """Make API request with automatic retry on rate limits and server errors."""
    for attempt in range(max_retries):
        try:
            response = requests.request(method, url, headers=headers, json=json_data)
            response.raise_for_status()
            return response.json() if response.content else None

        except HTTPError as e:
            if e.response.status_code == 429:
                # Rate limited - exponential backoff
                wait_time = min(60 * (2 ** attempt), 300)  # Max 5 minutes
                print(f"⏳ Rate limited. Waiting {wait_time}s...")
                time.sleep(wait_time)
            elif e.response.status_code >= 500:
                # Server error - retry with backoff
                wait_time = min(10 * (2 ** attempt), 60)  # Max 1 minute
                print(f"⚠️ Server error. Waiting {wait_time}s...")
                time.sleep(wait_time)
            elif e.response.status_code == 401:
                # Token expired - try to refresh
                print("🔑 Token expired. Re-authenticating...")
                raise
            else:
                # Other errors - don't retry
                raise

    raise Exception(f"Max retries ({max_retries}) exceeded")

Rate Limits

TierLimit
Free60 requests/minute
Standard300 requests/minute
Premium1,000 requests/minute

Security Best Practices

  1. API Key Management

- Never commit .epsimo_token to version control - Use environment variables (EPSIMO_API_KEY) - Rotate tokens regularly - Use different tokens for dev/staging/production

  1. Data Privacy

- Always use project-scoped tokens for multi-tenant apps - Implement proper access controls at application layer - Audit stored thread data regularly - Tag sensitive information appropriately

  1. Network Security

- Always use HTTPS endpoints - Validate SSL certificates in production - Consider using API gateways for additional security layers - Monitor API usage for unusual patterns


🧪 Verification & Testing

Ensure your environment is correctly configured:

# Verify skill configuration
python3 verify_skill.py

# Run comprehensive E2E test suite
python3 scripts/test_all_skills.py

# Test streaming functionality
python3 scripts/test_streaming.py

# Test Virtual DB operations
python3 scripts/test_vdb.py

Verification Steps:

  1. ✅ Authentication successful
  2. ✅ Project creation
  3. ✅ Assistant creation
  4. ✅ Thread creation
  5. ✅ Resource listing
  6. ✅ Cleanup (automatic deletion)

🔍 Troubleshooting

Authentication Issues

Problem: ❌ Not logged in. Use 'epsimo auth'.

Solution:

epsimo auth login
# Or set environment variables
export EPSIMO_EMAIL=your@email.com
export EPSIMO_PASSWORD=your-password

Token Expiration

Problem: 401 Unauthorized - Token has expired

Solution:

from epsimo.auth import perform_login

# Re-authenticate
token = perform_login(email, password)

Rate Limiting

Problem: 429 Too Many Requests

Solution:

  • Implement exponential backoff (see examples above)
  • Upgrade to higher tier
  • Implement client-side request throttling

Project-Scoped Operations Failing

Problem: 403 Forbidden when accessing assistants/threads

Solution:

# Get project-specific token
project = client.projects.get(project_id)
project_token = project['access_token']

# Use project token for scoped operations
project_client = EpsimoClient(api_key=project_token)
assistants = project_client.assistants.list(project_id)

📖 Reference Documentation


🔗 Links


📋 System Architecture

Epsimo Platform
├── Authentication Layer (JWT tokens)
├── Projects (top-level containers)
│   ├── Assistants (AI agents with instructions)
│   ├── Threads (persistent conversations)
│   │   └── Virtual Database (structured state)
│   └── Files (uploaded documents)
└── Billing (thread-based credits)

Client Tools
├── CLI (epsimo command)
├── Python SDK (EpsimoClient)
└── React UI Kit (ThreadChat, useChat)

Version: 0.2.0 License: MIT Author: Thierry Teisseire

For questions or issues, visit GitHub Issues.

平台分布

OpenCode

28.64%
按下载量换算20

Codex

24.81%
按下载量换算17

Claude Code

19.14%
按下载量换算13

Antigravity

14.1%
按下载量换算10

Gemini CLI

7.69%
按下载量换算5

windsurf

3.27%
按下载量换算2

安全审计

Gen Agent Trust Hub

通过

Socket

可疑

Snyk

可疑

权限和风险

接触敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。

继续浏览同类 Skills