Interface TUI rica no terminal para interagir com IA via DeepSeek/OpenAI
Project description
PyDeepSeek TUI
Interface de terminal (TUI) moderna, assíncrona e multi-provedor para interagir com IAs como DeepSeek, OpenAI e Anthropic. Construída com Python e Textual.
Funcionalidades
- Multi-provedor — suporte a DeepSeek, OpenAI e Anthropic com seleção por linha de comando ou configuração
- Function Calling — agente autónomo capaz de ler/escrever ficheiros, executar comandos shell, pesquisar na web, extrair texto de URLs, listar diretórios, pesquisar em ficheiros e operações git
- Modos de operação — Plan (leitura), Agent (confirmação de ações destrutivas) e YOLO (execução automática)
- Interface rica no terminal — construída com Textual 8.x, com suporte a cores, scroll e atalhos de teclado
- Rastreio de sessão — cada execução gera um registo persistente com contagem de tokens, custos em USD e logs de interação
- Encriptação da chave API — chave protegida com PBKDF2 + Fernet (via
cryptography) - Internacionalização — suporte a Português (Brasil) e Inglês
- Segurança — sandbox de ficheiros que restringe operações ao diretório de trabalho
Instalação
Requer Python 3.13+.
pip install pydeepseek-tui
Na primeira execução, o sistema pede a chave da API e guarda-a encriptada em ~/.deepseek-tui/.env.
Instalação para desenvolvimento
git clone https://github.com/natanfiuza/pydeepseek-tui.git
cd pydeepseek-tui
pipenv install --dev
Uso
# Iniciar com o provedor padrão (deepseek)
pydeepseek start
# Escolher provedor
pydeepseek start --provider openai
pydeepseek start --provider anthropic
# Escolher modelo e modo
pydeepseek start --provider deepseek --model deepseek-v4 --mode yolo
# Escolher idioma
pydeepseek start --lang en_US
# Assistente de configuração interativo
pydeepseek config
# Listar sessões salvas
pydeepseek sessions
Atalhos de teclado
| Tecla | Ação |
|---|---|
q |
Sair (guarda a sessão) |
c |
Limpar o chat |
m |
Alternar modo (Plan → Agent → YOLO) |
Modos de operação
| Modo | Comportamento |
|---|---|
| Plan | Apenas ferramentas de leitura. Bloqueia shell, escrita e git. |
| Agent | Pergunta antes de executar ferramentas destrutivas via modal interativo. |
| YOLO | Executa todas as ferramentas sem confirmação. |
Dependências
O projeto utiliza as seguintes bibliotecas:
Runtime
| Biblioteca | Versão | Uso |
|---|---|---|
| textual | 8.x | Framework TUI |
| openai | 2.x | Cliente para DeepSeek e OpenAI |
| anthropic | 0.x | Cliente para Anthropic |
| httpx | 0.x | HTTP client para web tools |
| cryptography | 48.x | Encriptação da chave API |
| click | 8.x | CLI |
| python-dotenv | 1.x | Leitura do ficheiro .env |
| beautifulsoup4 | 4.x | Extração de texto de URLs |
| duckduckgo-search | 8.x | Pesquisa web |
Desenvolvimento
| Ferramenta | Uso |
|---|---|
| pipenv | Gestão de ambiente virtual e dependências |
| pytest | Testes automatizados |
| pytest-asyncio | Suporte a testes assíncronos |
| pytest-cov | Cobertura de testes |
| ruff | Linting e formatação |
| black | Formatação de código |
| mypy | Verificação de tipos |
Desenvolvimento
# Instalar dependências de desenvolvimento
make dev
# Executar testes
make test
# Linting
make lint
# Formatação automática
make format
# Construir distribuição
make build
Estrutura do projeto
pydeepseek-tui/
├── src/pydeepseek_tui/
│ ├── agent/ # Loop do agente, modos, sessões, activity logger
│ ├── cli/ # Comandos CLI (click)
│ ├── config/ # Settings, encriptação, debug logger
│ ├── i18n/ # Traduções (pt_BR, en_US)
│ ├── providers/ # DeepSeek, OpenAI, Anthropic
│ ├── tools/ # Ferramentas do agente (8 tools)
│ └── tui/ # Interface Textual (app, widgets, screens)
├── tests/ # Testes automatizados
├── Makefile # Comandos de desenvolvimento
└── pyproject.toml # Configuração do projeto
Contribuição
Contribuições são bem-vindas. Para contribuir:
- Faz um fork do repositório
- Cria um branch para a tua feature (
git checkout -b feature/nova-funcionalidade) - Instala o ambiente de desenvolvimento (
pipenv install --dev) - Faz as alterações e garante que os testes passam (
make test) - Verifica a formatação (
make lint) - Submete um pull request
Antes de submeter, confirma que:
- Testes novos cobrem a funcionalidade adicionada
-
make lintnão reporta erros -
make testpassa com sucesso - O código segue o estilo do projeto (black + ruff)
Agradecimentos
Este projeto é mantido por Nataniel Fiuza — obrigado por usar o PyDeepSeek TUI.
- Email: contato@natanfiuza.dev.br
- GitHub: github.com/natanfiuza
Se o projeto te foi útil, deixa uma estrela no repositório.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pydeepseek_tui-0.1.1.tar.gz.
File metadata
- Download URL: pydeepseek_tui-0.1.1.tar.gz
- Upload date:
- Size: 39.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
707d7f158c78e65a47712261f18848319c0c94aa9035865b4e3293957fa6335b
|
|
| MD5 |
3cc998f8fb50d5996ad9aacf1792602e
|
|
| BLAKE2b-256 |
05be528cdd87f9b4877f6eed098e3a36ffe6d0ef77830e1b2d7055cba5f27811
|
File details
Details for the file pydeepseek_tui-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pydeepseek_tui-0.1.1-py3-none-any.whl
- Upload date:
- Size: 44.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e953c0b80873b27ffca0679964ea782aa92c686f93751a4c6e9963c6b6d7f043
|
|
| MD5 |
827d14805cd0eff96b628299e1eb28d5
|
|
| BLAKE2b-256 |
4d3cc6e85798067010dbebc2c0c6494652b0553608e32467f153d5bf0ed4c18d
|