Dulus
pip install dulus 即可运行的 AI Agent 运行时,支持 100+ 模型、通过
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
pip install dulus 即可运行的 AI Agent 运行时,支持 100+ 模型、通过
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你对 Claude Code 说一句「帮我重构这个项目」,然后关掉电脑去吃饭。回来时发现它不仅完成了重构,还自动写了测试、提交了 commit、清理了临时文件——整个过程没有任何人工干预。这就是 Dulus 正在做的事。
Dulus(发音类似「丢了嘶」,学名 Cigua Palmera,即棕胸哑巴鹭)是多米尼加共和国的国鸟。而这个同名的开源项目,正是要让 AI 编程工具拥有类似「本能反应」的自主运行能力。它不是又一个 Copilot 式的代码补全插件,而是一个能够主动思考、持续运行、自动管理上下文的 AI Agent 运行时。
项目由独立开发者 @KevRojo 于 2026 年 5 月开源,目前 GitHub 已有 358 Stars、25 Forks,采用 GPL-3.0 开源协议。
传统的 AI 编程辅助工具(Copilot、Cursor 等)本质上是被动响应模式:人类写一行,AI 补全一行。这种模式效率有限,无法处理需要跨文件、跨步骤思考的复杂任务。
2025 年以来,Claude Code、Cursor Agent、Devin 等产品的出现,将 AI 编程推向了主动执行的新阶段。但这些工具在使用体验上仍存在几个痛点:
Dulus 正是为解决这些问题而生。它提供了一个与模型无关的 Agent 运行时,兼容 100+ 模型提供商(通过 LiteLLM),内置记忆管理、上下文压缩、多 Agent 协作、插件系统等高级特性。

