dsh-paoding 0.4.7 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ dsh-paoding(中文品牌「庖丁」,典出《庄子》——庖丁顺纹理
|
|
|
25
25
|
- **HTTP 接口直连配置**:预设的列举、新增、更新、删除走 `/api/paoding/presets` 四条接口,随 DSH Web 服务同进程挂载、本机回环直调;与面板「保存并应用」同一条生成管线、同一把写盘互斥闸——脚本和自动化工具改班底,不必开浏览器。
|
|
26
26
|
- **面板中英双语**:界面文案 zh/en 全覆盖,语言自动识别(显式选择 → 中文信号优先:浏览器语言、宿主页面语言、中文时区),「更多」菜单一键切换并记住。
|
|
27
27
|
- **版本更新有提醒,面板一键升级**:面板会对比 npm registry(npmmirror 镜像、GitHub release 依次兜底)上的最新版本,发现新版就地提示并附上发布页链接;点「升级」就地换上新版(profile 自动探测:普通 profile 走 `dsh plugin update dsh-paoding`;desktop profile 被 dsh CLI 的 Electron 专属守卫挡住,改在 profile 目录直跑 `pnpm add dsh-paoding@<版本>`,pnpm 找不到时自动回落 `corepack pnpm`),重启 DSH 后生效,编排预设会在重启时按新版自动重生成。开发检出的 link 形态无法就地升级,面板会提示切回 registry 版的办法;检测失败时页头留一行「版本检测失败 · 重试」(完整原因与代理排查提示在悬浮提示里),不弹窗打扰。
|
|
28
|
-
- **委派效果可量化**:面板「委派效果」卡按角色统计调用数、平均耗时与失败数(近 30
|
|
28
|
+
- **委派效果可量化**:面板「委派效果」卡按角色统计调用数、平均耗时与失败数(近 30 天),数据读宿主会话存档本地聚合——哪个角色用得多、哪个常掉链子,一眼可见;标题行点按可折叠 / 展开(偏好记入浏览器 localStorage),收起时只留标题一行,页头「更多」/「×」恒钉右上角;缺省项目(宿主 cwd 换算)扫不到任何委派记录时自动回落为全项目聚合(卡片标注「全部项目」),冷读带日志 mtime 预过滤,窗口外的日志文件不再开读句柄。
|
|
29
29
|
- **来去自由**:不改 DSH 一行源码;装完新会话即用,卸载即删目录。
|
|
30
30
|
- **两代宿主都兼容**:DSH 0.1.5 – 0.2.1 全支持(0.1.5 / 0.1.6 / 0.1.7-rc.1 / 0.1.7-rc.2 / 0.2.0-rc.1 / 0.2.0-rc.2 / 0.2.1-rc.2+)——两代宿主发现预设的机制不同(目录扫描 vs patch 声明行),安装器自动检测宿主版本选对落点;编排组合里的 workflow worker 行也按宿主版本自动适配(0.1.5 用 workflow-worker-thread,0.1.6+ 换 workflow-ptc——旧包 0.1.6 起已删除,残留行正是 0.2.0 面板上「加载失败」的元凶);DSH 0.2.1 起角色委派行同步换代(0.2.1 的 dsh-tool-subagent 拒绝内联 persona/toolFilter——人设与工具面改挂各角色的 AgentPreset,spawn 子代理按 agentPreset 选择子预设;0.2.0 及以下保持内联形状),宿主升级、降级后的首次保存/自愈自动迁移(工作区专属预设 orchestrator-<slug> 随同轮自愈一并换代),全程无感;0.2.1 的 prerelease 再细分——tool-subagent 守卫自 0.2.1-rc.2 落地,rc.0/rc.1 仍按内联形状生成。
|
|
31
31
|
|
package/docs/installation.md
CHANGED
|
@@ -207,7 +207,7 @@ patch 与配置文件用 **`yaml` 包**解析——通过 `createRequire` 从 `$
|
|
|
207
207
|
- **场景模板**:页头三档切换(轻量:只留实现角色;调研:只留检索角色;全开:全员到齐、主 agent 额外工具带满检测库存),一键换「班底」;只动 `roles_remove` 与 `main_agent_extra`,各角色精调过的工具面、persona、模型、启动方式分毫不动,切回即原样复原。
|
|
208
208
|
- **检查提示卡**:每次「预览生成 / 保存并应用」自动过一遍体检(配置了未挂载的工具、零工具角色、查无此名的模型、预设落后于配置),分级提示以卡片形式贴在页头下方,处理完再保存不迟。
|
|
209
209
|
- **备份与回滚**:保存、导入、恢复配置前都会自动把当前配置轮换备份三份(`config.yml.bak-1..3`,新压旧);「更多」→「恢复备份…」列时间与大小、二次确认后回退,恢复前当前配置还会再自动备份一份——误操作有后悔药。
|
|
210
|
-
- **委派效果统计**:页头「委派效果」卡按角色统计被委派的调用数、平均耗时与失败数(近 30 天,`days` 参数可调)。数据来自宿主会话存档的冷读——经宿主 `sessionPersistence` 服务逐会话抽摘要、本地聚合,不出机、不带负载;失败记的是子会话零轮次或轮次中断(spawn 后即死、中途终止两种形态)。缺省项目(宿主 cwd 换算)扫不到任何委派记录时自动回落为全项目聚合(响应 `project='all'`,卡片标注「全部项目」);冷读带日志 mtime
|
|
210
|
+
- **委派效果统计**:页头「委派效果」卡按角色统计被委派的调用数、平均耗时与失败数(近 30 天,`days` 参数可调)。数据来自宿主会话存档的冷读——经宿主 `sessionPersistence` 服务逐会话抽摘要、本地聚合,不出机、不带负载;失败记的是子会话零轮次或轮次中断(spawn 后即死、中途终止两种形态)。缺省项目(宿主 cwd 换算)扫不到任何委派记录时自动回落为全项目聚合(响应 `project='all'`,卡片标注「全部项目」);冷读带日志 mtime 预过滤,窗口外的日志文件不再开读句柄。标题行点按可折叠 / 展开(偏好记入浏览器 localStorage,默认展开),收起时只留标题一行。宿主缺会话服务时整卡不渲染。
|
|
211
211
|
- **「更多」菜单**:配置导出(下载 `dsh-paoding.config.yml` 原文)/ 导入(先验格式,整份覆盖含工作区段,需二次确认)/ 恢复备份(见上条)与面板语言切换(中英自动识别、手动选择优先并记住)。
|
|
212
212
|
|
|
213
213
|
## 7. 卸载
|
package/package.json
CHANGED
|
@@ -1325,7 +1325,9 @@ html[data-dsh-paoding-active]:not([data-dsh-mnemon-active]):not([data-dsh-taskbo
|
|
|
1325
1325
|
.pd-pageHeader {
|
|
1326
1326
|
flex: none;
|
|
1327
1327
|
display: flex;
|
|
1328
|
-
|
|
1328
|
+
/* 顶格对齐:标题列内含委派效果卡(懒加载后撑高整列)时,「更多」/「×」
|
|
1329
|
+
仍钉在页头右上角,不随 align-items:center 的纵向居中漂到半腰。 */
|
|
1330
|
+
align-items: flex-start;
|
|
1329
1331
|
gap: 12px;
|
|
1330
1332
|
width: 100%;
|
|
1331
1333
|
padding: 18px 28px 10px;
|
|
@@ -1402,6 +1404,43 @@ html[data-dsh-paoding-active]:not([data-dsh-mnemon-active]):not([data-dsh-taskbo
|
|
|
1402
1404
|
color: var(--dsw-alias-label-primary);
|
|
1403
1405
|
}
|
|
1404
1406
|
|
|
1407
|
+
/* 标题行整行按钮:点按切换展开 / 收起(pd-delegateHead 同族观感,缩一号:
|
|
1408
|
+
卡内嵌在页头,hover 面积过大反而抢眼)。chevron 靠右(margin-left:auto),
|
|
1409
|
+
展开态旋 90° 指下——与委派调用行的 pd-delegateChev 同一语义。 */
|
|
1410
|
+
.pd-delegHead {
|
|
1411
|
+
box-sizing: border-box;
|
|
1412
|
+
display: flex;
|
|
1413
|
+
align-items: center;
|
|
1414
|
+
gap: 4px;
|
|
1415
|
+
width: 100%;
|
|
1416
|
+
padding: 1px 4px;
|
|
1417
|
+
margin: -1px -4px 0;
|
|
1418
|
+
border: 0;
|
|
1419
|
+
border-radius: 6px;
|
|
1420
|
+
background: transparent;
|
|
1421
|
+
cursor: pointer;
|
|
1422
|
+
text-align: left;
|
|
1423
|
+
font: inherit;
|
|
1424
|
+
transition: background 0.12s ease;
|
|
1425
|
+
}
|
|
1426
|
+
|
|
1427
|
+
.pd-delegHead:hover,
|
|
1428
|
+
.pd-delegHead:focus-visible {
|
|
1429
|
+
background: var(--dsw-alias-interactive-bg-hover);
|
|
1430
|
+
outline: none;
|
|
1431
|
+
}
|
|
1432
|
+
|
|
1433
|
+
.pd-delegChev {
|
|
1434
|
+
margin-left: auto;
|
|
1435
|
+
flex: none;
|
|
1436
|
+
font-size: 12px;
|
|
1437
|
+
line-height: 18px;
|
|
1438
|
+
color: var(--dsw-alias-label-tertiary);
|
|
1439
|
+
transition: transform 0.12s ease;
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
.pd-delegChevOpen { transform: rotate(90deg); }
|
|
1443
|
+
|
|
1405
1444
|
/* 标题尾角标:缺省项目零记录回落全项目聚合(project='all')时点明口径——
|
|
1406
1445
|
弱化字号与三级文字色,紧跟标题不抢视觉。 */
|
|
1407
1446
|
.pd-delegScope {
|
|
@@ -1894,6 +1933,7 @@ html[data-dsh-paoding-active]:not([data-dsh-mnemon-active]):not([data-dsh-taskbo
|
|
|
1894
1933
|
@media (prefers-reduced-motion: reduce) {
|
|
1895
1934
|
.pd-delegateRunning { animation: none; }
|
|
1896
1935
|
.pd-delegateChev { transition: none; }
|
|
1936
|
+
.pd-delegChev { transition: none; }
|
|
1897
1937
|
.pd-delegateHead { transition: none; }
|
|
1898
1938
|
}
|
|
1899
1939
|
|
|
@@ -477,6 +477,8 @@ window.__ModuleLoader__.load({
|
|
|
477
477
|
"del.empty": { zh: "暂无委派记录", en: "No delegation records yet" },
|
|
478
478
|
// 标题角标:响应 project='all'(缺省项目零记录,服务端回落全项目聚合)时点明统计口径
|
|
479
479
|
"del.scopeAll": { zh: "全部项目", en: "all projects" },
|
|
480
|
+
// 标题行按钮的悬浮提示(title 属性):展开 / 收起切换的 affordance
|
|
481
|
+
"del.toggleTip": { zh: "展开 / 收起委派效果", en: "Expand / collapse delegation stats" },
|
|
480
482
|
|
|
481
483
|
// ── 预览「本次变更」区块(preview.diff 结构化差分的渲染文案)───────────
|
|
482
484
|
// 服务端 diff 是纯结构零文案(tools/lib/config.mjs diffAssignments),
|
|
@@ -664,17 +666,27 @@ window.__ModuleLoader__.load({
|
|
|
664
666
|
}
|
|
665
667
|
|
|
666
668
|
// 卡片渲染:stats 缺失 / ok!==true / roles 非数组 → null(整卡零占位)。
|
|
667
|
-
//
|
|
668
|
-
//
|
|
669
|
-
|
|
669
|
+
// 标题行是整行按钮(pd-delegHead):点按经 onToggle 切换 open(PageShell
|
|
670
|
+
// 持态并写 localStorage 记忆);收起时表格 / 尾行 / 空文案一律不渲染,
|
|
671
|
+
// 只剩标题 + 指向 chevron。delegatedSessions=0 展开态渲染一行空文案;
|
|
672
|
+
// 有数据渲染紧凑表(表头 + 最多 8 行,超出给「共 N 个角色」尾行),
|
|
673
|
+
// 失败数 >0 标红提醒。
|
|
674
|
+
function delegationCardOf(stats, open, onToggle) {
|
|
670
675
|
if (!stats || stats.ok !== true || !Array.isArray(stats.roles)) return null;
|
|
671
676
|
// project==='all' = 缺省项目零记录后回落的全项目聚合,标题尾加弱化角标
|
|
672
677
|
// 点明口径,免得误读成当前项目自己的数据(服务端见 stats-core.mjs 回落)。
|
|
673
|
-
var head = h("
|
|
674
|
-
|
|
678
|
+
var head = h("button", {
|
|
679
|
+
type: "button",
|
|
680
|
+
className: "pd-delegHead",
|
|
681
|
+
"aria-expanded": open ? "true" : "false",
|
|
682
|
+
title: t("del.toggleTip"),
|
|
683
|
+
onClick: function () { if (typeof onToggle === "function") onToggle(); },
|
|
684
|
+
}, h("span", { className: "pd-delegTitle" }, t("del.cardTitle"),
|
|
685
|
+
stats.project === "all" ? h("span", { className: "pd-delegScope" }, t("del.scopeAll")) : null),
|
|
686
|
+
h("span", { className: open ? "pd-delegChev pd-delegChevOpen" : "pd-delegChev", "aria-hidden": "true" }, "▸"));
|
|
675
687
|
if (!stats.delegatedSessions) {
|
|
676
688
|
return h("div", { className: "pd-delegCard" }, head,
|
|
677
|
-
h("div", { className: "pd-delegEmpty" }, t("del.empty")));
|
|
689
|
+
open ? h("div", { className: "pd-delegEmpty" }, t("del.empty")) : null);
|
|
678
690
|
}
|
|
679
691
|
var cols = [
|
|
680
692
|
["pd-delegRole", t("del.colRole")],
|
|
@@ -699,7 +711,8 @@ window.__ModuleLoader__.load({
|
|
|
699
711
|
? h("div", { className: "pd-delegMore" }, t("del.totalRoles", { n: stats.roles.length }))
|
|
700
712
|
: null;
|
|
701
713
|
return h("div", { className: "pd-delegCard" }, head,
|
|
702
|
-
h.apply(null, ["div", { className: "pd-delegTable" }, headerRow].concat(rows)),
|
|
714
|
+
open ? h.apply(null, ["div", { className: "pd-delegTable" }, headerRow].concat(rows)) : null,
|
|
715
|
+
open ? tail : null);
|
|
703
716
|
}
|
|
704
717
|
|
|
705
718
|
var DEFAULT_ROLES = ["search_external", "design", "implement"];
|
|
@@ -4101,6 +4114,20 @@ window.__ModuleLoader__.load({
|
|
|
4101
4114
|
}).catch(function () { /* 静默降级:整卡不渲染 */ });
|
|
4102
4115
|
return function () { alive = false; };
|
|
4103
4116
|
}, []);
|
|
4117
|
+
// 委派卡折叠态:默认展开,点标题行切换(delegationCardOf 的 onToggle)。
|
|
4118
|
+
// localStorage 记忆偏好(键 paoding-deleg-collapsed,"1" = 收起),GUI
|
|
4119
|
+
// 重载后保持;存储不可用(隐私模式等)时只丢记忆不丢功能——与 paoding-lang
|
|
4120
|
+
// 同款 try/catch 围栏。
|
|
4121
|
+
var _dc = useState(function () {
|
|
4122
|
+
try { return window.localStorage.getItem("paoding-deleg-collapsed") !== "1"; }
|
|
4123
|
+
catch (err) { return true; }
|
|
4124
|
+
}), delOpen = _dc[0], setDelOpen = _dc[1];
|
|
4125
|
+
var toggleDelOpen = useCallback(function () {
|
|
4126
|
+
setDelOpen(function (o) {
|
|
4127
|
+
try { window.localStorage.setItem("paoding-deleg-collapsed", o ? "1" : "0"); } catch (err) { /* 只丢记忆 */ }
|
|
4128
|
+
return !o;
|
|
4129
|
+
});
|
|
4130
|
+
}, []);
|
|
4104
4131
|
// 语言切换 tick:页头文案(标题 / 副标题 / 菜单 / 语言项)走 t(),切换后
|
|
4105
4132
|
// 需整体重渲染一次;ConfigPanel 内部另有 registerReload 整页重拉。
|
|
4106
4133
|
var _lg = useState(0), langTick = _lg[0], setLangTick = _lg[1];
|
|
@@ -4379,8 +4406,9 @@ window.__ModuleLoader__.load({
|
|
|
4379
4406
|
// 回写点);数据未就绪 / 老服务端无该字段时零占位。
|
|
4380
4407
|
slimInfo ? h("p", { className: "pd-slimLine" }, slimLineText(slimInfo)) : null,
|
|
4381
4408
|
// 委派效果卡:紧贴瘦身行之下(delegationCardOf 自判,统计没拉到 /
|
|
4382
|
-
// 服务缺失时返回 null
|
|
4383
|
-
|
|
4409
|
+
// 服务缺失时返回 null 整卡不渲染);标题行点按切换展开 / 收起,
|
|
4410
|
+
// 折叠态由 delOpen 持久记忆。
|
|
4411
|
+
delegationCardOf(delStats, delOpen, toggleDelOpen)),
|
|
4384
4412
|
// 页头「更多」菜单:整份配置文件的导出 / 导入(低频操作收进来,页头
|
|
4385
4413
|
// 不添第二排按钮)。定位锚点用相对定位的薄包裹层,下拉复用工作区
|
|
4386
4414
|
// 「更多」的 omd-tabMenu / omd-tabMenuItem 既有样式;靠右对齐(inline
|