dsh-at-file
FSMargoo/dsh-at-fileCodex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
English | 简体中文
DSH 牛马办公室是 DeepSeek Harness(dsh)的 Web UI 插件:把多智能体会话的实时活动渲染成一个像素风格的实景办公室。你的每一个 agent 会话都是一头戴工牌的牛马员工--搬砖的敲键盘、摸鱼的溜达打盹,而你,是坐在右下角老板办公室里、头戴皇冠的老板。
🌟 如果这个项目让你会心一笑或帮到了你,请点一个 Star 支持一下,谢谢!
| 角色 | 是谁 | 在哪 | 长什么样 |
|---|---|---|---|
| 老板 | 你(用户)本人 | 右下角独立老板办公室 | 深棕正装 + 金饰 + 眼镜 + 金色皇冠 |
| 总监 | 当前会话(你正在对话的那个 agent) | 办公区上方总监位 | 金色系毛色 + 橙色工头帽 |
| 打工牛马 | 其余所有会话(含子 agent) | 办公区 4×4 工位 | 牛/马两种物种,按会话 id 稳定随机决定毛色与配饰 |
办公室最多容纳 16 头牛马(含总监位),超出的搬砖会话显示为「排队中」,前面的员工完成后自动补位。
点员工:弹出信息卡--物种、状态、职位(总监牛马 / 打工牛马)、当前正在干什么。
点工作中员工的屏幕:打开「工位监控」窗口,实时滚动该 agent 的工作流:💭思考、💬输出、🔧工具、📥汇报四类条目,支持行内 markdown(加粗 / 行内代码)。
点老板:弹出迷你输入条「老板发号施令」,直接给当前会话(总监)下指令--与主对话输入框同一条通道。发送成功后输入条收起,总监立刻冒泡喊话;失败则以红字内联提示,草稿保留可重发。
任何会话有待审批的工具调用、待回答的问题或待评审的计划时:
老板(你)有自己的独立办公室:大班台、显示器、金滚边高背老板椅、书柜、绿植和地毯。老板以办公为主,间歇摸鱼:
前置:已安装 dsh CLI 并使用 web profile(dsh web)。
# 从 npm 安装(推荐)
dsh plugin --profile web add dsh-office-plugin
# 从本地路径
dsh plugin --profile web add ./office-plugin
# 从 GitHub Release 的预构建 tarball(无需 allowBuilds)
curl -LO https://github.com/geguanming/dsh-office-plugin/releases/latest/download/dsh-office-plugin.tgz
dsh plugin --profile web add ./dsh-office-plugin.tgz
# 从 git(需在 profile 的 pnpm-workspace.yaml 中 allowBuilds,见下方说明)
dsh plugin --profile web add github:geguanming/dsh-office-plugin
安装后重启 dsh web(插件图在启动时读取)。浏览器右上角出现「实景办公室」入口,点击展开右侧办公室面板,对话保持在中栏。
注意:只有
dsh plugin --profile web add能完整激活双半插件;--patch+ file:/// URL 只加载宿主半部,浏览器代码不会被发现。
git 方式安装拉取的是源码,由插件自带的
prepare脚本现场构建;pnpm ≥10 会拦截安装期构建脚本。首次安装会失败,这是预期的:dsh 会在报错里打印一个带 git 来源的完整键,把它加进 profile 目录(~/.dsh/profiles/web)的pnpm-workspace.yaml后重跑安装命令:allowBuilds: dsh-office-plugin@git+ssh://git@github.com/geguanming/dsh-office-plugin.git#<commit>: true
<commit>替换为报错信息里打印的提交哈希。注意裸包名(dsh-office-plugin: true)无效。不想折腾 allowBuilds 就用上面的 npm 或 tarball 方式--预构建产物,无需现场构建。
dsh plugin --profile web remove dsh-office-plugin
重启 dsh web。若办公室入口仍出现,再从 ~/.dsh/profiles/web/package.json 的 bundles 列表里删掉 "dsh-office-plugin" 一行并重启。
dsh web 启动并安装插件后,点浏览器右上角入口展开办公室;pnpm install
pnpm run build # tsdown 双配置:宿主半部 -> lib/index.js,浏览器半部 -> lib/client.js
pnpm run watch
pnpm run typecheck
本插件是 dsh「双半插件」:
src/index.ts):仅让插件出现在宿主 cordis 加载表里;src/client/):经 package.json 的 dsh.client 声明被发现,由加载器 serve 单文件 /plugins/<id>/client.js。两条硬约束(改动前必读 CLAUDE.md):
client.js 必须是带 window.__ModuleLoader__.load banner 的单文件 CJS(inlineDynamicImports: true,pixi.js 的动态 import 会拆 chunk 导致 404);tsdown.config.ts 的 external 列表须跟随 dsh 主仓库 packages/client/web/src/platform.ts 的 PLATFORM_MODULES 同步;src/client/runtimeTypes.ts 是与 @deepseek-ai/dsh-client-runtime 契约手动对齐的本地类型面。