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绕过, 自主编码, 逆向工具