DSH Web 跨平台桌面启动器全教程:macOS 原生 .app + Windows 一键窗口

之前写过一版 DSH 的 macOS 启动器:一个 shell 脚本包装成的 .app,双击后自动拉起 dsh web 服务再开浏览器。能用,但打开的还是浏览器标签页,混在一堆网页里不够"应用"。 这次升级成原生应用方案,并且把整套方法整理成跨平台教程: macOS:Swift + WKWebView 编译成原生 .app,独立窗口、Dock 图标、断线自动重连 Windows:Edge/Chrome --app 模式快捷方式(零依赖),或 WebView2 原生窗口(进阶) 图标:不再手绘,直接从 DSH 源码里提取官方鲸鱼 SVG 渲染,配深蓝渐变圆角背景 最终效果(图标): 本文自包含:所有源码完整附上,照抄即可复现;也可以直接把本文链接发给任何 AI agent,让它照着做。 一、原理 DSH 的 Web 界面跑在 http://127.0.0.1:3080。所谓"桌面应用",本质就是一个固定加载这个地址的独立窗口: ...

2026-09-01 · 13 min · 2652 words · idiotfan

给 DSH 手搓一个 macOS 一键启动器:.app 结构、图标与认证的两次翻车记

日常用 DeepSeek Harness(DSH)的 Web 界面和 AI 结对干活,每次都要先开终端敲 dsh web、再开浏览器输地址,步骤琐碎。于是让 AI 直接给我做了一个 macOS 应用:双击图标就打开 DSH 页面;如果 dsh web 没在跑,它会自动在后台把服务拉起来,就绪后再弹开浏览器。 整个过程一次会话搞定,中间翻了两次挺有意思的车——一次在图标,一次在认证——记录如下。 一、应用本体:手写 .app 结构 macOS 的应用本质上就是一个遵守约定目录结构的文件夹,~/Applications/DSH.app: DSH.app/ └── Contents/ ├── Info.plist # 应用元信息(指定可执行文件、图标、Bundle ID) ├── MacOS/ │ └── dsh-launcher # 启动脚本(chmod +x) └── Resources/ └── icon.icns # 图标 不需要 Xcode,不需要 Automator,三个文件就是全部。 ...

2026-08-27 · 2 min · 421 words · idiotfan

当一家精酿餐吧要对账:大梦滨江店总账梳理与多 Agent 审计实战

开一家精酿美式餐吧到底要花多少钱?经营大半年后到底是赚是亏?钱都流向了哪里? 这些问题听起来是基础会计常识,但当真正面对实体餐饮的一地鸡毛时–一整本扫描版银行流水、微信支付宝混合刷卡、物业方系统各期抵扣、股东实物入股、负责人个人信用卡垫付–账目会迅速变成一团乱麻。 最近我用 Claude 桌面端(主力模型 Claude Fable 5),对大梦滨江店(DAMON BREWING / 可能实验室)从 2025 年建店到 2026 年 6 月全周期的账务做了一次彻底的总账梳理。最终输出了 12 页签的标准化 Excel 底账、一份 10 页的完整对账报告,以及一份面向全体股东的 3 页精简经营汇报。 这篇文章记录这次梳理的核心方法论、踩坑教训,以及如何利用多 Agent 对抗式审计把 20 多个核心财务指标做到分文不差。 ⚠️ 脱敏声明:出于商业保密,本文不展示任何真实金额、比例与流水笔数,一律以定性描述代替,表格只保留指标间的推导结构。方法与流程是完整的,数字请自行代入自己的业务。 一、 为什么账会算不清:实体餐饮的 5 大「账面陷阱」 在动手拉表格之前,必须先理清业务现实。实体店的流水如果直接生搬硬套做汇总,一定会得出荒谬的结论: 混淆主体账户:滨江店以经营主账户为唯一现金账,但早期存在与西湖老店的店间结算和借调。如果直接抓商户名,西湖店的款项会混入。 第三方支付的「全量汇总陷阱」:微信和支付宝账单里包含了大量个人日常消费。如果全量汇总,两条渠道会各自凭空多出一大笔与门店无关的「假收入」!正确做法是只能通过付款通道子串匹配,精确提取实际扣自经营主账户的对手方明细。 团购的「双重计算」:美团到综团购的核销款,一方面已经反映在 POS 系统的「顾客实付」订单里,另一方面结算后又作为净款打入了银行卡。如果把团购单独列为一项收入加进来,营业额会被凭空重复计算一大块。 房东账单的「名目倒腾」:商业物业方在系统里将早期缴纳的意向金与首批款项打散冲抵到租赁保证金、物业保证金、能源保证金、首期租金、装修保证金与装修管理费中。按银行流水摘要搜「租金」只能看到零散转账,必须顺着物业系统的逐笔扣费凭证回溯。 信用卡垫付与公私倒挂:负责人个人信用卡替门店垫付了数万元房租与水电,但该卡同时存在个人日常消费,且经营主账户从未向该卡还款。如果把信用卡账单全量导入,会彻底污染负债端。 二、 6 条铁律:不可违背的底账原则 为了防止在多轮推演中产生数字漂移,我们在系统提示词与 Skill 中固化了 6 条铁律: ...

