前言¶
DSH 本體的會話界面是 Chat 加 Trajectory:你敲一段話,Agent 跑一批工具,最後拿到一段回覆。工具調用分散在軌跡裏,一輪的交付文件散落在會話之間,碰到需要審批的節點還得切到原生 UI 去看原因。想看個「整體進度」往往要自己對照時間線數。
Agent Theater 想解決的不是「信息不夠」,而是信息呈現方式。它在 Chat、Trajectory 之外多加一個 conversation.view 視圖,把整輪會話演成一場舞臺劇:角色跟隨真實工具事件做動作,你的話變成短暫的漫畫氣泡,Agent 的輸出變成字幕,輪到結束時舞臺上直接擺出這輪的真實成果與交付物。代碼倉庫在 GitHub lim1202/dsh-agent-theater,維護者 lim1202,社區目錄 SkillHub 把它歸在「趣味換裝」分類,目前星標還是 0。它不是官方插件。
這是什麼¶
一句話定位:一個純前端擴展的 DSH 插件,註冊一個名爲 Theater / 劇場的會話視圖,不改變 DSH 核心,不改 Chat 與 Trajectory,也不額外調用模型——舞臺上的每一句文字都來自 Conversation 層已經組裝好的 Chat 數據。
它解決的問題是:讓「Agent 在幹什麼、產出了什麼」一眼可見,同時不丟原始會話。所有敘事只讀,卸載插件即恢復默認界面。
倉庫當前版本 0.1.1,許可證 MIT,要求 DSH Desktop 0.2.1-rc.x(README 聲明在 0.2.1-rc.5 上實測,包內 engines.dsh 爲 >=0.2.1-rc.5 <0.3.0)。
核心功能¶
一個舞臺,不是聊天列表。 視圖本身即舞臺:頂部場景標籤,中間是放大的角色(帶道具、光暈、徽標),底部是演出層,放漫畫氣泡、字幕和統一狀態條。沒有歷史列表,完整原文回 Chat 看。
四個場景由真實會話狀態驅動。 Idle(待機,角色待機偶爾一句臺詞)、Working(工作中,實時工具名 + 操作計數 + 計時)、Completion(完成,彙報卡)、Attention(需要你,請求卡)。切換條件來自會話真實狀態,不是插件自己猜測。
完成彙報。 一輪結束畫卡片,包含三塊:該輪最後一條真實回覆(Markdown 渲染,默認摺疊,可展開、可複製)、真實統計(讀取 / 搜索 / 運行 / 修改的工具分類計數與牆鍾耗時,不解析也不轉述 Agent 自述)、交付物明細——Delivered(present 送出的文件)、Edited files(成功的 write / edit / 可變 str_replace_editor,去重且失敗不計)、Attachments(本輪真實圖片引用)。present 附帶的 description 顯示在文件名下方一行;點文件行會在右側欄打開,點縮略圖開舞臺內燈箱。
需要你處理。 請求卡顯示真實類型(等待審批 / 等待你的回答)、工具 · 原因,提問類列出真實問題與選項。插件只渲染這些信息,操作仍走原生審批 UI 和輸入區,插件不會替用戶批准。
Codex Pet 逐幀角色。 導入一個 pet.json + spritesheet.webp,舞臺上的角色變成逐幀精靈動畫;沒導入就看內置佔位角色(src/art.js 的 SVG + CSS 動畫),場景與氣泡行爲一致。
剋制的邊界。 工具調用不進敘事,只在狀態條與道具上體現;角色臺詞是插件自帶的原創文案,不寫入會話日誌;全程只讀會話數據,不寫會話、不注入消息、不額外請求 Host。動效遵循 prefers-reduced-motion。
安裝與啓用¶
先決條件:DSH Desktop 要到 0.2.1-rc.x,並且應用已初始化。安裝後需要刷新一次頁面,因爲 Client 模塊只在頁面加載時讀取。
方式 A,從 GitHub 安裝(README 推薦)。插件頁安裝時粘貼:
github:lim1202/dsh-agent-theater
命令行等價寫法:
dsh plugin --profile desktop add github:lim1202/dsh-agent-theater
方式 B,從發佈包或本地目錄裝:
dsh plugin --profile desktop add https://github.com/lim1202/dsh-agent-theater/releases/download/v0.1.1/dsh-agent-theater-0.1.1.tgz
dsh plugin --profile desktop add /path/to/dsh-agent-theater
方式 C,加一個 Discover 索引源。DSH 0.2.1+ 的 Plugins → Discover → Index sources 可以讀插件市場索引(JSON,格式 1),倉庫自帶一份:
https://cdn.jsdelivr.net/gh/lim1202/dsh-agent-theater@v0.1.1/index.json
備用地址(非 CDN,個別網絡可能超出 DSH 給索引源的 15 秒時限):https://raw.githubusercontent.com/lim1202/dsh-agent-theater/v0.1.1/index.json。
裝完三步:
1、刷新頁面,會話上方視圖切換裏選 Theater。
2、想用 Codex Pet 就導入一個,不導入也能用。
3、不需要時在 Plugins 頁面關掉該 bundle,立即回到普通 Chat;卸載用 dsh plugin --profile desktop remove dsh-agent-theater,再 rm -rf ~/.dsh/agent-theater 徹底清角色資源。
典型用法¶
導入 Pet。 點劇場工具條的「選擇 Pet 資產」→ 原生文件夾選擇 → 選包含 pet.json 的文件夾。資源會被複制到獨立目錄,源文件夾只讀不動:
$DSH_HOME/agent-theater/ # 默認 ~/.dsh/agent-theater
├── config.json # {"active": "laffey-ii"}
└── pets/<id>/
├── pet.json # 導入時規範化後的清單
└── spritesheet.webp # 從源文件夾複製
pet.json 字段:id、displayName、description、spriteVersionNumber(只接受 2)、spritesheetPath(目錄內相對路徑,拒絕 .. 與絕對路徑)。精靈圖 ≤ 24MB,支持 webp/png/jpeg/avif,像素尺寸必須是幀網格整數倍。
幀網格。 按 192x208 一幀、8 列 × 11 行 = 1536x2288 解析,每行幀數由透明像素判定,從第 0 列連續排列。行映射以 laffey-ii v2 校準:第 0 行 7 幀 idle(呼吸、眨眼);第 4 行 5 幀 success(起跳、騰空、落地);第 5 行 8 幀 error;第 6 行 6 幀 waiting;第 7 行 6 幀 working;第 8 行 6 幀 thinking / research;第 1/2/3/9/10 行備用未使用。
工作時的舞臺。 發送一句話,它顯示在角色旁邊的漫畫氣泡裏,9 秒後淡出;Agent 正在輸出的內容作爲字幕鋪在底部狀態條上方。狀態條會實時更新,例如 ● 執行中… · 運行 node --test · 3 個操作 · 00:42。一輪結束顯示彙報卡,狀態條變成 ● 已完成 · 2 個文件 · 1 張附件。過幾秒不點也會收起,點 × 立刻收起,之後舞臺回到待機,但底部仍保留本輪產出計數。
需要審批的時刻。 會話暫停等待審批或回答時,舞臺切到 Attention:角色站在請求卡旁邊,狀態條提示 ● 等待你處理 · 在下方輸入區處理。去原生輸入區完成操作即可。
適用場景與注意¶
適合想讓 agent 工作過程更直觀的人:長時間跑構建、寫多文件改動、反覆交付產物的場景,用 Theater 能一眼看到這輪讀了什麼、改了什麼、交了什麼;需要盯着審批和等待狀態時,也能減少來回切視圖的次數。它對會話日誌零侵入,適合不希望對話被改寫或注入的人。
幾個需要注意的點:
- 插件以當前的 DSH 進程權限運行。安裝前先讀源碼(
index.js、client.js、cordis.patch.yml)和 LICENSE,確認沒有超出預期的行爲;它是第三方插件,與 DeepSeek 無關。 - DSH 仍在 rc 階段,slot / 服務簽名可能變化;升級後若視圖空白,把 console 裏的
slot entry crashed in 'conversation.view'貼上 issue。 - 未導入 Pet 時是 SVG 佔位角色,導入後纔是逐幀精靈動畫,不是 Live2D。附件只列圖片引用,PDF、代碼文件等非圖片附件不進彙報卡。Markdown 是實用子集,不支持表格、圖片、任務列表、內聯 HTML,也不做語法高亮。
- 動作按工具名映射(
theaterPoseForTool),遇到新工具默認「搬磚」動作;精靈圖首屏整張下載,靠 ETag 304 複用緩存,沒有按行或分塊加載。 - 角色美術不隨倉庫分發,倉庫自帶的是佔位角色;使用第三方角色素材前先自行確認授權。
結尾¶
Agent Theater 的價值在於把「會話」變成「可觀看的一輪」:角色跟着真實工具事件動,交付物用匯報卡直接擺在檯面上,原始 Chat 與 Trajectory 一行沒動。它不調用額外模型、不改寫會話,裝不上或用不慣就卸載乾淨。目錄頁在 SkillHub 上搜 lim1202/dsh-agent-theater,源碼與安裝說明見 GitHub 倉庫 https://github.com/lim1202/dsh-agent-theater。