Baba01hacker666/dct-agent
GitHub: Baba01hacker666/dct-agent
一款支持多服务器接入与多模型调度的多 Agent 编排框架,具备 DAG 任务分解和自主工具调用能力。
Stars: 0 | Forks: 0
# DCT Agent — Doraemon Cyber Team
**多服务器 AI agent · v3.2**
由 baba01hacker 制作
支持 **Ollama**、**OpenRouter** 以及 **任何 OpenAI 兼容的 provider** (DeepSeek, Qwen, Z.ai, Groq 等)。具备自动故障转移、负载均衡、自主 agent 模式、多 agent 小队以及分层任务编排功能。
## 安装
### 稳定版
使用 `pip` 或 `pipx` 从 PyPI 安装稳定版本:
```
# 使用 pip
pip install dct-agent
# 使用 pipx(推荐用于 CLI 应用)
pipx install dct-agent
```
### 最新开发版 (GitHub)
直接从 GitHub 安装最新版本:
```
# 使用 pipx(推荐)
pipx install git+https://github.com/Baba01hacker666/dct-agent.git
# 使用 pip
pip install git+https://github.com/Baba01hacker666/dct-agent.git
```
安装完成后,启动交互式 CLI:
```
dct
# 或作为 module 使用:
python -m dct
```
## 快速开始
### Ollama (本地或远程)
```
# 注册服务器
python -m dct add localhost 11434 local
python -m dct add 192.168.1.10 11434 home "home lab box"
python -m dct add 10.0.0.5 11434 vps1 "DigitalOcean"
# 带 auth + TLS
python -m dct add secure-host.example.com 443 prod --api-key mytoken --tls --no-tls-verify
# 探测所有
python -m dct probe
# 列出跨服务器的所有模型
python -m dct models
# 启动交互式 shell
python -m dct
```
### OpenAI 兼容的 Provider (DeepSeek, Qwen, Z.ai, Groq 等)
```
# 便捷性 — 内置预设(13 个 providers)
python -m dct add-provider deepseek sk-xxx
python -m dct add-provider qwen sk-xxx
python -m dct add-provider groq sk-xxx
python -m dct add-provider together sk-xxx
# 或使用任何 OpenAI 兼容 API 的完整 URL
python -m dct add-openai https://api.deepseek.com sk-xxx deepseek
# 注册 OpenRouter
python -m dct add-openrouter sk-or-xxx
```
### Agent 技能
```
# 列出所有 skill 预设
/skills
# 加载专用 persona(设置 system prompt + 启用 agent mode)
/skill web-design # Frontend — HTML, CSS, JS, responsive UIs
/skill python # Idiomatic typed Python 3.11+
/skill pentest # Penetration testing workflow
/skill bug-hunt # Security code review
/skill devops # Docker, K8s, CI/CD, cloud
```
### 配置
```
# 设置默认值(持久化到 ~/.config/dct/config.json)
/config set default_server deepseek
/config set default_model deepseek-chat
/config set auto_probe_interval 120 # background health check every 2 min (0 = off)
```
## Shell 命令
### 服务器管理
| 命令 | 描述 |
|---|---|
| `/servers` | 列出所有服务器的状态、延迟和模型数量 |
| `/add [alias] [note] [--api-key KEY] [--tls] [--no-tls-verify]` | 注册并探测一台 Ollama 服务器 |
| `/add-openai [alias] [note]` | 注册一个 OpenAI 兼容的 provider |
| `/add-provider [alias]` | 从内置预设中快速添加 (deepseek, qwen, groq 等) — 使用 `--list` 查看全部 |
| `/remove ` | 取消注册某个服务器 |
| `/probe` | 并行探测**所有**服务器 |
| `/probe ` | 详细探测单个服务器 (所有 endpoint) |
| `/use ` | 切换当前使用的服务器 |
### 模型管理
| 命令 | 描述 |
|---|---|
| `/models` | 当前服务器上的模型 |
| `/models ` | 特定服务器上的模型 |
| `/allmodels` | 所有服务器上的所有模型 |
| `/model ` | 切换模型 |
| `/pull ` | 在当前服务器拉取模型 |
| `/pull ` | 在特定服务器拉取模型 |
| `/delete ` | 从当前服务器删除模型 |
| `/show ` | 模型信息、系统 prompt、modelfile |
### 对话与 Session
| 命令 | 描述 |
|---|---|
| `/clear` | 清除历史记录 |
| `/history` | 交互轮次计数 + token 估算 |
| `/system ` | 设置系统 prompt |
| `/prompts` | 列出内置系统 prompt 预设 |
| `/prompt ` | 应用内置系统 prompt 预设 |
| `/skills` | 列出 agent 技能预设 (专业化人格) |
| `/skill ` | 加载 agent 技能 (设置系统 prompt + 自动启用 agent) |
### 多 Agent 命令
| 命令 | 描述 |
|---|---|
| `/squad list` | 列出所有小队 |
| `/squad create ` | 创建一个新的 agent 小队 |
| `/squad add [--provider ] [--skill ]` | 添加成员,包含角色、模型、可选的 provider 和技能 |
| `/squad remove ` | 移除一个成员 |
| `/squad show ` | 显示小队配置 |
| `/squad run ` | 与所有小队成员并行执行任务 |
| `/orchestrate ` | 分层任务分解 → 并行波次执行 → 结果汇总 |
| `/copy` | 将对话记录复制到剪贴板 (降级回退为打印文本) |
| `/save ` | 将对话保存为 JSON |
| `/load ` | 恢复已保存的对话 |
| `/status` | 完整的服务器表格 |
### 高级 Agent 控制
| 命令 | 描述 |
|---|---|
| `/rewind` 或 `/back` | 将对话回退 1 轮 (丢弃最后的用户 prompt 和 AI 回复) |
| `/retry` | 回退对话并立即重新发送最后的用户 prompt |
| `/editai` | 在交互式编辑器中打开最后的 AI 回复,以手动引导 agent |
| `/commit` | 使用 AI 模型为暂存文件生成标准的 Git commit 信息 |
| `/goal ` | 进入目标模式 — agent 自主朝着高层目标工作 |
| `/learn` | 触发自主递归反思,从历史记录中提取工作流和规则 |
### Agent 模式
| 命令 | 描述 |
|---|---|
| `/agent` | 开启/关闭 agent 模式 (启动时默认为开启) |
| `/agent status` | 显示当前状态 |
Agent 模式默认开启。你可以在启动时使用 `--no-agent` CLI 标志来禁用它。
当 agent 模式开启时,模型会自主调用工具:
**执行:**
- `run_python` — 执行 Python 代码 (支持后台运行)
- `run_bash` — 执行 bash 脚本 (支持后台运行)
- `run_shell` — 运行 shell 命令 (支持后台运行)
**文件:**
- `read_file` — 读取文件 (支持 ``, ``, `` 切片)
- `write_file` — 写入/创建文件 (限制 50MB,通过 `ast` 进行 **Python 语法验证**,超过 100KB 的文件跳过 diff)
- `patch_file` — 在文件中查找+替换 (通过 `ast` 进行 **Python 语法验证**)
- `list_dir` — 列出目录
- `tree` — 目录树
- `glob` — 使用 ripgrep 快速发现文件
- `grep` — 使用 ripgrep 快速正则搜索
**网络:**
- `fetch_url` — 抓取 URL
- `web_search` — DuckDuckGo 搜索
- `web_extract` — 抓取 URL 并通过 CSS 选择器提取内容
**视觉/图像:**
- `read_image` — 读取图像文件,为视觉模型返回 base64 数据 URL (PNG, JPG, GIF, WebP, BMP;最大 20MB)
**子 Agent 与后台任务:**
- `run_subagent` — 生成子 agent 来委派子任务 (支持 `true `,可选 ``,可选 ``)
- `bg_status` — 检查后台任务/子 agent 的状态和日志 (可选 ``)
**Notebooks:**
- `notebook_edit` — 替换、插入或删除 Jupyter notebooks 中的单元格
**用户交互:**
- `ask_user` — 向用户提问 (可选 `` 用于单选对话框)
- `enter_plan_mode` / `exit_plan_mode` — 在执行前进行结构化规划
**任务跟踪与记忆:**
- `task_create` / `task_update` / `task_list` — 管理结构化任务列表
- `core_memory_manage` — 深度 CRUD 人格/项目管理 (追加/替换/重写)
- `memory_store` / `memory_search` — 无限向量 RAG 记忆
### 视觉
| 命令 | 描述 |
|---|---|
| `/vision ` | 向视觉模型发送图像并附带一个问题 |
| `/image ` | `/vision` 的别名 |
### 直接工具 (无需模型)
| 命令 | 描述 |
|---|---|
| `/run python
` | 直接执行 Python |
| `/run bash ` | 直接执行 bash |
| `/read ` | 读取并显示文件 |
| `/write ` | 写入文件 (交互式) |
| `/fetch ` | 抓取 URL |
| `/search ` | 网络搜索 |
| `/vision ` | 向视觉模型发送图像 + prompt |
### 广播
| 命令 | 描述 |
|---|---|
| `/broadcast ` | 同时发送给所有在线服务器 |
| `/bc ` | 同上 |
### 旁路查询 (BTW)
| 命令 | 描述 |
|---|---|
| `/btw ` | 向当前使用的模型提出旁路问题,而不修改会话历史记录 |
### 配置
| 命令 | 描述 |
|---|---|
| `/config` | 显示所有配置值 |
| `/config set ` | 设置配置值 |
配置键包括:`default_server`, `default_model`, `agent_enabled`, `max_agent_turns`, `history_limit`, `no_probe_on_start`, `auto_probe_interval`
## 模型路由器
路由器会自动选择最佳服务器:
1. 首选的别名 + 模型 (如果已指定)
2. 拥有请求模型且响应最快的在线服务器
3. 任何在线服务器 (使用其第一个模型)
故障转移是完全自动的 — 如果当前服务器在对话中断线,agent 会重新进行探测并跳转到下一个可用的服务器。
## Provider 支持
| Provider | 类型 | 认证 | 备注 |
|---|---|---|---|
| **Ollama** | 原生 | API key (Bearer), TLS | 支持本地或远程、流式传输、模型拉取/删除 |
| **OpenRouter** | OpenAI 兼容 | API key | 超过 200 种模型,流式传输 |
| **OpenAI 兼容** | 通用 | API key (Bearer) | DeepSeek, Qwen, Z.ai, Groq,以及任何 `/v1/chat/completions` endpoint |
### 内置 Provider 预设
使用 `/add-provider ` 或 `python -m dct add-provider `:
```
deepseek qwen groq together openai
mistral xai perplexity fireworks hyperbolic
cerebras sambanova zai
```
### 内置 Agent 技能
使用 `/skill ` 加载专业化人格:
```
web-design react backend python pentest
devops data bug-hunt cli-tool refactor
```
自定义技能可以通过 `/skill add ` 创建 (持久化保存到配置中)。
## 多 Agent 系统
### 小队 — 并行 Agent 团队
定义一个由具备不同角色、模型和 provider 的 agent 组成的团队。让它们并行执行任何任务:
```
/squad create webteam
/squad add webteam frontend qwen-coder --provider qwen --skill web-design
/squad add webteam backend deepseek-chat --provider deepseek --skill backend
/squad add webteam security deepseek-chat --skill bug-hunt
/squad run webteam "Build a task management dashboard"
```
每个小队成员都作为一个独立的 agent 运行,拥有自己的模型、provider、角色和技能预设。所有成员的结果都会被收集并展示。小队会持久化保存在配置中。
### 编排器 — 分层任务分解
对于庞大复杂的目标,编排器会将工作分解为子任务的 DAG (有向无环图),并以并行波次的方式执行它们:
```
/orchestrate "Build a full-stack e-commerce app with auth, cart, and checkout"
```
**工作原理:**
1. **规划 (Plan)** — 规划 agent 将目标分解为带有依赖关系的结构化任务
2. **DAG** — 任务形成依赖关系图 (任务 3 依赖于任务 1 → 在其之后运行)
3. **波次 (Waves)** — 每一轮波次都会使用独立的 CodeAgent 并行运行所有就绪的任务
4. **上下文流转** — 存在依赖关系的任务会接收其前置任务的输出
5. **汇总 (Synthesize)** — 将所有结果收集并生成最终总结
执行示例:
```
Wave 1 (parallel): [1. Scaffold] [2. DB schema]
Wave 2 (parallel): [3. Auth API ← 2] [4. Frontend ← 1]
Wave 3 (serial): [5. Integration ← 3,4]
```
## 自主记忆与递归学习
DCT Agent 具备最先进的混合记忆系统,深受 **MemGPT (Letta)**、**OpenHands** 和 **NousResearch Hermes** 的启发:
1. **全局人格 (MemGPT 风格):**
- 维护于 `~/.config/dct/soul.md` (核心人格)、`user.md` (人类画像) 和 `memory.md` (全局上下文)。
- agent 使用 `core_memory_manage ` 自主地进行 `append` (追加)、`replace` (替换) 甚至 `rewrite` (重写) 这些数据块,以便在数据量过大时进行压缩。
2. **项目级上下文 (OpenHands 风格):**
- 自动在当前工作目录中加载并维护 `.dct/project.md`。
- agent 会主动学习特定于代码库的工作流、构建命令和架构模式,并将它们缓存在此处,以便在跨会话时共享。
3. **无限 RAG 归档记忆:**
- 由嵌入式纯 Python 向量数据库 (`~/.config/dct/memory.json`) 提供支持。
- agent 使用 `memory_store ` 和 `memory_search ` 进行深度的代码库和历史记录检索。
4. **递归自我改进 (`/learn`):**
- 当你输入 `/learn` 时 (或者当 `/goal` 模式完成时),agent 会读取其完整的对话历史记录,并反思哪些任务取得了成功,哪些策略遭遇了失败。
- 它会提取可用的经验教训,并利用其记忆工具永久重写 `.dct/project.md` 或 `user.md`,从而确保它**绝不会重蹈覆辙**。
## 可靠性与韧性
专为长时间运行的自主任务而构建,DCT Agent 实现了专业级的容错韧性:
- **上下文修剪与总结**:滑动窗口会监控上下文的 token 大小。当它变得过大时 (约 30k 个 token),agent 会丢弃较早的工具执行记录,并自主发起二次 API 调用来**总结**这些被丢弃的交互过程。该总结会作为持久记忆注入,从而在保持高层任务感知的同时防止 token 耗尽。
- **网络重试退避**:所有请求都使用健壮的 HTTP session,能够自动拦截瞬时的 API 错误 (`429 Too Many Requests`, `502 Bad Gateway`, `503 Service Unavailable`),并通过指数退避机制进行重试。
- **自动探测**:后台线程会定期刷新服务器健康状态 (可配置间隔,默认为 60 秒)。离线的服务器将被自动检测到,无需手动调用 `/probe`。
- **后台清理**:已完成的后台任务和子 agent 会在 5 分钟后被自动清除,以防止内存泄漏。后台日志的上限为 10,000 个字符。
- **大文件安全**:文件写入限制为 50MB。对于超过 100KB 的文件将跳过 diff 生成,以避免引发内存问题。
## 服务器注册表
服务器信息持久化存储于 `~/.config/dct/servers.json`。配置信息持久化存储于 `~/.config/dct/config.json`。一次添加,处处可用。
## 环境要求
```
rich>=13.0
requests>=2.31
prompt_toolkit>=3.0.36
beautifulsoup4>=4.12.0
Python>=3.11
```
标签:AI智能体, AI风险缓解, LLM工具, Petitpotam, 人工智能, 任务编排, 多模型集成, 用户模式Hook绕过, 自主编码, 逆向工具