2026-08-22 · 2 min · 334 words · idiotfan

我是怎么把两台红米 Note 13 5G 变成 7×24 家庭服务器的

手上有两台红米 Note 13 5G(型号 2312DRAABC,内部代号 gold,天玑 6080,8+256,HyperOS / Android 15)。这 SoC 没有 Linux 主线内核支持,刷不了原生 Linux 发行版,但 8G 内存 + UFS 256G + 能一直插着电——拿来当 7×24 家庭服务器正好:音乐库离线听、远程可运维、双机互备。 整个折腾历时一周,从解锁 bootloader 到音乐自动同步上线,中间还出了双机重启卡死的事故。这篇把过程和结果完整记一下。 第一步:解锁 bootloader(最危险的一步) 小米官方解锁等待期长、限制多,走的是 Jz8Root 的 MTK RPMB 硬件解锁路线——通过 BROM 用 preloader 直接写 seccfg。但第一原则是先备份一切:动任何东西之前,先把所有 NV 分区(nvram / nvdata / nvcfg / persist / protect1 / protect2 / seccfg / lk / RPMB)用 mtkclient 完整导出来。 ...

2026-08-22 · 4 min · 762 words · idiotfan

用 Codex 把《飘渺之旅》的世界观装进浏览器

《飘渺之旅》算得上修真小说的开山之作,我一直挺喜欢。最近突发奇想:能不能让 AI 先把整本小说读完,再用 Three.js 把书里的世界观宇宙"架构"出来——不是画几张概念图,而是做成一个能在浏览器里拖拽、缩放、点击的 3D 宇宙。 于是有了这个项目:一个零依赖、纯静态、完全离线的单页应用,双击 index.html 就能打开。 第一步:先让 AI 把小说读完 原始文本是 5.8MB 的 txt,46,806 行,GB18030 编码,而且尾部拖了两段垃圾——一段第 14 集的残章,加一段第 15~24 集的逐字重复拷贝(约 12,000 行)。 第一件事就是把语料洗干净: 删掉全部垃圾,46,806 行 → 34,311 行,精确统计出 28 集 × 292 章 编码从 GB18030 转成 UTF-8,macOS 直接能打开 修了第 2 集标题里的 ?? 乱码(“星星宫??寒冰原” → “星星宫·寒冰原”) 修了 2 处 GB18030 私有区字符(“水流突然化作…"、“突然出现一个巨大的黑洞”) 干净的语料是一切的基础。后面 AI 写的所有世界观数据,都要能回到这份原文里查到出处。 ...

2026-08-15 · 1 min · 202 words · idiotfan