把 DSH 的 agent loop 换成 Kimi Code(ACP 直连):审批、斜杠命令、本地与远程(ssh+tmux)会话接入。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:pzc2004/dsh-frostfin
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
dsh-frostfin(月芒霜鳍鲸):Kimi Code as DSH Agent Loop
English | 中文
「受月矩力影响而发生变化的奇妙水生动物。」—— 提瓦特生物志
Kimi Code 的大脑,DeepSeek Harness 的躯体。
frostfin 是一个 DSH loop 插件:把 DSH 会话的驱动者整个换成 Kimi Code 本人——通过 ACP(Agent Client Protocol)直连,中间没有第二个 agent 转述。于是你同时拿到两样原本互斥的东西:
- Kimi 侧:Kimi Code 原装的 agent loop——为 kimi-for-coding 系列模型调优过的规划、工具编排与 thinking 模式,一个组件都不替换,版本照升;
- DSH 侧:DSH 的全部生态——Web UI、主题皮肤、会话管理、轨迹查看、社区插件,以及"一切皆插件、插件皆可逆"的 Cordis 底座。
两边的长处,一头的项目。
名字的由来
第一层:鲸与月。 DeepSeek 的图腾是鲸;月之暗面(Moonshot AI)的名字来自 Pink Floyd 的专辑《The Dark Side of the Moon》。这个插件做的事情,字面意思就是:让 DeepSeek 的鲸,被月亮的力量改造。
第二层:霜鳍鲸是真实存在的。 霜鳍鲸本种是《原神》挪德卡莱海域的一头鲸,6.0 版本「月之一」进入图鉴[^1][^2],还在当月的主线过场里跃出过水面[^6];2026 年 7 月的 6.7 版本「月之八」新增了它的月芒个体——月芒霜鳍鲸(Moonglow Frostfin Whale)[^3],游戏内生物志标注其出现地点为月球地图「霜月」,图鉴写道:「受月矩力影响而发生变化的奇妙水生动物。」[^4]一头普通的水生动物,被月亮的力量改变——我们翻遍词典,找不到比这更精确的隐喻:鲸还是那头鲸,海还是那片海——但潮汐从此归月亮管。
第三层:彩蛋是闭环的。 月芒霜鳍鲸栖息的「霜月」地图,它的背面正是「月之暗面」区域——两者同属 6.7「月之八」,是同一个版本抵达的[^3][^5]。点亮「月之暗面」的地图时,跳出的成就叫「为你喜爱的色彩」(Any Colour You Like)[^5]——致敬的正是《The Dark Side of the Moon》专辑里的那首曲子。米哈游埋的梗,和月之暗面公司名字的出处,是同一张 1973 年的唱片。三条致敬链,在半个世纪前闭环。
图鉴里还有一句挪德卡莱的民话:「凡是见到粉色霜鳍鲸的人,想要实现的愿望就能成真。」[^4]愿每个装上这个插件的人,愿望成真。
关于名字的精确性:「受月矩力影响而变化」描述的是月芒个体而非本种——所以品牌全称定为月芒霜鳍鲸,也就是图鉴那句话真正的主人;包名 dsh-frostfin 沿用本种的家族名,短、可检索、生态位靠前。
dsh-moontide(月潮)——月引潮汐、潮载鲸;后来才知道,6.7 的月球地图上真有一片海叫月荡海(Moontide Sea)[^5]dsh-moonwhale(月鲸)——两个吉祥物直接合体,最直白dsh-moonsea(月海)——月球暗面的真实天文学术语,最大气
[^1]: 生物志:霜鳍鲸 · B站原神 Wiki(出现地点:挪德卡莱;实装版本:月之一) [^2]: 「月之一」版本更新专题(官方公告全文)· B站原神 Wiki(第 9 条:新增野生生物含「霜鳍鲸」) [^3]: 「月之八」版本更新专题(官方公告全文)· B站原神 Wiki(第 8 条:新增野生生物「月芒霜鳍鲸」) [^4]: 生物志:月芒霜鳍鲸 · B站原神 Wiki(出现地点:霜月;实装版本:月之八;粉色霜鳍鲸民话出处) [^5]: 成就集「无束的残月」 · B站原神 Wiki(成就「为你喜爱的色彩」:点亮月之暗面的地图;同集多处成就文本出现「月荡海」) [^6]: 主线任务「月亮升起的地方」 · B站原神 Wiki(过场文本:"霜鳍鲸从水面下跃出")
工作原理
你 ──► DSH Web UI(主题 / 生态 / 会话管理 / 审批)
│ session events
frostfin(DSH 插件,占 agent loop 插槽)
│ ACP(JSON-RPC over stdio)
kimi acp 子进程 ── 全部思考、工具调用、回话
DSH 的架构里 agent loop 本身就是一个可替换插件(ctx.agents.setFactory)。frostfin 注册自己的工厂,把每个 DSH 会话桥接到一个 kimi acp 子进程,并把 ACP 的事件流实时翻译成 DSH 的会话事件——所以打字机效果的流式回话、历史回放、审批弹窗,全部是 DSH 原生体验。
和已有方案的区别:kimi-tide 等项目把 Kimi 接在模型层或工具层——DSH 的主 loop 不变,Kimi 是被调用的客体;frostfin 把 loop 本身换成 Kimi Code——你在 DSH 里对话的对象就是 kimi 本人。
功能
以下每一项都经过自动化测试(单测 + 端到端,不经真 kimi)与浏览器实测:
- loop 桥:DSH 会话由 kimi acp 子进程驱动——流式回话、思考块、工具调用、计划块全部是 DSH 原生渲染,turn/step 事件纪律与原生 loop 逐事件对齐
- 审批桥:kimi 的工具审批请求落到 DSH 原生审批弹窗(生态首个)——弹窗的命令预览与工具卡片 callId 对齐,点"允许"就是放行那一次调用
- 提问通道:kimi 的 AskUserQuestion 在 DSH 里弹出插件自建的多选模态框——ACP 没有提问 RPC,kimi 复用审批通道传问题,而 DSH 审批弹窗带不回"选了第几项",故问题单开一路,与权限策略无关;跳过/取消按 kimi 语义的"用户未作答"处理,绝不伪造选择
- 图片输入:输入区粘贴图片直达 kimi(DSH 附件存储读字节 → base64 → ACP image 块,kimi 侧自动做格式门控与压缩);读不到字节时放文本占位,绝不静默丢图
- 会话生命周期:DSH 重启恢复、kimi 进程崩溃自愈(下一个 prompt 自动重连)、接入任意既有 kimi 会话(
/frostfin-attach或「月芒霜鳍鲸」tab 一键接入,历史回放进 DSH 日志);权限模式与 thinking 档位按 kimi 会话记忆,进程重启后自动重放 - 模式分发:新增「月芒霜鳍鲸」模式并设为默认——它走 kimi,标准模式走原生 loop,互不干扰;会话创建后驱动方就锁定,不会静默换脑
- 模型层打通:选择器显示 kimi 的真实模型列表,选择即切换;DSH 里配置的模型(如 DeepSeek)自动同步进 kimi 配置,kimi 直接能跑
- 状态条与斜杠命令:输入框下方实时显示 kimi 的模型 / thinking 档位 / 权限模式 / 上下文占用 / 工作目录与 git 分支;
/frostfin-mode、/frostfin-thinking、/frostfin-plan、/yolo、/auto直接切换;kimi 内建的/compact/status/usage/mcp/tasks/help原样透传执行;命令菜单里插件命令带[frostfin]标签、kimi 命令带[kimi]标签,与 DSH 宿主命令一眼区分 - goal 与 plan:DSH 的
/goal可直接驱动 kimi 会话(宿主层轮次驱动器,卡片可暂停/编辑/删除);kimi 的 plan 模式经/frostfin-mode plan生效(引擎级只读,不是提示词约定) - 可逆性:卸载即撤销一切注册(含同步进 kimi
config.toml的托管块,你的 kimi 配置原样恢复);~/.frostfin/下的会话绑定与模型缓存刻意保留,重装可续——想彻底清除:rm -rf ~/.frostfin
权限模式看哪边
frostfin 会话里只需要管 kimi 的权限模式(/frostfin-mode <default|plan|auto|yolo>,快捷键 /yolo、/auto、/frostfin-plan)。DSH 侧的两个开关基本不用管,但各有一个例外:
- 输入区的「Workspace Write」沙箱选择器约束的是 DSH 原生工具的文件边界;kimi 的工具跑在 kimi 自己的进程里,DSH 沙箱管不到。怎么选:留在默认的 workspace-write 即可(read-only 同样无害,两者对 kimi 都是摆设);唯一要避开 danger-full-access——它会把会话的 approval policy 改成
never,往 kimi 的对话里注入一条英文策略通知,且在插件配置permission: 'ask'时让后续所有审批被自动拒绝(弹窗不再出现)。 - DSH 的 approval policy(ask / never)只在插件配置
permission: 'ask'时出现在应答链上。kimi 侧的精度:auto 模式全部自批(连 AskUserQuestion 都会被引擎拒绝);yolo 模式绝大部分自批,但访问敏感文件(.env、SSH 密钥、凭据)和 .git 控制目录时仍会发问——这两条 ask 策略排在 yolo 自批之前。
同理,DSH 的 /plan 只对原生 loop 会话有效(提示词约定);kimi 会话的 plan 模式请用 /frostfin-plan——引擎级只读:plan 模式下 kimi 的权限策略链直接拒绝 Write/Edit 等变更工具(计划文件除外),不依赖模型自觉。
怎么选:
- 日常开发:
/yolo——绝大多数工具自批,只有碰 .env、SSH 密钥、凭据、.git 控制目录时才打断你。摩擦最低且留着安全兜底;模式按会话持久化,设一次就一直有效(含 DSH 重启后)。 - 想逐步审阅:
default——每个变更工具都弹窗。注意 DSH 弹窗只有"允许/拒绝",给不了 kimi 的"本会话允许",所以同类工具会逐次问;嫌烦就回 yolo。 - 只要方案不动手:
/frostfin-plan——引擎级只读,计划写完交你审。 - 无人值守:
/auto——全部自批,连提问工具都会被拒(它不会来烦你),配合 DSH 的/goal跑长任务最合适;别把敏感目录暴露给它。
安装
1. 安装 Kimi Code 并登录
macOS / Linux(官方脚本,无需 Node.js):
curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash
Windows(PowerShell;首次启动前需安装 Git for Windows,kimi 以自带的 Git Bash 作为 shell 环境):
irm https://code.kimi.com/kimi-code/install.ps1 | iex
装完运行一次 kimi,在 TUI 里用 /login 登录(Kimi Code OAuth 或 Moonshot 开放平台 API key)。frostfin 通过 kimi acp 子进程驱动,登录态直接复用,无需额外配置。
2. 安装 DSH
需要 Node.js ≥ 22.19:
npx @deepseek-ai/dsh web # Web UI 默认在 http://127.0.0.1:3080
对锁版本 @deepseek-ai/dsh@0.1.0-rc.x(见「状态」一节)。
3. 安装本插件
# 克隆并构建
git clone https://github.com/pzc2004/dsh-frostfin.git
cd dsh-frostfin && pnpm install && pnpm build
# 装进 DSH 的 web profile
npx @deepseek-ai/dsh plugin --profile web add /path/to/dsh-frostfin
# 重启 dsh web 生效
npx @deepseek-ai/dsh web
装好后:新模式「月芒霜鳍鲸」自动成为默认模式;会话视图环多出「月芒霜鳍鲸」tab(kimi 会话列表,一键接入);无需任何模型配置——DSH 的模型门禁由名义路由喂饱。完整功能手册(面板/远程/命令/权限模式/FAQ)见 docs/guide.md。
headless 也想要:npx @deepseek-ai/dsh plugin --profile headless add /path/to/dsh-frostfin
卸载:npx @deepseek-ai/dsh plugin --profile web remove dsh-frostfin——卸载会自动撤销一切注册,并把同步进 kimi config.toml 的托管块摘除(你的 kimi 配置原样恢复)。~/.frostfin/ 下的会话绑定与模型缓存会保留以便重装续聊;想彻底清除再 rm -rf ~/.frostfin。
平台支持
在 macOS 上完整开发与验证。Linux 应无差别(POSIX 语义主场)。Windows 未验证:已知前置是 kimi Code 本身需要 Git Bash(KIMI_SHELL_PATH 可指定),其余风险点(进程终止语义、宿主模块解析)待实测——欢迎 Windows 用户反馈。
路线图
远程 kimi 会话接入(已落地):服务器上的 Kimi Code 会话已纳入本地 DSH 管理——读~/.ssh/config列出主机(VS Code 同款语义),一键连接即经 ssh+tmux 拉起远程kimi acp(断线或本地关闭都不杀远程进程,重连原会话直接续);远程会话按 主机 → 工作区 → 会话 三级展示、一键接入。前置:服务器装有 tmux 与 kimi 并完成/login(缺失时面板会给出明确指引)。- 后续候选:ControlMaster 连接复用、kimi ACP 与 DSH 的上游诉求(见 docs/upstream-kimi-acp.md 与 docs/upstream-dsh.md)。
状态
可用但早期。质量基线:82 个自动化测试(纯转译单测 + 驱动 script 化 ACP 子进程的端到端,不经真 kimi)+ 浏览器实测(流式回话、审批弹窗、提问模态框、图片理解、状态条、斜杠命令)。对锁 @deepseek-ai/dsh@0.1.0-rc.6 与 kimi Code 0.36.x——两边都在快速迭代,升级请当作主动动作。设计稿见 docs/design-v0.1.md(M1-M3 时代写成,M4+ 的实现笔记在代码注释里)。
License
代码以 MIT 发布。assets/ 与本文档中的《原神》相关素材(图鉴形象、地图与区域照片;logo 为基于游戏形象的二次创作)版权归米哈游 / HoYoverse 所有,仅作命名由来示意,不在 MIT 覆盖范围内。
链接
同类插件
strukto-ai/mirage#dsh★ 3502
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
hust-open-atom-club/oh-dsh★ 248
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
lire1131/dsh-undo-plugin★ 75
DSH 撤销/回退系统:配置变更自动存档,一键撤销/恢复/回退到任意版本,支持 WebUI 与离线 CLI/GUI 工具(DSH 启动失败也能救)。
Jayden-X-L/forkprobe★ 67
同一任务并行试跑多个技能,对比结果选出最优。
forrestchang/dsh-multica-runtime★ 46
让 dsh 运行时跑在 Multica 上。
omdsh-dev/dsh-plugin-check★ 24
插件健康检查:扫描清单协议/patch 格式/构建陷阱,零依赖只读。