Skip to main content

一款纯净的自主 Agent 系统。

Project description

Coomi Agent

一个比较纯净的 AI Agent项目。基于CLI的自主 Agent,能读取文件、编辑代码、执行命令、管理任务。

1780235212332

特性

  • 纯净 Agent 设计 — 以开发学习为目标,流程透明,模块边界清晰,便于观察、复盘和二次改造。
  • 核心能力完整 — 覆盖文件操作、搜索、Shell、网页、任务、子 Agent 、 Plan 模式和Loop模式等基础工具链。
  • 可切换的 LLM Provider — 支持 DeepSeek、OpenAI、Anthropic 和兼容 OpenAI API 的通用服务。
  • 上下文与记忆机制 — 提供上下文压缩、记忆管理、语义召回和工具结果缓存等基础工程能力。
  • 流式终端界面 — 基于 Textual 的 TUI,支持流式输出、工具调用提示和状态信息展示。

快速开始

环境要求

  • Python >= 3.9

安装

从 PyPI 安装(推荐)

pip install coomi-agent

从源码安装

git clone https://github.com/Septemc/Coomi.git
cd Coomi
pip install -e .

Python 环境说明

注意:如果你的系统有多个 Python 环境,pip install -e . 会安装到当前 shell 激活的 Python 环境中。

推荐安装位置:默认 Python 环境对应的库目录,也就是当前 Python 解释器的 site-packages

环境类型 常见安装位置
系统 Python Python 安装目录\Lib\site-packages
Conda 环境 环境目录\Lib\site-packages
虚拟环境 项目目录\.venv\Lib\site-packages

验证当前环境

# 查看 Python 路径
which python
# 或 Windows:
where python

# 查看 pip 目标路径
python -m pip show coomi-agent | grep Location

推荐安装方式

先激活你希望使用的默认 Python 环境,再执行:

python -m pip install -e .

更新

从 PyPI 更新(推荐)

pip install --upgrade coomi-agent

从源码更新

cd Coomi
git pull origin main
pip install -e .

注意:从源码安装(pip install -e .)时,代码会指向你的本地目录,每次 git pull 后无需重新安装。只有当 pyproject.toml 中的依赖发生变化时才需要重新执行 pip install -e .

首次运行

coomi

首次运行时,Coomi 会自动引导你配置 LLM Provider。配置优先级:

  1. 环境变量 — 自动检测 DEEPSEEK_API_KEYOPENAI_API_KEYANTHROPIC_API_KEY
  2. .env 文件 — 项目根目录的 .env 文件,用于开发学习使用
  3. 交互式配置 — 终端交互引导

配置文件

所有模型配置存储在 ~/.coomi/config/providers.json

{
  "version": 1,
  "active": "default",
  "providers": {
    "default": {
      "type": "deepseek",
      "display": "DeepSeek V4",
      "api_key": "sk-xxx",
      "base_url": "https://api.deepseek.com",
      "model": "deepseek-v4-pro",
      "fast_model": "deepseek-v4-flash"
    }
  }
}

支持的 Provider 类型:deepseekopenaianthropicgeneric(任意兼容 OpenAI API 的服务)。

运行方式

# CLI 命令(推荐)
coomi

# 模块运行
python -m coomi

内置命令

