Skip to main content

A self-directed AI agent that grows through conversation

Project description

         ██████
         ██████
         ██████
████████████████████████
████████████████████████
         ██████
         ██████
         ██████
         ██████
         ██████

SayHi

An AI agent that grows through every conversation.

PyPI Python License: MIT GitHub

Quick Start · Score System · Commands · Models · Platforms


SayHi is an open-source AI agent for your terminal. It searches the web, reads and writes files in your project, remembers what it learns, and tracks its own capability growth across sessions — getting measurably better the more you use it.

活跃度 38  ❯ 帮我搜索最近的AI进展,写个总结页面

  searching web...  →  reading page...

╭───────────────────────── SayHi ─────────────────────────╮
│ 搞定!已保存到 ai-news.html,涵盖 12 篇最新报道。        │
╰──────────────────────────────────────────────────────────╯

活跃度 38  ❯

Quick Start

pip install sayhi-agent
sayhi onboard        # interactive setup: pick model + API key
sayhi start          # start talking

macOS · Linux · Windows — Python 3.10+


What makes it different

Grows over time. SayHi tracks its own capability across 7 dimensions (tool use, memory, conversation quality, domain expertise, reliability, activity, growth rate). Run /score any time to see a detailed breakdown. Run /path to see how the scores change across sessions.

Workspace-aware. Launch sayhi start from any project folder — that directory becomes SayHi's workspace. Files it creates land there. Drop a SAYHI.md in the folder to give it project-specific context, like Claude Code's CLAUDE.md.

my-project/
├── SAYHI.md        ← SayHi reads this on startup
├── src/
└── ...

Any model, one config line. Powered by LiteLLM — switch between Claude, GPT-4o, DeepSeek, Qwen, Gemini, a local Ollama model, or a self-hosted LiteLLM Proxy instantly.

Multi-session. /session work, /session personal — each session has its own conversation context. /compact summarizes history to save tokens.


Score System

╭──────────────────── Score Card · SayHi ─────────────────────╮
│  2026-05-04 12:46  ·  Session #13  +0.7 vs last             │
│                                                              │
│  能力                                                         │
│  工具精通度  ██████████░░  62.7  →                           │
│  记忆积累    █████░░░░░░░  50.0  →                           │
│  对话质量    █████░░░░░░░  50.0  →  needs more interactions  │
│  领域专长    █████░░░░░░░  50.0  →                           │
│  执行可靠性  ████████░░░░  76.7  ↑3                          │
│                                                              │
│  成长                                                         │
│  活跃度      ██░░░░░░░░░░  21.9  →  (13 sessions / 47 msgs) │
│  成长速率    █████░░░░░░░  50.0  →                           │
│                                                              │
│  综合  53.1 / 100   📖 进阶学者                               │
╰──────────────────────────────────────────────────────────────╯

8 rank tiers: 🌱 新生 → 📖 进阶学者 → 🎓 资深专家 → 🌟 传奇智者


Commands

Command Description
/score Run capability self-assessment
/path View growth score timeline
/status Profile overview — sessions, tool calls, last score
/session [name] List or switch conversation sessions
/compact Compress session history via LLM
/model [name|add] View, switch, or add a model
/voice [secs] Voice input via microphone (STT)
/clear Clear current session
/help Show all commands
/quit Exit

Supported Models

Set model in ~/.sayhi/config.yaml, or switch live with /model:

Provider Model string Env var
Anthropic (Claude) anthropic/claude-sonnet-4-6 ANTHROPIC_API_KEY
OpenAI openai/gpt-4o OPENAI_API_KEY
DeepSeek 🇨🇳 deepseek/deepseek-chat DEEPSEEK_API_KEY
通义千问 (Qwen) 🇨🇳 dashscope/qwen-max DASHSCOPE_API_KEY
智谱 AI (GLM) 🇨🇳 zhipuai/glm-4 ZHIPUAI_API_KEY
Kimi (Moonshot) 🇨🇳 moonshot/moonshot-v1-8k MOONSHOT_API_KEY
Google Gemini gemini/gemini-1.5-pro GEMINI_API_KEY
Groq (free, fast) groq/llama-3.1-70b-versatile GROQ_API_KEY
Ollama (local) ollama/qwen2.5 (none needed)
LiteLLM (100+ providers) any provider/model string provider-specific env var
LiteLLM Proxy (local) model name configured in proxy (none — connects to localhost:4000)
# ~/.sayhi/config.yaml
llm:
  model: "deepseek/deepseek-chat"
  api_key: "sk-..."

