dsh-at-file
FSMargoo/dsh-at-fileCodex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
为 DeepSeek Harness Web 主窗口添加「工作角色」页签 + 像素办公室浮层:内置 508 张角色卡(The Agency 255 + agency-agents-zh 253),支持搜索 / 中英切换 / 分部分类;Canvas 2D 像素小人可站立、打字、踱步,闲聊台词可接 AI。一条命令安装,不改 dsh 源码。
给 DeepSeek Harness 的 Web 主窗口加「工作角色」页签 + 对话区「像素办公室」浮层——255+ 位专家变成会走会聊的像素小人。一条命令安装,不改 dsh 源码。
官方 DSH CLI 一条命令安装:
dsh plugin --profile web add dsh-ui-agents-pixe
⚠️ 请一律用
dsh plugin命令,不要用npx @deepseek-ai/dsh——npx 对包名每次都会重新下载一份 dsh,装插件不该重装 dsh。包内
dsh.bundle.patch声明了cordis.patch.yml,dsh plugin add后插件行自动挂载,无需手改任何 profile 补丁文件。首次安装后重启 dsh web 生效(之后改 UI 均为热更新)。
安装完成后:聊天页出现「工作角色」页签,对话区出现可折叠的像素办公室浮层;模型选择器、会话模型完全不受影响。
想要双击即用的完整桌面体验(自动带起 dsh web + 本插件效果),推荐桌面壳 dsh-desktop——Tauri 打包的 DeepSeek Harness 桌面工作台,开箱即用。
也可以先装可视化插件市场,在设置界面里浏览、搜索、一键安装本插件:
dsh plugin --profile web add dshmarket
shell.overlay 浮层,Canvas 2D 程序化像素小人(站立 / 打字 / 踱步 + 四态徽章),可拖动、折叠、缩放,选人即入列;闲置与工作中的人都会聊天,台词可接 AI。dsh.bundle.patch),安装即生效,重启不丢。
📸 全部真实抓屏/录屏。
更多完整桌面壳效果(对话主界面等)见 dsh-desktop 的 README。
像素人的聊天台词可接入 AI,含内置 AI 与一个外部接口,由页签/浮层顶部的 🤖 AI 开关统一控制:
/agents-pixe/chat,用 dsh 自己配好的模型(ctx.llm,第一个 provider/model)按角色 + 实时状态生成一句 20 字内的中文闲聊;模型失败/空则回退实时活动台词 → 罐头。外部接口:在页面里赋值一个异步函数即可接管台词:
window.__AGENTS_PIXE_CHAT__ = async (req) => '你好,人类';
// req = { roleName, roleKey, emoji, state, activity, sessionId, isLeader }
// state ∈ 'idle' | 'working' | 'done';返回 string(展示)或 null/空(回退内置)
编程式控制开关/接口:
window.__AGENTS_PIXE_CHAT_API__.setEnabled(true); // 开/关 AI 聊天
window.__AGENTS_PIXE_CHAT_API__.setProvider(async (req) => '…'); // 设外部接口
window.__AGENTS_PIXE_CHAT_API__.isOn(); // 当前开关状态
实现说明:持久
dsh.client客户端插件没有「客户端→宿主」私有 RPC,但宿主半边(lib/index.js)可注入llm+webServer,注册GET /agents-pixe/chat精确路由生成台词——复用 dsh 已配置的模型,无需额外密钥、无 CORS、不改 dsh 源码。
问题根因有两层,均已修复:
settingsScope.bind 在分区渲染函数里每次调用(每次渲染新建 controller → 订阅与写入的 scope 不是同一个)。改为在 apply() 中只绑定一次(参考 dsh-ui-three-body 的写法),开关点击立即可见。inject 数组缺少 settings 服务,导致 settings.register('agents-pixe', …) 不可用/时序不稳,namespace 从未在宿主侧生效——客户端 describe() 读不到、写入被拒。已补上 'settings' 声明。工作角色页签与像素办公室浮层顶部的 AI 按钮已移除,AI 相关配置统一收拢到设置 → 像素办公室分区,一个入口管全部:
选人 / 缩小 / 放大 / 设置 / 折叠按钮整体加大(padding 与字号提升),悬浮窗操作更清晰易点,不再看不清。
关闭全部配置时(角色工具 + AI 闲聊都关)为纯本地零 token 消耗:工具不注册、提示段不注入、/agents-pixe/stats 返回 calls:0, tokens:0。开启后依旧受「AI 模式硬门 + 每小时 60 次 / 60K token 预算」兜底。
agents_pixe_roles / agents_pixe_team 工具与提示段默认不注册——不开开关,每轮模型调用不背任何角色工具成本。agents_pixe_roles 默认返回完整角色卡(1:1 上游 508 张,定位/使命/关键规则/交付物/工作流程/沟通风格全部章节);总量上限 100K 字符,超出跳过后续角色并说明。agents_pixe_roles 的全局默认,不用每次口头交代(工具仍可被 sections=rules/deliverables 单次覆盖)。agents_pixe_team——领袖拆解任务 → 每位成员开独立子代理(种子=完整角色卡,上下文互不挤占,provider spawn/fork)并行执行 → 领袖汇总。工作角色页签有「🚀 一键编排」按钮(最稳,走 dsh setDraft),办公室选人面板也有(有反馈),一点就把当前团队送进编排指令,补一句任务即可发送。预设 29 团队名直传或角色名列表;成员上限默认 4、最大 6。成本 = N+2 次子代理调用,深度任务再用。设置 → 像素办公室 → **「开启内核模式」**开关 + 档位/语气/自称/称呼。开启后把「智子内核」注入每次对话的 system prompt(第一性原理 + 五步纲领:问清→方案→章程→执行→交付),团队/角色协作用上它。
minimal 精简 / balanced 均衡 / full 完整(含示例),默认 balanced。{{self}}/{{master}} 会替换)。N 轮 · M 步 | 缓存命中 X% | 输入↑xx.xK | 输出↓xx.xK(来自 dsh 真实 provider 用量的 tokenUsage/sessionStats 投影,非仅插件闲聊)。本插件不自带智子内核,也不注入 system prompt。想要「第一性原理 + 五步纲领(问清→方案→章程→执行→交付)」式的内核,请用专门的内核插件:
dsh plugin --profile web add dsh-ui-three-body。它把内核注入每次对话的 system prompt,左上角悬浮萌宠做开关,设置面板可配内核档位(minimal/balanced/full × 中/英 × 傲慢/温和/热忱)与人设自称/称呼。与本插件同作者,可一并安装。说明:本插件聚焦「角色页签 + 像素办公室 + 角色/团队工具」,内核交给专门的 three-body 插件,职责单一、互不干扰。
上游 agency-agents(en/zh)没有一份项目级共享纲领——每个角色卡自带的 frontmatter + 章节(Identity & Memory / Core Mission / Critical Rules / Communication Style / Deliverables)就是角色的「内核」。本插件的团队协作另有一套编排内核,贯穿
agents_pixe_team的三段式:
{assignments:[{name,assignment}], synthesis_focus} 的 JSON 分工。拆分失败自动退化为「各成员按自身专业并行处理同一任务」。assignment 负责,彼此不吞上下文。synthesis_focus 指定汇总重点。成本与质量权衡(编排内核的取舍):完整卡保真度最高、最耗 token;sections=rules/deliverables 取单章节是质量/成本的中间档;agents_pixe_team 用 N+2 次子代理换真并行闭环。简单问题不套团队,深度任务才编排。
flash/mini/lite/free/small 等便宜模型(可手动指定);reasoningEffort: off 关思考、maxTokens: 120 封顶输出。aiEnabled 授权标记直接拒绝调用、零 token 消耗(不依赖客户端自觉);开启后才走下面的预算管控。low(180s/角色、全局 1 并发);开启 AI 前有「会消耗 token,确认开启?」弹窗。/agents-pixe/stats 返回调用数/失败/缓存命中/预算拦截/估算 token,办公室浮层实时显示「已调用 N/60 次 · 约 M token」。agency-agents 全量角色卡(en 255 + zh 253 = 508 张)固化进本插件,随包分发,换环境不丢:
lib/roles.json:紧凑目录(name/emoji/color/desc),冻结进 client bundle,UI 直接用。lib/roles-full.json:508 张完整角色卡(定位 + 规则 + 清单 + 语气),宿主工具数据源。lib/index.js(宿主半边):注册 agents_pixe_roles 工具,agent 按角色名取回完整卡。唯一不随包走的是「你手动保存的自定义团队」(本机 localStorage)与「AI 生成的自定义角色」(~/.dsh/agents-pixe/custom-roles.json)。
dsh-ui-agents-pixe/
├── package.json # dsh.client 声明 + dsh.bundle.patch 自挂载
├── cordis.patch.yml # 组合补丁行(- insert: ui-agents-pixe)
├── assets/ # README 截图/录屏(demo.gif + 真实抓屏)
├── lib/
│ ├── index.js # node 半边:agents_pixe_roles 工具 + /agents-pixe/* 路由
│ ├── client.js # browser 半边(构建产物,自包含 __ModuleLoader__.load)
│ ├── roles.json # 角色目录(生成物,冻结进 client.js)
│ └── roles-full.json # 508 张完整角色卡(宿主工具数据源)
├── src/
│ ├── client.prelude.js # bundle 头(require react + var ROLES_DATA =)
│ └── client.main.js # 主体逻辑(像素引擎 + 页签 + 浮层)
├── scripts/
│ ├── gen-roles.mjs # 从 en/zh 角色库生成 roles.json + roles-full.json
│ └── build-client.mjs # prelude + roles.json + main → lib/client.js
└── test/
└── smoke.test.mjs # 发布前冒烟测试(node --test)
# 生成角色数据(缺失自动从上游克隆)→ 生成 lib/client.js
node scripts/gen-roles.mjs
node scripts/build-client.mjs
# 冒烟测试
node --test
# 发布(需已 npm login;版本号在 package.json)
npm publish
gen-roles.mjs 读 en(~/.agents/skills/agency-agents/references/ 或 AGENTS_PIXE_EN_ROOT)与 zh(%TEMP%\dsh-analysis\agency-agents-zh 或 AGENTS_PIXE_ZH_ROOT);本地缺失自动 git clone 上游(en: github.com/msitarzewski/agency-agents,zh: github.com/jnMetaCode/agency-agents-zh)。build-client.mjs 把 prelude + roles.json + main 拼成自包含 bundle,无任何构建工具依赖。@deepseek-ai/dsh-tools、@deepseek-ai/dsh-llm)由 dsh 运行时依赖闭包提供,插件不重复安装。本插件是独立 npm 包,dsh-desktop 不再内置它;按需安装即可:
dsh plugin --profile web add dsh-ui-agents-pixe
已落地:角色卡完整化(sections=rules/deliverables)、一键团队编排(agents_pixe_team)、像素人点击查看角色卡详情、tok 实时计量、取卡配方按钮。
agents_pixe_roles 只按名查)。running 信号;精确到「每个角色各自的工具调用」需接真实事件流(HookProvider 形态)。/agents-pixe/chat,按角色风格说话。gen-roles 数据一致性校验(角色库上游更新时 508 张卡数量比对)。