命令 说明
/model 列出所有可用模型
/model <id> 切换到指定 Provider
/context 显示当前上下文窗口大小
/context 256k 设置上下文窗口(如 128k512k1m
/memory list 列出所有记忆
/memory add <内容> 添加新记忆
/memory search <关键词> 搜索记忆
/memory delete <名称> 删除记忆
/clear 清除当前会话
exit / quit 退出

架构

coomi/                          # 主包
├── __init__.py                 # 版本信息
├── __main__.py                 # python -m coomi 入口
├── cli.py                      # CLI 入口(coomi 命令)
├── setup.py                    # 首次配置引导
├── types.py                    # Message, Session, ToolCall, LLMResponse
├── engine/
│   ├── loop.py                 # AgentLoop — 感知-决策-执行循环
│   └── session.py              # SessionManager,System Prompt 构建器
├── services/
│   ├── llm/                    # Provider 层(抽象基类 + 4 种实现)
│   │   ├── provider.py         # LLMProvider 抽象基类
│   │   ├── generic.py          # GenericOpenAIProvider(配置驱动)
│   │   ├── deepseek.py         # DeepSeekProvider(thinking mode)
│   │   ├── openai.py           # OpenAIProvider
│   │   ├── anthropic.py        # AnthropicProvider(可选依赖)
│   │   ├── factory.py          # Provider 工厂 + Flash 模型降级
│   │   └── config.py           # ConfigManager(~/.coomi/config/providers.json)
│   ├── context/
│   │   ├── compressor.py       # 三层压缩
│   │   └── cache.py            # 工具结果磁盘缓存
│   └── memory/
│       ├── manager.py          # 三层记忆存储
│       ├── extractor.py        # 对话自动提取
│       └── recall.py           # 语义记忆召回
├── tools/                      # 15+ 内置工具
│   ├── file_ops/               # Read, Write, Edit
│   ├── search/                 # Glob, Grep
│   ├── shell/                  # Bash, PowerShell
│   ├── web/                    # WebFetch, WebSearch
│   ├── task/                   # TodoWrite
│   ├── agent/                  # 子 Agent 委托
│   ├── user/                   # AskUserQuestion
│   └── workspace/              # Plan 模式(进入/退出)
└── ui/                         # Textual TUI 界面
    ├── textual_app.py          # 主应用
    ├── status_line.py          # 状态栏(模型 + Token 用量)
    ├── tool_formatter.py       # 工具调用详情格式化
    ├── screens/                # 屏幕
    └── widgets/                # 组件

上下文压缩

三层压缩,当前估算 Token 数超过上下文窗口 90% 时触发:

  1. Microcompact(微清理) — 将超出保留数量(6 条)的旧工具结果内容替换为 [cleared] 标记。零 API 开销。
  2. 消息裁剪 — 保留第一条消息 + 最近 8 条消息。零 API 开销。
  3. LLM 摘要 — 生成 9 段结构化摘要(核心需求、关键概念、文件与代码、错误与修复、问题解决、用户消息、待办任务、当前工作、建议下一步)。使用当前模型。

记忆系统

三层存储,优先级逐级递减:

  1. .coomi/memory/ — 项目本地(最高优先级)
  2. ~/.coomi/projects/{hash}/memory/ — 项目全局
  3. ~/.coomi/memory/ — 全局(所有项目共享)

记忆类型:user(用户偏好)、feedback(反馈纠正)、project(项目上下文)、reference(外部引用)。

MemoryExtractor 自动分析对话并保存相关记忆。MemoryRecall 执行语义选择,将相关记忆注入 System Prompt。

项目参考来源

本项目在工程复现和实现思路上参考了以下项目(或源码实现,或界面交互体验):

  • Claude Code
  • Codex
  • OpenCode

参考重点主要是 Agent 主循环、工具调用编排、上下文管理和终端交互方式,不代表与原项目具有相同实现或功能范围。

License

MIT,详见 LICENSE

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

coomi_agent-0.1.5.tar.gz (146.6 kB view details)

Uploaded Source

Built Distribution

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

coomi_agent-0.1.5-py3-none-any.whl (167.3 kB view details)

Uploaded Python 3

File details

Details for the file coomi_agent-0.1.5.tar.gz.

File metadata

  • Download URL: coomi_agent-0.1.5.tar.gz
  • Upload date:
  • Size: 146.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for coomi_agent-0.1.5.tar.gz
Algorithm Hash digest
SHA256 4da23d7ec60e296a5a684b5b10dec575ba2b4b40a563f8619a828ca30b3a70e5
MD5 abc341b8b5569a5a745210f0606b2983
BLAKE2b-256 0b42b1845f8c2f73456920a250a19b583082e0e8e72959ca17c8323425f0604d

See more details on using hashes here.

File details

Details for the file coomi_agent-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: coomi_agent-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 167.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for coomi_agent-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 5a1f29bef00e59a263bbb6e0cf90ac981f67b3fcf24f8874f355029686473322
MD5 bcd226cd8b3ede6d4e0baf210165cb06
BLAKE2b-256 cd61a3a7b7497e8535e75e5c38a92e6173811ab9b4fb7dc055c881367afe50d7

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