图1:项目作者 KevRojo — 多米尼加独立开发者
Dulus 的安装极简到令人惊讶:
pip install dulus
# 按下回车 → 30 秒后一个具备自主思考能力的 AI 助手就已就绪
安装完成后,通过 dulus 命令启动交互式 REPL(Read-Eval-Print Loop)。默认使用 Ollama 本地模型,完全免费离线运行。如果配置了 API Key,则可切换到 Claude、GPT-4o、Gemini 等云端大模型。
这是 Dulus 最核心的能力之一。当对话变长时,模型的有效上下文窗口会被大量历史消息填满,导致「注意力稀释」——模型开始遗忘早期的重要决策。Dulus 的上下文管理器会:
# 上下文构建逻辑示意(backend/context.py)
def build_context():
return {
"session": {"mode": "proactive", "agent": active_persona},
"project": {
"name": "Dulus Command Center",
"repo_stats": get_repo_stats(), # 代码行数/语言分布
"recent_commits": get_recent_commits(), # 最近 git 提交
"recent_changes": get_changed_files() # 本次会话修改了哪些文件
},
"tasks": get_active_tasks_summary(), # 当前活跃任务
"agents": get_personas_for_context() # 所有 Agent persona 状态
}
Dulus 底层通过 LiteLLM 接入 100+ 模型提供商。这意味着你可以用同一套代码同时调用 Claude、GPT-4o、Gemini、DeepSeek、Qwen 等模型,无需为每个 API 写适配层。
# 模型配置示例(config.py DEFAULTS)
{
"model": "ollama/gemma4:latest", # 默认本地模型
"max_tokens": 128000, # 128K 上下文窗口
"thinking_budget": 50000, # 思考预算
"max_agent_depth": 3, # 子 Agent 最大嵌套深度
"max_concurrent_agents": 3, # 最大并发子 Agent 数
# 支持的云端模型 API Keys:
# ANTHROPIC_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY
# NVIDIA_API_KEY / DEEPSEEK_API_KEY / QWEN_API_KEY / KIMI_API_KEY
}
MCP 是 Anthropic 主导的 AI 上下文协议标准。Dulus 内置 MCP 客户端,支持连接外部 MCP 服务器,获取实时工具能力扩展。
Dulus 内置了 30+ 开箱即用的工具:文件读写、Git 操作、代码搜索、Web 搜索等。更重要的是,它的插件系统支持热加载——修改插件代码后无需重启,实时生效:
# 插件热加载示意(backend/plugins.py)
def load_plugin(path: Path):
# 卸载旧版本(如果已加载)
if name in _registry:
unload_plugin(name)
# 清除字节码缓存,确保新代码立即生效
Path(cache_file).unlink(missing_ok=True)
# 动态导入
spec = importlib.util.spec_from_file_location(...)
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
# 注册 Hooks
for hook_name, fn in getattr(mod, '__hooks__', {}).items():
register_hook(hook_name, fn)
内置插件包括:Composio(1000+ 工具集成)、MemPalace(长期记忆存储)、GitHub Hook 等。
Dulus 支持为 Agent 定义不同的「人格角色」——每个 persona 有自己的名字、头像、配色、语气和 system prompt 片段。内置角色包括:
| Persona | 角色 | 语言风格 |
|---|---|---|
| Dulus | 主指挥官 | 多米尼加西班牙语(es_DO),技术流 emoji 丰富 🔥🦅💜🇩🇴 |
| kimi-code | 后端专家 | 简洁高效,少说多做 |
| kimi-code2 | UI/UX 设计 | 创意视觉系,多彩动画风格 |
| kimi-code3 | 文档自动化 | 结构清晰,API 文档生成 |
每个 persona 的行为由一段 system_prompt_fragment 定义,决定了 Agent 的响应风格。这比在代码里硬编码 prompt 灵活得多。
Dulus 在部署设计上下了不少功夫,真正做到了「三分钟部署完毕」。
pip install dulus
dulus
# 30 秒进入 REPL
项目提供多阶段优化的 Dockerfile,构建出的镜像约 200MB,搭配 docker-compose.yml 实现一键启动:
docker compose up -d
# 访问 http://localhost:5050 → WebChat UI
docker-compose 会自动暴露:
5050:5000 — Web 聊天界面5152:5151 — IPC Bridge(后台任务、插件通信)内置健康检查:
healthcheck:
test: ["CMD", "curl", "-fsS", "http://127.0.0.1:5000/api/health"]
interval: 30s
timeout: 5s
retries: 3
Dulus 本质上是纯 CPU 运行的工具,核心是 LLM API 调用和上下文管理,不涉及 GPU 加速计算。实际需求:
如果选择使用 Ollama 本地模型(推荐 gemma4),则需要额外 GPU 资源。但云端 API 模式下,完全不需要 GPU。
Dulus 内置一个零依赖的轻量 HTTP 服务器(基于 Python 标准库 http.server),提供:
┌─────────────────────────────────────────┐
│ Dulus CLI / Web UI │
├─────────────────────────────────────────┤
│ agent.py — Agent 运行循环 + 事件流 │
├──────────┬──────────┬────────────────────┤
│backend/ │ backend/ │ backend/ │
│context │ personas │ plugins │
│(智能上下文)│(人格系统) │ (插件热加载) │
├──────────┴──────────┴────────────────────┤
│ providers/ — LiteLLM 多模型适配层 │
│ tools/ — 30+ 内置工具 │
│ tool_registry/ — 工具注册中心 │
│ compaction/ — 上下文压缩器 │
│ governance/ — 权限与治理 │
└─────────────────────────────────────────┘
agent.py 的核心 run() 函数是一个生成器模式的 Agent 循环,yield 多种事件类型:
def run(...) -> Generator:
# Agent 状态
state = AgentState(messages=[], total_tokens=0, turn_count=0)
while True:
# 发送用户消息 → 获取模型响应
response = stream(provider, messages, ...)
for event in response:
yield event # TextChunk | ThinkingChunk | ToolStart | ToolEnd
# 检查是否有工具调用
if has_tool_calls(response):
result = execute_tool(tool_call)
yield ToolEnd(name=tool, result=result)
# 检查权限(PermissionRequest)
if needs_permission(tool_call):
yield PermissionRequest(description=...)
# 上下文压缩
maybe_compact(state)
这个设计有两个精妙之处:
queue.get(timeout=0.1) 阻塞,永远可以被 KeyboardInterrupt 中断Dulus 内置权限分级系统,控制 Agent 可以执行哪些危险操作:
auto:自动批准安全操作,危险操作弹窗确认accept-all:完全自动(测试用)manual:所有操作都需要确认当 token 使用量超过阈值时,compaction 模块会调用一个专门的压缩 LLM,将历史对话压缩为结构化摘要,同时保留关键决策点。这解决了长会话的「上下文稀释」问题。
通过 max_concurrent_agents=3 和 max_agent_depth=3 配置,Dulus 支持子 Agent 嵌套调度:主 Agent 可以派生子 Agent 处理子任务,完成后汇总结果。子 Agent 之间可以共享记忆(通过 MemPalace)。
Dulus 运行时完全依赖外部 LLM API,没有任何内置模型。这意味着:
permission_mode=auto 下,Agent 可以自动执行删除文件、运行 shell 命令等高危操作。对于生产环境,建议使用 manual 模式。
Dulus 于 2026 年 5 月开源,至今不到 2 个月。虽然有 358 Stars,但:
Dulus 的默认人格「Dulus」使用多米尼加西班牙语风格输出,对于非西班牙语用户可能造成阅读障碍。虽然支持多语言切换,但这不是一个「中文友好」的工具。
Dulus 代表的趋势是:AI 编程工具正在从 IDE 插件形态,向独立运行时形态演进。
传统 IDE 插件(Copilot、Cursor 插件)受限于 IDE 生命周期,无法实现真正的后台持续运行。而独立 Agent 运行时(Dulus、Claude Code CLI)则完全掌控执行环境,可以:
在 2026 年上半年,Claude Code、Cursor Agent、Devin 都已经证明了这个方向的可行性。Dulus 的差异化在于:极简安装(pip install)、多模型统一接入(LiteLLM)、人格化 Agent(Personas),以及对 Docker 部署的原生支持。
对于希望快速搭建 AI 编程自动化流水线的团队,Dulus 是一个值得关注的轻量化选择。