# DSHCODER **Repository Path**: pengkun813/dshcoder ## Basic Information - **Project Name**: DSHCODER - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-15 - **Last Updated**: 2026-08-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dshcoder > **由 DeepSeek Harness 驱动的 CodeBuddy/Qoder 风格 AI 编程 IDE** > > 一个运行在浏览器里的完整编程工作台:左侧文件工作区、中间多语言代码编辑器、右侧 AI 助手面板——而右侧 AI 的**每一项能力**(补全、解释、生成、评审、测试、修复、翻译、重构、代码库问答)底层都由 **DeepSeek Harness(DSH)agent** 完成,而不是简单调用一次大模型 API。 ![architecture](https://img.shields.io/badge/powered%20by-DeepSeek%20Harness-6c5ce7) ![license](https://img.shields.io/badge/license-MIT-green) ![node](https://img.shields.io/badge/node-%3E%3D18-blue) --- ## ✨ 特性 ### IDE 基础 - 📂 **打开文件夹**:欢迎页/资源管理器入口 → 驱动器浏览 → 选择文件夹;多项目切换 + 最近文件夹列表,切换工作区时 harness 自动随迁(CodeBuddy/VSCode 同款习惯) - 📁 **工作区文件树**:浏览 / 新建 / 重命名 / 复制 / 粘贴 / 删除、在资源管理器中显示、展开层级持久化、右键菜单、刷新 - 🔍 **全局搜索**:文件名 + 文件内容搜索(Ctrl+Shift+F),点击跳转到文件/行 - 🌿 **源代码管理(SCM)**:git 变更列表、逐文件回滚、✨AI 生成提交信息一键填入、✅ 一键提交 - ⌨️ **命令面板**:Ctrl+Shift+P 搜索式执行所有命令(含插件贡献的命令) - 📝 **Monaco 编辑器**(VS Code 同款内核):40+ 语言语法高亮、多标签页(右键关闭/关闭其他/关闭全部、双击空白新建)、**Ctrl+F 查找 / Ctrl+H 替换**、**LSP 智能跳转**(TS/JS 内置定义/引用 + 全语言文本式转到定义 Alt+F12 / 查找引用 Shift+F12)、状态栏点击(字符集/语言/跳行) - 🖥️ **内置终端**:工作区内执行任意命令(npm / node / python / git …),流式输出,支持 `cd`、`clear` - 🧩 **VS Code 插件系统**:VSIX 导入 / 卸载 / 启用停用 / 插件包导入导出(manifest+vsix 打包迁移);执行层支持**主题、代码片段、TextMate 语法高亮(真实引擎)、快捷键、命令、新文件类型**;**VS 按钮 = 本机 VS Code serve-web 完整引擎**;**code-server 模式 = 桌面级原生扩展完整执行**(一键安装 + 嵌入) - 🗂 **AI 改动回滚**:AI 面板「AI 改动」查看 git 变更清单,逐文件/全部一键回滚 - 🔔 **通知中心**:操作通知汇总与清空 - 💾 **会话管理**:搜索、导出/导入(JSON)、清空、消息级删除/重新生成 - ⚙️ 状态栏、活动栏、深色主题、设置面板(补全/超时/主题/vscodeBin) ### AI 能力(全部由 DSH agent 驱动) | 能力 | 说明 | |------|------| | ✍️ 行内代码补全 | 光标处幽灵文本续写,`Tab` 接受,防抖可调 | | 🎯 选中浮动工具栏 | 选中代码即现(CodeBuddy 同款):添加到对话 / 解释 / 修改 / 注释 / 测试 / 修复 / 评审 / 翻译 | | ✏️ 内联编辑 | `Ctrl+I`:就地输入修改指令,AI 直接替换选中代码 | | 💬 对话问答 | **对话 / Agent 双模式**(Ask:只答不改文件;Agent:自主读写文件、执行命令),附件芯片挂载选中代码/打开文件/终端输出,**@ 文件引用**,**多角色 Agent**(通用/代码/测试/评审专家) | | 📖 代码解释 | 选中代码 → 整体作用 / 关键实现 / 潜在问题 / 改进建议 | | 🛠️ 代码生成 | 按需求生成代码,agent 直接在工作区创建/写入文件 | | 🔍 代码评审 | 按 正确性 / 性能 / 可维护性 / 安全 / 风格 分类输出问题清单与修复建议 | | 🐞 Bug 修复 | 粘贴报错 / 选中可疑代码 → agent 定位、修改文件、运行验证 | | 🧪 自动测试 | 为选中代码生成单测 → 在工作区创建测试文件 → 运行直到通过 | | 🌐 代码翻译 | 选中代码 → 翻译为另一种语言实现 | | 📑 注释生成 | 为选中代码生成中文文档注释 | | ♻️ 代码重构 | 识别坏味道,提出方案并(安全时)直接修改 | | 📝 提交信息 | 读取 `git diff` 自动生成 Conventional Commits 风格提交信息 | | 🗂️ 代码库问答 | 「这个项目的模块划分?」— agent 自主探索整个代码库后回答 | | 🛡️ 终端 AI | 终端的 ➕添加到对话 / 💡解释 / ⚡修复 三个入口 | | 🖼️ 图片理解 | 粘贴/拖拽/📎 选择图片挂为附件,agent 用 read_image 读取(模型支持视觉时直读;不支持时自动降级为程序化分析) | ### 会话与底层 - 💾 **会话管理**:多会话历史(🕘 历史 / + 新对话)、搜索、一键清空、自动持久化(JSONL)、切换/删除会话 - 🧠 **会话记忆(与原生 DSH 一致)**:每个会话绑定一个 harness session——同一会话内 agent 持续续接,**stop/start 重启 harness 后从磁盘 resume 恢复记忆**;新对话 = 独立记忆窗口,互不干扰 - 🧠 **两级记忆系统**:**全局记忆**(所有项目生效,偏好/约定)+ **项目记忆**(仅当前工作区),每次 AI 任务自动注入 - 🔌 **harness 页面内一键启停**:AI 助手头部 / 状态栏点击即停/即启;AI 请求前自动拉起 - 🎛️ **模型与 API 配置(同原生 DSH)**:设置面板直接编辑 `~/.dsh` 的模型(provider/model/reasoningEffort)与 API Key,保存后自动重启 harness 生效 - 📐 **三栏可调宽窄**:左右拖拽柄调整面板宽度,自动记忆保存 - 🏷️ **智能标题**:首轮问答完成后自动用轻量任务生成简短标题(CodeBuddy 同款) - ✅ **任务清单**:Agent 模式自动输出 `- [ ]` 任务清单并随进度更新勾选(markdown 复选框渲染) - 📏 **.rules 项目规则**:工作区 `.rules/` 目录下的 `.md/.mdc/.txt` 规则文件自动注入每个 AI 任务 - 🖼️ **图片理解**:粘贴/拖拽/📎 选择图片挂为附件,agent 用 read_image 读取(模型支持视觉时直读;不支持时自动降级为程序化分析) - 🚀 **一键启动**:双击 `start-dshcoder.bat` 即可,dshcoder → `http://127.0.0.1:3081`(原生 DSH 保持 3080,互不冲突),已运行自动识别不重复启动(未设置 DSH_HOME 时自动使用 `~/.dsh`) --- ## 🏗️ 架构 ``` ┌─────────────────────────────┐ │ 浏览器 (前端) │ │ 文件树 │ Monaco 编辑器 │ 终端 │ AI 面板 │ └──────────────┬──────────────┘ │ HTTP / SSE(真流式) ┌──────────────▼──────────────┐ │ Node.js 后端 (零依赖) │ │ · 文件 API / 命令执行 │ │ · AI 请求 → 常驻 harness 转发│ │ · 会话存储 │ └──────────────┬──────────────┘ │ spawn(每个实例一个,常驻) ┌──────────────▼──────────────┐ │ dsh --profile dshcoder-host │ ← 自定义 harness bundle │ HTTP + SSE 任务服务 │ │ 复用 dsh-base 全部能力: │ │ LLM · 工具 · 沙箱 · 会话 │ │ token 流式 · 工具事件 · 排队 │ └─────────────────────────────┘ ``` ``` dshcoder/ ├── server/ # Node.js 后端(零第三方依赖) │ ├── index.js # HTTP 服务 + 路由 + AI/SSE 转发 │ ├── harness.js # 常驻 harness 管理(自建 profile/进程/自动重启) │ ├── dsh.js # DSH 定位 + 各能力任务模板 │ ├── files.js # 工作区文件操作(防路径穿越) │ ├── exec.js # 命令执行(SSE 流式) │ └── sessions.js # 会话持久化(JSONL) ├── harness-host/ # 自定义 harness bundle(dshcoder-host) │ ├── cordis.patch.yml # 挂载常驻任务服务的补丁层 │ └── lib/ # HTTP+SSE 任务 runner(复用 agent/session 服务) ├── scripts/ # 启动器 CLI(单实例管理) ├── public/ # 前端(原生 JS + Monaco AMD) ├── workspace/ # IDE 用户工作区(gitignored) └── data/ # 会话等应用数据(gitignored) ``` --- ## 🚀 安装与启动 ### 前置条件 - Node.js ≥ 18 - 已安装并配置好 [DeepSeek Harness](https://www.npmjs.com/package/@deepseek-ai/dsh): ```bash npm i -g @deepseek-ai/dsh # 确保已配置 DSH 凭据(通常位于 ~/.dsh/.credentials.yaml) dsh --profile headless "你好" # 能输出回答即说明可用 ``` ### 一键启动(bat) ```bash git clone git@gitee.com:pengkun813/dshcoder.git cd dshcoder npm install # 安装 monaco-editor start-dshcoder.bat # Windows 双击即可:启动并自动打开浏览器 ``` - **dshcoder 地址**:`http://127.0.0.1:3081`(常驻 harness 端口 4310);原生 DSH 保持 `http://127.0.0.1:3080`,二者可同时运行 - **已经启动不再重复**:再次双击会自动识别已运行状态直接打开浏览器 - 单实例模式(`instances.json`):`port` = IDE 页面,`harnessPort` = 常驻 harness,`workspace` = 工作区目录;未设置 DSH_HOME 时自动使用 `~/.dsh` --- ## 🎮 使用说明 ### 三栏布局 | 区域 | 功能 | |------|------| | 左侧 | 工作区文件树 / 会话历史(活动栏切换) | | 中间 | 多标签编辑器 + 底部终端 | | 右侧 | AI 助手面板:能力切换 → 输入问题 → 回车 | ### 快捷键 | 快捷键 | 功能 | |--------|------| | `Ctrl+S` / `Ctrl+Shift+S` | 保存 / 全部保存 | | `Ctrl+I` | 内联编辑(就地修改选中代码) | | `Ctrl+`` ` | 切换终端 | | `Ctrl+Shift+E` | 聚焦文件树 | | `Tab` | 接受行内 AI 补全(幽灵文本) | | `Enter` / `Ctrl+Enter` | AI 输入框发送 / 换行 | ### AI 使用姿势(CodeBuddy 同款习惯) 1. **选中代码 → 浮动工具栏**:添加到对话 / 解释 / 修改 / 注释 / 测试 / 修复 / 评审 / 翻译,点「添加到对话」后输入问题回车 2. **右键菜单**:编辑器右键 → CodeBuddy 菜单(解释/内联编辑/注释/测试/修复/评审/翻译/重构/添加到对话) 3. **对话 / Agent 模式**:输入框左侧切换;对话模式只答不改文件,Agent 模式自主改文件跑命令 4. **附件芯片**:AI 输入框上方可挂载/移除「选中代码 / 打开文件 / 终端输出」上下文 5. **快捷指令**:输入框以 `/` 开头,支持 `/解释 /生成 /评审 /测试 /修复 /翻译 /注释 /重构 /提交 /问答 /运行` 6. **终端 AI**:终端面板 ➕添加到对话 / 💡解释 / ⚡修复 三个入口 7. **提交信息**:快捷指令 `/提交` 或对话中让 agent 读取 `git diff` 生成规范提交信息 --- ## ⚠️ 已知限制 - **取消是"分离式"**:停止按钮会立刻释放 harness 并发槽位并断开 UI,但已开始的 agent 任务会在后台安静跑完(DSH 未提供中断 API),其文件改动可能落地 - **命令沙箱**:agent 执行命令受 DSH 沙箱策略约束(默认 `workspace-write`);危险操作可能被拒绝,建议在应用终端里手动执行 - **终端非 PTY**:终端是命令执行器(非交互式 shell),`npm run dev` 这类长驻进程请使用命令 + 观察输出的方式运行;交互式输入(如 REPL)暂不支持 - **常驻资源**:每个实例常驻一个 harness 进程(约几十 MB 内存),实例数越多占用越多;harness 意外退出会自动重启(指数退避) --- ## 🧑‍💻 参与贡献 1. Fork 本仓库 2. 新建特性分支 `git checkout -b feat/xxx` 3. 提交代码(推荐使用 dshcoder 的「提交信息」能力生成规范提交) 4. 发起 Pull Request --- ## 📄 开源协议 [MIT License](LICENSE) © pengkun813