Or via environment variable (takes priority):

ANTHROPIC_API_KEY=sk-ant-...  sayhi start

LiteLLM Proxy (self-hosted, default port 4000):

llm:
  model: "gpt-4o"              # model_name as defined in your proxy config
  api_key: "your-master-key"   # leave empty if no master key set
  base_url: "http://localhost:4000"

Platforms

SayHi runs on CLI by default. Enable other platforms in ~/.sayhi/config.yaml:

Platform Install Config key
CLI built-in
HTTP API built-in http.enabled: true
Telegram pip install "sayhi-agent[telegram]" telegram.bot_token
Discord pip install "sayhi-agent[discord]" discord.bot_token
Slack pip install "sayhi-agent[slack]" slack.bot_token
飞书 / Lark pip install "sayhi-agent[feishu]" feishu.app_id
钉钉 DingTalk pip install "sayhi-agent[dingtalk]" dingtalk.app_key
企业微信 WeCom pip install "sayhi-agent[wecom]" wecom.corp_id
QQ 频道 pip install "sayhi-agent[qq]" qq.app_id

Install Options

pip install sayhi-agent                # CLI only
pip install "sayhi-agent[web]"         # + web search & page fetch
pip install "sayhi-agent[telegram]"    # + Telegram bot
pip install "sayhi-agent[voice]"       # + voice input (STT) & output (TTS)
pip install "sayhi-agent[keyring]"     # + encrypted API key storage
pip install "sayhi-agent[all]"         # everything

Configuration

sayhi onboard creates ~/.sayhi/config.yaml with all defaults. Key fields:

llm:
  model: "anthropic/claude-sonnet-4-6"
  api_key: ""        # leave empty to use env vars
  max_tokens: 4096

http:
  enabled: true
  host: "0.0.0.0"
  port: 8080
  api_key: ""        # optional auth for the REST API

Architecture

sayhi/
├── agent/
│   ├── core.py        ← LLM loop, tool dispatch
│   ├── profile.py     ← persistent session state
│   └── scorer.py      ← capability scoring engine
├── tools/
│   └── registry.py    ← bash, read/write file, web search, ...
├── memory/
│   └── provider.py    ← markdown-based persistent memory
├── platform/
│   └── adapters/      ← cli, telegram, discord, slack, ...
└── ui/
    └── banner.py      ← startup screen

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sayhi_agent-1.3.2.tar.gz (53.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sayhi_agent-1.3.2-py3-none-any.whl (54.1 kB view details)

Uploaded Python 3

File details

Details for the file sayhi_agent-1.3.2.tar.gz.

File metadata

  • Download URL: sayhi_agent-1.3.2.tar.gz
  • Upload date:
  • Size: 53.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for sayhi_agent-1.3.2.tar.gz
Algorithm Hash digest
SHA256 7197020945caa333e449f8d4ef6f7f19e42b9a80f890d7c374cb637a641a2305
MD5 3edb2cd77a6e8bddce819b3a35caef9d
BLAKE2b-256 5825104bfdab1aacd8cf5d4e89ce1e630f666ba19e48bc94c90e76d66cdb7caf

See more details on using hashes here.

File details

Details for the file sayhi_agent-1.3.2-py3-none-any.whl.

File metadata

  • Download URL: sayhi_agent-1.3.2-py3-none-any.whl
  • Upload date:
  • Size: 54.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for sayhi_agent-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d25e028f9043e056773dfe0b10b61654a7967cfbae077eb8d5155ca01b4f6ef0
MD5 504900448b4f0e07ab1170e8d133560c
BLAKE2b-256 0023441b8734c585cef0aadb782619d427efb9df4799f51dea182d5b5655c01d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page