# dtcloud_code_agent **Repository Path**: dtcloud360/dtcloud_code_agent ## Basic Information - **Project Name**: dtcloud_code_agent - **Description**: DTCcloud Code Agent 是一款专为 DTCcloud开发设计的 Rust AI 编程智能体。它采用单文件二进制部署,支持多模型切换及四种交互前端。工具内置 27+ 功能与 MCP 生态,覆盖从代码生成、调试到热重载的全链路开发流程。具备会话持久化、多会话真并发及上下文压缩能力,并通过沙箱与权限门控保障安全。深度集成框架约定,旨在帮助团队利用 AI 加速重复性编码与审查工作。 - **Primary Language**: Rust - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-28 - **Last Updated**: 2026-07-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DTCloud 编程智能体 面向终端与桌面的 AI 编程代理 —— Rust 后端 + React/TypeScript 前端。 > 灵感来自 [DeepSeek-DTCloud Code Agent](https://github.com/esengine/DeepSeek-DTCloud Code Agent)(Go 版), > 本项目是遵循相同配置驱动与插件驱动架构的 Rust 全新实现, > 围绕 DeepSeek 前缀缓存优化,长会话 token 成本更低。 ## 特性 - **配置驱动。** Provider、Agent、启用的工具和插件全部声明在 `dtcloud-code.toml`,无硬编码模型。 - **多模型可组合。** DeepSeek 作为预设;任何 OpenAI 兼容端点只需配置,无需改代码。 - **插件驱动。** 外部工具通过 stdio JSON-RPC(MCP 兼容)以子进程运行;内置工具通过显式数组自注册。 - **零摩擦分发。** 单一静态二进制(7MB);`cargo build --release` 产出无运行时依赖的可执行文件。 - **Rust 性能。** 内存安全、零成本抽象、tokio 异步 I/O、带背压的流式 SSE。 - **双模型协作。** Planner + executor 独立会话,前缀缓存稳定。 - **上下文压缩。** 上下文填满时自动摘要,用户对话原样保留。 - **权限与沙箱。** 每次调用门控:拒绝 > 询问 > 允许 > 回退。文件写入限制、禁止读取、Bash 安全。 - **桌面 GUI。** Tauri v2 + React + Tailwind CSS,VSCode 风格界面(TitleBar/ActivityBar/面板系统)。 - **多 Provider 管理。** 同时管理多个模型提供商(DeepSeek/GLM/Qwen/Claude/通义等),per-provider 模型选择与切换。 - **内置技能。** 4 个预装技能(DTCloud 模块开发、代码审查、安全审查、最佳实践),Skills 引擎支持自定义扩展。 - **MCP 集成。** 自动加载 `opencode.json` / `mcp.json` 插件,MCP 工具注册到 Agent。 - **SSH 管理。** 密码/密钥双认证,多连接保存/切换/删除,支持 SSH 远程执行。 - **DTCloud 面板。** 独立模块管理面板,支持创建/删除/详情查看,chat 命令驱动。 - **多会话并发。** 每个运行时按 session id 经 `SessionManager` 路由(每会话一把锁):serve 多标签独立服务(`X-Session-Id` 头 + `POST /api/session/new`)、feishu 按 `chat_id` 路由(多群并发)、REPL 的 `/bg` 跑独立会话。不同会话的 turn 真并行,同会话内串行。`Agent::run` 全程未改——纯锁粒度解耦。 ## 快速开始 ### 安装 ```bash # 方式一:一行命令安装(Linux / macOS) curl -fsSL https://gitee.com/dtcloud360/dtcloud_code_agent/raw/master/install.sh | bash # 方式二:克隆并用 Make git clone https://gitee.com/dtcloud360/dtcloud_code_agent.git cd dtcloud_code_agent make install # 方式三:手动构建 cargo build --release cp target/release/dtcode ~/.local/bin/ ``` ### 配置与运行 ```bash # 初始化(创建 dtcloud-code.toml) dtcode setup # 设置 API Key export DEEPSEEK_API_KEY=sk-... # AtomCode 风格:直接传 prompt dtcode "解释 main.rs 文件" # 交互式聊天 dtcode --chat # Web 前端 dtcode serve ``` ## 命令 | 命令 | 描述 | |---------|------| | `dtcode setup` | 交互式安装向导(3 步:语言 + Provider + 确认) | | `dtcode run "prompt"` | 一次性 prompt 执行 | | `dtcode chat` | 交互式多轮对话(默认 TUI;`--simple` 为行界面) | | `dtcode serve` | 本地 Web 前端(默认 http://127.0.0.1:8787;真实 agent 已接入) | | `dtcode init` | 分析项目并生成 `AGENTS.md` 约定文件 | | `dtcode init dtcloud` | 在当前目录初始化 DTCloud 项目(克隆框架、Python 环境、生成 AGENTS.md) | | `dtcode new dtcloud ` | 创建完整 DTCloud 项目(含模块骨架) | | `dtcode plugin list` | 列出已安装插件(含 skills/cmds/mcp 标记) | | `dtcode plugin remove ` | 移除已安装的插件 | | `dtcode login [--issuer atomgit]` | OAuth 授权码登录(浏览器 + 回调 server) | | `dtcode logout [--issuer atomgit]` | 删除已存储的 OAuth token | ## 更新 DTCloud `dtcode update` 可使 DTCloud 框架(以及 company-ai-rules)保持最新。 默认行为:始终拉取最新版本。添加 `--check` 可报告当前与最新版本差异(会执行一次刷新式 pull 以计算差异), 使用 `--strict` 可进行 CI 严格检查,使用 `--pin ` 可按项目固定版本(写入 `./dtcloud.lock`)。 该工具**不会将 DTCloud 代码置入本仓库**——它会在您的机器上通过 `git pull` 更新 `~/.dtcloud-code/dtcloud/`,并遵循框架自身的 LGPL-3 许可证。本仓库仍采用 MIT 许可证。 ## 桌面应用 Tauri v2 桌面 GUI,提供 VSCode 风格开发体验: - **TitleBar** — 自定义标题栏,显示当前 Provider/Model,支持切换 - **ActivityBar** — 左侧活动栏,Chat / Files / Terminal / Git / Skills / Tools / Settings 面板 - **ChatPanel** — AI 对话面板,支持 11 个斜杠命令(含 `/model`、`/create-module`、`/list-modules`) - **CodeEditor** — Monaco Editor(语法高亮 + Diff 视图) - **TerminalPanel** — xterm.js 多终端,SSH 集成 - **FileExplorer** — 文件树浏览 + 搜索 - **SkillsPanel** — 技能管理(内置 + 自定义) - **DTCloudPanel** — DTCloud 模块管理(创建/删除/详情) - **SettingsPanel** — 多 Provider 配置 + per-provider 模型选择 ```bash # 启动桌面应用 cd desktop && cargo tauri dev ``` ## 配置 最小 `dtcloud-code.toml`(支持多 Provider): ```toml default_model = "deepseek-chat" [[providers]] name = "deepseek" kind = "openai" base_url = "https://api.deepseek.com" models = ["deepseek-chat", "deepseek-reasoner"] api_key_env = "DEEPSEEK_API_KEY" [[providers]] name = "zhipu" kind = "openai" base_url = "https://open.bigmodel.cn/api/paas/v4" models = ["glm-4-flash", "glm-4-plus"] api_key_env = "ZHIPUAI_API_KEY" [tools] enabled = [] # 留空/省略 = 全部内置工具 bash_timeout_seconds = 120 ## 开发 ```bash just fmt # 格式化所有代码(gitoxide, rustfmt) just clippy # clippy 代码检查 just test # 运行所有测试 just audit # cargo-deny 依赖审计 just spell # codespell 拼写检查 just machete # 检测未使用依赖 just check # 全部检查(fmt + clippy + test) cargo build --release # 发布二进制 ``` ### 项目结构 ``` crates/ ├── cli/ # main.rs,命令:setup/run/chat/serve/plugin/login/logout ├── config/ # TOML 加载与解析 ├── core/ # Agent、Coordinator、Provider/Tool trait、Session、Compaction、SessionManager(每会话池)、auth、bg_session │ └── src/agent/ # agent/mod.rs(impl)+ agent/types.rs(类型定义) ├── memory/ # 独立 Memory crate(session持久化、BM25检索) ├── permission/ # 策略、门控、沙箱、审批器、Bash安全 ├── plugin/ # MCP 客户端(stdio + streamable-http) ├── provider-openai/ # OpenAI 兼容流式实现(SSE) ├── secrets/ # api_key 统一获取(配置直写 → 环境变量 → OS Keyring) ├── tool-builtin/ # 19 个内置工具 └── tool-codegraph/ # 11 个代码智能工具(tree-sitter) desktop/ # Tauri v2 桌面应用 ├── src-tauri/ # Rust 后端(Tauri 命令) ├── src/ # React + TypeScript 前端 │ ├── components/ # UI 组件 │ │ ├── layout/ # TitleBar, ActivityBar, StatusBar │ │ ├── panels/ # ChatPanel, CodeEditor, TerminalPanel, etc. │ │ ├── common/ # Icons, ErrorBoundary, LoadingSkeleton, Toast │ │ └── chat/ # InputArea, MessageList, MarkdownRenderer │ ├── hooks/ # useChat, useTheme │ ├── lib/ # tauri.ts (API), theme.ts │ └── types/ # TypeScript 类型定义 ├── builtin_skills/ # 编译时嵌入的技能(rust_embed) └── static/ # 静态资源 webui/ # React + Vite Web 前端 ├── src/ # 聊天面板(轻量 Web UI) └── index.html ``` 依赖方向(无环):`cli → {core, plugin, config} → {tool, provider}`。 桌面应用:`desktop/src-tauri → {core, config} → cli`(复用 Agent 逻辑)。 ### 内置工具 跨两个 crate 共 24 个内置工具: **核心文件/Shell 工具**(`tool-builtin`): | 工具 | 描述 | 只读 | |------|------|------| | `read_file` | 读取文件内容(带行号) | ✅ | | `write_file` | 写入/创建文件(自动建父目录) | ❌ | | `edit_file` | 替换文件中的精确文本片段 | ❌ | | `move_file` | 重命名/移动文件 | ❌ | | `Bash` | 运行 shell 命令;`run_in_background=true` 分离运行 | ❌ | | `ls` | 列出目录内容 | ✅ | | `glob` | 按 glob 模式查找文件 | ✅ | | `grep` | 按正则搜索文件内容 | ✅ | | `search_replace` | 多文件批量替换(正则 + 捕获组) | ❌ | | `change_dir` | 切换 agent 工作目录 | ❌ | | `auto_fix` | 运行 lint/typecheck → 解析错误 → 迭代修复 | ❌ | | `read_image` | 读取图片 → base64 + 元数据(视觉模型) | ✅ | | `remember`/`recall`/`forget` | 跨会话持久化记忆 | ❌ | | `use_skill` | 调用命名技能模板 | ✅ | **代码图谱 + Web 工具**(`tool-codegraph`): | 工具 | 描述 | 只读 | |------|------|------| | `list_symbols` | 列出源文件中的符号(正则/文本匹配;`repo_map` 使用真实 tree-sitter AST) | ✅ | | `read_symbol` | 读取单个符号的完整源码 | ✅ | | `find_references` | 查找符号的所有引用 | ✅ | | `trace_callers` | 反向调用图 BFS | ✅ | | `trace_callees` | 正向调用图 BFS | ✅ | | `trace_chain` | 两符号间的最短调用链 | ✅ | | `file_deps` | 文件依赖图(import/use 分析) | ✅ | | `blast_radius` | 变更影响分析(传递闭包) | ✅ | | `web_search` | 网页搜索 | ✅ | | `web_fetch` | 获取 URL → Markdown | ✅ | ### 斜杠命令(`chat` 中) | 命令 | 描述 | |---------|------| | `/help`, `/h` | 显示可用命令 | | `/quit`, `/q` | 退出 | | `/clear` | 清空对话历史 | | `/model` | 切换当前模型(桌面端支持浏览 Provider) | | `/image ` | 读取图片(元数据 + base64) | | `/plugin install ` | 安装插件仓库 | | `/plugin list` | 列出已安装插件 | | `/plugin remove ` | 移除插件 | | `/create-module ` | 创建 DTCloud 模块 | | `/list-modules` | 列出 DTCloud 项目模块 | | `/skill [name]` | 列出/调用技能 | ### 内置技能 4 个预装技能,随应用分发,用户目录同名技能可覆盖: | 技能 | 描述 | |------|------| | `dtcloud-module-dev` | DTCloud 18 模块开发流程与规范 | | `code-review` | 代码审查流程 | | `security-reviewer` | 安全审查流程 | | `odoo-best-practices` | Odoo/DTCloud 开发最佳实践 | 自定义技能放在 `~/.dtcloud-code/skills/` 目录,格式为 `SKILL.md` + YAML frontmatter。 ### 权限规则 规则格式 `Tool(说明符)`: - `Bash(go test:*)` — 允许任何以 `go test` 开头的命令 - `Edit(docs/**)` — 允许编辑 `docs/` 目录下的文件 - `Bash(rm -rf*)` — 拒绝危险命令 优先级:`deny > ask > allow > fallback`。只读工具默认 `Allow`。 ### MCP 插件 ```toml [[plugins]] name = "example" command = "dtcloud-code-plugin-example" type = "stdio" # 或 "http" 并添加 url = "..." # [[plugins.env]] # KEY = "value" ``` 工具以 `mcp____` 形式暴露。`${VAR}` / `${VAR:-default}` 在 command/args/env/url/headers 中展开。 ## 路线图 详见 [ROADMAP.zh-CN.md](./ROADMAP.zh-CN.md) 基于与 AtomCode 差距分析的完整计划。 | Phase | 优先级 | 描述 | |-------|--------|------| | Phase 1 | 🔴 P0 | 代码图谱工具(8 个)+ Web 工具(2 个) | | Phase 2 | 🔴 P0 | Session 持久化、search_replace、auto_fix | | Phase 3 | 🟡 P1 | Skills、项目指令、记忆、多 Provider | | Phase 4 | 🟢 P2 | 后台会话、Bash 后台、向导、插件安装 | | Phase 5 | 🔵 | SSE 流式 serve、`/bg` chat 接入、记忆 BM25、planner+executor | ## DTCloud 模块开发工具链 本智能体专门为 DTCloud 模块开发提供了 4 个专用工具(共 27 个内置工具): | 工具 | 功能 | |------|------| | `dtcloud_modules` | 查询可复用模块(list/detail/models/search) | | `dtcloud_scaffold` | 一次生成完整模块骨架(Python+XML+Controller+Vue3+Flutter) | | `dtcloud_validate` | 安装/更新/测试模块(自动 venv/addons-path/数据库) | | `dtcloud_server` | 常驻 dev server + 热重载(--dev=reload,qweb,xml) | 完整开发流程: ``` search → scaffold → start → install → edit → update → test → logs → stop ``` 支持三端代码生成:后端 Controller + Vue3 Web 前端 + Flutter 移动端 API,URL 统一为 `/api/<模块>/<模型>/<操作>`。 ## 开发 ```bash cargo check --workspace # 类型检查所有 crate cargo test --workspace # 运行测试 cargo build --release # 发布二进制(7MB) cargo clippy --workspace # 代码检查 ``` ## 许可证 MIT