chore: 初始化 dsh-enhancements 留档仓库
- 插件源码:dsh-usage(用户头像 + DeepSeek 官方 API 消耗面板) - 工具:dl-gh.mjs(node fetch 下载 gh,绕开沙箱 curl 限制) - 文档:PLAN.md 路线图 + mmx 视觉桥接补丁说明 - 资产:DeepSeek 鲸鱼图标
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# 总体规划:把 DeepSeek Harness 升级为 Codex 级智能助手
|
||||
|
||||
> 状态:进行中。本文件是路线图,随开发更新。
|
||||
|
||||
## 目标
|
||||
|
||||
用户头像/API 消耗、GitHub/Gitea 集成、定时任务、电脑操作模式(截图+视觉+鼠标键盘)、
|
||||
内置浏览器操控、吉祥物悬浮助手,全部成果留档并发布到 GitHub/Gitea 仓库。
|
||||
|
||||
## 现状盘点(已验证)
|
||||
|
||||
- 桌面应用化:快捷方式 → 托盘(dsh-app.ps1)→ Edge 独立窗口 ✅
|
||||
- 聊天发图 + 视觉理解:mmx 桥接(MiniMax M3 via NVIDIA)✅
|
||||
- 动态 Cordis 插件(Host/Client 双向)✅
|
||||
- git 2.55 + GitHub(jiangchen1245)+ 自建 Gitea(gitea.truestudio.online)✅
|
||||
- DeepSeek 官方余额 API 可用(GET https://api.deepseek.com/user/balance)✅
|
||||
|
||||
## 阶段
|
||||
|
||||
### 1️⃣ GitHub / Gitea 集成(进行中)
|
||||
- [x] 验证 Gitea 凭据(git 协议 + API basic auth)
|
||||
- [ ] 装 gh CLI(沙箱内 github CDN 不通,需换网络或用户手动装)
|
||||
- [ ] dsh-git 插件:repo_status / gh_issue / gh_pr / gh_commit / gh_push
|
||||
- [ ] GUI"Git 中心"面板
|
||||
|
||||
### 2️⃣ 定时任务插件
|
||||
- [ ] dsh-scheduler:cron 表达式 + 动作(命令/工具调用)
|
||||
- [ ] 持久化(重启不丢)+ GUI 管理面板
|
||||
|
||||
### 3️⃣ 电脑操作模式(核心)
|
||||
- [ ] screen_capture(截图)
|
||||
- [ ] screen_vision(mmx M3 视觉识别元素/坐标)
|
||||
- [ ] screen_click / screen_type / screen_key(user32)
|
||||
- [ ] screen_list_windows / screen_ui_tree(UI Automation)
|
||||
- 闭环:截图 → 看懂 → 操作 → 再看
|
||||
|
||||
### 4️⃣ 内置浏览器操控
|
||||
- [ ] Edge CDP 驱动(导航/点击/填表/截页)
|
||||
- [ ] GUI 内嵌浏览器面板(webServer 反代 iframe)
|
||||
|
||||
### 5️⃣ 吉祥物悬浮助手
|
||||
- [ ] shell.overlay 右下角 🐋 浮窗 + 迷你对话 + 快捷按钮
|
||||
|
||||
### 6️⃣ 体验打磨
|
||||
- [ ] Agent Presets(computer-use / dev)
|
||||
- [ ] 快捷键、布局优化、开机自启
|
||||
|
||||
### 7️⃣ 留档与发布
|
||||
- [x] 本地仓库 D:\project\dsh-enhancements(git init + 结构)
|
||||
- [ ] 推送到 Gitea jiangchen/dsh-enhancements
|
||||
- [ ] 推送到 GitHub jiangchen1245/dsh-enhancements
|
||||
- [ ] 脱敏检查(无 Key/Token/密码)
|
||||
|
||||
## 技术要点
|
||||
|
||||
- 沙箱:curl/winget 的 HTTPS 被禁,node fetch 可用 → 网络操作统一走 node
|
||||
- 客户端无 window/document/fetch → 打开外链由 Host 侧 shell 完成
|
||||
- 动态插件不持久 → 每个插件同时落盘为 presets/ 文件与源码归档
|
||||
- 升级覆盖 → mmx 桥接补丁保留重放脚本(PATCH.md)
|
||||
- 凭据 → 一律系统凭据管理器,不入库、不进 .git/config
|
||||
|
||||
## 安全红线
|
||||
|
||||
- 仓库绝不包含 API Key / Token / 密码
|
||||
- Gitea remote 不用内嵌密码 URL;用凭据管理器
|
||||
- .credentials.yaml 只留在部署机
|
||||
@@ -0,0 +1,53 @@
|
||||
# MMX 图片桥接补丁(聊天窗口发图 → mmx-vision 技能识别)
|
||||
|
||||
日期:2026-08-12
|
||||
目的:让 DeepSeek Harness 的聊天窗口可以直接发送/粘贴图片。图片被持久化为附件,
|
||||
发给模型时由适配器转成"附件路径文本提示",agent 收到后用 mmx-vision 技能(本地
|
||||
Node 脚本调用 NVIDIA 托管的 MiniMax M3)识别或按用户意图取用。
|
||||
|
||||
## 相关自定义(本机桌面应用壳)
|
||||
|
||||
- `C:\Users\a1703\.dsh\bin\dsh-app.ps1`:托盘应用(无窗口后台运行 dsh web + 系统托盘,
|
||||
右键"打开主界面 / 退出",打开用 Edge `--app` 独立窗口)。快捷方式
|
||||
`桌面\DeepSeek Harness.lnk` 指向它(powershell -WindowStyle Hidden -File)。
|
||||
- `C:\Users\a1703\.dsh\assets\dsh.ico`:多尺寸(16-256)DeepSeek 鲸鱼图标,
|
||||
由 `favicon.svg` 经 Edge 无头渲染 + System.Drawing 缩放生成,供托盘/快捷方式使用。
|
||||
- 旧版 `C:\Users\a1703\.dsh\bin\dsh-web.cmd`:手动模式(显示控制台窗口),备用。
|
||||
|
||||
## 修改的文件(全部位于 npx 缓存安装,重启 Harness 生效)
|
||||
|
||||
### 0. @deepseek-ai/dsh-web-frontend/dist(应用窗口图标)
|
||||
- 新增 `favicon-256.png`、`favicon.ico`(多尺寸鲸鱼图标)。
|
||||
- `index.html`:favicon 链接增加 `favicon-256.png`(放在 svg 前)。
|
||||
- `manifest.webmanifest`:icons 增加 png/ico 条目。
|
||||
- 作用:Edge `--app` 独立窗口与浏览器标签显示 DeepSeek 鲸鱼图标而不是 Edge 图标。
|
||||
静态文件实时生效(服务直接读磁盘),无需重启。
|
||||
|
||||
### 1. @deepseek-ai/dsh-llm-deepseek/lib/index.js(deepseek 适配器)
|
||||
- 原行为:内容含 image 块时抛 `UNSUPPORTED_CONTENT`(拒绝整轮对话)。
|
||||
- 新行为:`assertTextOnly` 改为 `imageBlocksText`,把每个 image 块序列化成一行
|
||||
`[用户发送的图片附件 id=sha256:xxx 类型=image/png 文件=<DSH_HOME>/attachments/v1/objects/xx/xxx]`
|
||||
文本;`serializeMessages` 的用户消息文本 = 原文本 + 图片提示。
|
||||
- 附件路径规则与 `@deepseek-ai/dsh-attachment-local` 的存储约定一致
|
||||
(对象路径 `objects/<sha前2位>/<sha256>`,attachmentId 前缀 `sha256:`)。
|
||||
|
||||
### 2. @deepseek-ai/dsh-host-apiproxy/lib/index.js(host API 代理)
|
||||
- `prompt` RPC:删除"模型 inputModalities 不含 image 就拒绝(MODEL_DOES_NOT_SUPPORT_IMAGES)"检查,
|
||||
图片一律放行(由适配器文本化)。
|
||||
- `selectModel` RPC:删除"会话已含图片时禁止切换到不支持图片的模型"检查。
|
||||
|
||||
## 生效条件
|
||||
- 重启 Harness 进程后生效(node_modules 中的运行时文件改动不会热加载)。
|
||||
- 备份:同目录 `index.js.mmx-bak`(每个改过的包旁边)。
|
||||
|
||||
## 升级后重放
|
||||
重新安装/升级 @deepseek-ai/dsh 后,以上两处改动会被覆盖。重放步骤:
|
||||
1. 用 `node --check` 验证改动文件语法。
|
||||
2. 对每个包:把 `assertTextOnly` 的抛错逻辑替换为 `imageBlocksText`(见下),
|
||||
并删除 api-proxy 两处图片能力检查。
|
||||
3. 或直接 diff 当前 `.mmx-bak` 与新文件,把差异搬过去。
|
||||
|
||||
## 不影响
|
||||
- 客户端 UI 无需改动(图片 rail/拖放/粘贴本来就完整)。
|
||||
- pi-ai 模型路由(真多模态)不受影响。
|
||||
- 会话历史中的图片块在每次模型调用时都会文本化,客户端仍按附件渲染缩略图。
|
||||
Reference in New Issue
Block a user