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.
Release files for pydeepseek-tui 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pydeepseek_tui-0.1.2.tar.gz | 40.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pydeepseek_tui-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 85.4 kB
Release files / pydeepseek_tui-0.1.2.tar.gz
| Download URL | pydeepseek_tui-0.1.2.tar.gz |
|---|---|
| Size | 40.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d5b5b812c86a889092d93d0c4770e0330a30c089472de0cc652d4eeb20bc3b46
|
|
BLAKE2b-256 checksum How to use checksums |
1ea876dc41ce7bcabd0a015c256ee28557dd24334b6b961a6e1bc22ced6b3c77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / pydeepseek_tui-0.1.2-py3-none-any.whl
| Download URL | pydeepseek_tui-0.1.2-py3-none-any.whl |
|---|---|
| Size | 45.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
750004a05ad881a6f8a0d780d2a0edae4c24395b99dc26c4b0193e82f410d098
|
|
BLAKE2b-256 checksum How to use checksums |
2acb2cbf24b0bf2c208c553550e799a9b6e77f12022d5ff8c293f2655e992dd4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|