古法编程 · AI 辅助(dsh-gufa-code)
古法编程 = 用老办法亲手写代码,AI 就是停在你右边的那位。
在 DeepSeek Harness 里一键进入 VS Code 风格的 IDE 模式:左边写代码,右边就是当前 DSH 会话本人 —— 它会改文件、跑终端、提审批,你全看得见。
古法编程 IDE 模式:左侧资源管理器与 Monaco 编辑器,右侧官方 DSH 会话
这是什么
一个 DSH 插件。点工作区行「…」菜单里的 古法编程 后,主面板切换成一个三栏 IDE:
- 左:活动栏 + 资源管理器 / 源代码管理 / SSH / 终端;
- 中:Monaco 编辑器(标签页、面包屑、状态栏、两文件对比、Git diff);
- 右:官方 DSH 会话面板原样停靠 —— 工具调用、自动读写文件、审批弹窗、斜杠命令、上下文引用、会话历史都还在。
从哪个工作区点进来,IDE 就打开哪个工作区,右侧也自动是你在这个工作区正在聊的那个会话。
安装
dsh plugin add dsh-gufa-code
或在 DSH 桌面端 / dsh web 的 插件 → 插件市场 里搜索「古法编程 / dsh-gufa-code」安装。
要求:DeepSeek Harness 0.2.1 及以上;支持桌面端与浏览器里的 dsh web。
功能
入口与工作区
- 工作区行的 「…」菜单 里有「古法编程」(第二项),点它进入 IDE;
- 从哪个工作区点进来,就打开哪个工作区的古法编程;
- IDE 左上角可切换工作区 / 新建工作区;退出只有一个入口:标题栏右上角 「返回经典模式」。
编辑器
- Monaco 编辑器(离线随包分发,无需联网下载);
- 多标签、按扩展名语法高亮、面包屑、状态栏(分支 / 行列 / 保存状态);
- 保存走磁盘版本冲突检测 + 原子写;未保存标记;
- 资源管理器右键:新建 / 重命名 / 删除 / 复制 / 粘贴 / 打开所在文件夹 / 两文件对比;
- 从 Finder 粘贴/拖入文件:系统剪贴板里复制的文件可直接 ⌘V 粘进资源管理器(写入选中的目录,重名自动加「副本」),也可从 Finder 直接拖进文件树;
- 粘贴文件到聊天框 = @引用:在 Finder 复制文件后在右侧对话输入框 ⌘V,会自动匹配项目内同名同内容文件并插入
@相对路径 引用(图片仍按 DSH 默认附件处理);
- 支持 Ctrl/Cmd 多选、软删除与
⌘Z 撤销;
- Git diff:Monaco diff 视图,红绿强对比、自动定位第一处改动,工作区一侧可编辑并自动保存;
- 两文件对比:任选两个文件,左右都可编辑(本地草稿,保存时写回)。
快捷键(仅 IDE 模式生效,参考 VS Code)
⌘S 保存、⌘K 清空终端、⌘J / ⌃` 终端、⌘B 左栏、⌘W 关标签、⌘⇧E / ⌘⇧G 资源管理器 / 源代码管理、⌘⇧U SSH、⌃⇧\`` 新建终端、⌘/` 行注释(非编辑器区为快捷键列表)。
经典模式的快捷键完全不受影响。
左侧面板
- 资源管理器:懒加载文件树、Git 状态颜色、错误/问题点、目录改动标记;
- 源代码管理:分支、ahead/behind(点击可推送/拉取)、更改列表、暂存/取消暂存、提交(
⌘⇧↵,自动暂存未暂存改动)、Git Graph(泳道图 + 提交文件 + 查看某次提交的文件)、撤销上次提交、丢弃全部、逐文件还原;
- SSH:解析
~/.ssh/config,点一下就在终端里 ssh <alias>;
- 终端:真实 PTY + xterm,多标签、新建/关闭、自动 resize、明暗主题,SSH 与任意命令都行。
右侧 AI
- 右侧停靠的就是 官方 DSH 会话本体:工具调用、自动读写文件、审批、斜杠命令、上下文引用、会话历史全部可用;
- 工具条:新建会话 / 会话列表 / 打开完整对话 / 收起;
- 会话弹窗里可以直接切换工作区:点弹窗右上角的工作区名,选任意工作区后下方会话列表随之切换,点会话即打开(IDE 项目同时切到该工作区),不用再先切左侧工作区;
- 会话里的文件链接、diff 标签页属于 DSH 右侧栏,被覆盖层挡住时点「打开完整对话」即可查看。
摸鱼模式 / 桌面悬浮层(实验功能,macOS arm64)
- 进入摸鱼:IDE 标题栏点「显示器」图标 → 弹出 运行中 App 列表(图标 + App 名,和投屏列表类似)→ 选中一个 App,古法编程会:
- 把该 App 切到前台(主窗口自动被盖住,等于「隐藏主窗口」);
- 以无边框、半透明(0.55)、永远置顶的独立悬浮窗出现,并自动吸附到该 App 当前窗口:位置、大小一致,窗口移动/缩放时实时跟随。
- 读取窗口位置/大小走 macOS **「辅助功能」**权限(不是屏幕录制):系统设置 → 隐私与安全性 → 辅助功能 → 勾选 DeepSeek Harness;改完重启一次 DSH 生效。
- 状态延续:进入摸鱼时会把主窗口的项目、已打开标签页、界面布局、当前会话一并带进悬浮层,悬浮窗里接着干活而不是从空白开始。
- 悬浮层交互:
- 顶部 22px 拖动条移动窗口(右键 = 摸鱼菜单),窗口大小/位置会记住;
- 全局快捷键 ⌃⌥⌘G:切换点击穿透(穿透后鼠标直接操作下面的 App,再按一次切回来);
- 菜单栏「古法」图标 / 拖动条右键:退出摸鱼(关闭悬浮层并把主窗口唤回前台);
- 在悬浮层里再点「显示器」图标 = 退出摸鱼。
- 选择器底部还有「自由悬浮(不吸附)」:不绑定窗口,自己拖拽缩放。
- 限制:目前仅 macOS arm64;多显示器按主屏坐标换算;helper 未正式签名(本地 ad-hoc 签名),分发前需要签名/notarize。
外观
- 颜色全部走 DSH 主题 token,亮/暗主题自动跟随;界面宽度、开关状态持久化到 localStorage;
- 与皮肤插件兼容:如果装有「滑动变祖」这类皮肤,IDE 面板会半透明透出皮肤人像/粒子,编辑器区域也保持轻微透明。
开发
# 构建 client.js(浏览器端零件按文件名顺序拼接)
node scripts/build-client.mjs
# 自测
node scripts/selftest-client.mjs
node scripts/selftest-host.mjs
node scripts/test-editor.mjs
# 修改 host/*.js 后无需重启(请求级热重载);修改 client 后重新构建并刷新页面
加新功能/新浮层前先看 docs/KNOWN-PITFALLS.md(层级、TCC 权限、Monaco worker 三个坑)。
License
MIT
English
Gufa Code — a Cursor-style IDE mode for DeepSeek Harness. One click on a workspace's ⋮ menu turns the main panel into a VS Code-like workbench: Monaco editor, file tree, Git panel (with graphite graph, push/pull, per-file revert), SSH hosts and a real PTY terminal on the left; the official DSH conversation docked on the right, so agent tool calls, file edits, approvals and session history keep working while you edit. VS Code-style shortcuts, workspace-aware entry (the IDE opens the workspace you clicked from), theme-token based theming including translucent panels over skins, two-file compare and Monaco git diffs.
作者的话:给程序员的几点忠告
这一节不代表任何组织,只代表我个人。你可以不同意,但请对自己的代码负责。
- 一定要坚持「古法编程」。 AI 该是工程师的助理,不是替身。代码可以让它起草、你来回改,但阅读、判断、调试、为结果兜底的能力必须留在自己身上——工具让人变快,不该让人变空。
- 每一个改动都要心中有数。 看不懂的 diff 不要合,讲不清的调用链不要信,跑不通的「魔法」不要上线。心中没数就问到有数为止;这一步省掉的,都会在故障复盘时加倍还回来。
- 你是软件的第一责任人。 署名是你,背锅也是你。过度崇信 AI 带来的线上事故、数据错误、安全漏洞,不会因为「是模型写的」就转移到别人头上——受损的是你自己的信心、公信力、权威和荣誉,严重的还会留下职业污点。真出了问题,亏的一定是你,而且亏得很大。
- AI 该是降低工作压力、提升水平的工具,不是让资本家无限压榨的工具。 遇到那种「什么都想要」的老板或公司,尽量远离:既要速度又要质量、既要降本又要创新,最后压力全落在你身上,出事时只换来一句「你很差、你的责任、你能力不行」。软件行业的本质从来没变,AI 只是把「既要又要」无限放大了——这本该是让软件更优秀、更精良的巨大技术飞跃,却硬生生被做成了十倍百倍的屎山,最后还要赖到程序员头上。
- 不要变蠢。 把记忆外包给搜索、把思考外包给模型,短期很爽,长期是把吃饭的本事一点点交出去。刻意保留手写、读源码、自己定位问题的习惯——那才是 AI 加速器的底座。
- 不要沉迷「AI 工作流组合」。 把一堆 Agent、插件、提示词串成流程去解决场景,本质是「没苦硬吃」:这些流程能实现的事,大模型每进化一个版本就吃掉一批,说不定过不了多久一句话就全搞定了。想想 ChatGPT 最早那版和现在差多远——你我都是亲眼看着它一步步长起来的;参考扣子(Coze)这类工作流平台的结局就知道了。你辛辛苦苦东拼西凑的东西,可能抵不过一次模型升级;真正值得投入的,是理解问题、定义边界、验证结果——这些才是模型升级也拿不走的东西。
- 工具越强,判断力越贵。 AI 把「写」的成本压到极低,抬高的恰恰是「选什么写、写得对不对、值不值得写」的价钱。能自己验证、能自己回退、能自己解释——这三件事决定你是使用者,还是被使用者。
- 好的 AI 工具要看得见、可回退、可审计。 这也是古法编程的设计底线:每个动作落在你眼前,每处改动可 diff、可撤销,右侧就是官方 DSH 会话本体——AI 在明处干活,你在明处验收。
- DeepSeek 是历史上、也是将来最好的 AI。