Repository navigation
Releases
v0.10.1
v0.10.0
新增
defaults.hostFilter用正则决定哪些~/.ssh/config条目值得纳管,白名单与黑名单
各一份:整串锚定(git.*命中git.neodrive.neolix.net,不命中mygit-box)、
忽略大小写、黑名单优先;白名单为空表示全放行,一旦非空就只纳管命中的条目。
改名单立即重算全表,不需重启 manager。界面在「管理 → 全局默认」里编辑(每行一条
正则),CLI 为dshc config set defaults.hostFilter.deny 'git\..*,github\.com'
(none清空)。- 主机表新增默认折叠的「已屏蔽」分组与「清理已屏蔽(N)」:确认后只删除 config 里被
名单挡下的条目与 manager 运行记录,~/.ssh/config一个字都不动;仍有实例在跑的会
被跳过并在提示里点名。新增端点POST /api/hosts/clear-blocked。 POST /api/reload的响应新增filtered(本轮被名单挡下、因此未纳管的条目),与
orphaned分开回报;dshc ls给被挡下的主机标「已屏蔽(命中的规则)」。
HostView新增blocked字段(null或{rule, pattern, reason})。
变更
- 出厂黑名单默认挡下常见代码托管入口:
git\..*、github\.com、gitlab\..*、
gitee\.com、bitbucket\.org、ssh\.dev\.azure\.com、vs-ssh\.visualstudio\.com、
.*\.git。这会改变升级后的默认行为:此前已纳管的这类主机不会被删除,但会移入
「已屏蔽」分组并退出探测、自动拉起与巡检。要继续用其中某台,把它从黑名单移除或加进
白名单即可。 - 被名单挡下的主机退出一切自动化(探测、全量探测、自动拉起、manager 重启后的状态恢复、
巡检、dshc init的候选、批量配置同步的源与目标),远程动作返回NOT_ALLOWED。
例外是「关停」:真有实例在跑时关停始终可用——拒掉它等于把那个进程扣死在远端,
只能靠改名单才停得掉。「打开」也保留。 - 名单是用户可编辑的正则,因此有护栏:每份最多 32 条、单条最长 200 字符、不接受控制
字符;把「内部有变长量词或分支」的分组重复两次以上((a+)+、(a{2,4})+、
(x|xx)+、(a+){12})会被 VALIDATION 当场拒收并说明理由,因为这类写法撞上长主机名
要走天文数字的回溯步数,会把 manager 卡死在一次配置保存里。(gitlab|github)\..*
这类真正用得上的写法不受影响。
v0.9.3
修复
- 主机表每行的分隔线重新连成一条。操作列复用了卡片头那个带
display: flex的
.row-actions,而它挂在td上:这一格于是不再是表格单元格,不跟同行其他格拉平
高度(68px 的行里它只有 39px),自带的下边框比别人早二十多像素落笔——一行的分隔线
断成错位的两段,行内的勾选框与按钮也差半个像素。flex 现在收在格子里的一层包装上。
v0.9.2
修复
- 拉起真的会用探测解析出的 dsh 绝对路径了。
runLaunchSequence重拼内部 spec 时把
dshPath漏掉了一层,模板于是退回裸dsh交给 PATH 查找——canon 那类装法
($HOME/.canon/node/bin)不在非交互 SSH 的 PATH 里,远端日志只留一行
nohup: failed to run command 'dsh': No such file or directory,页面上表现为
「远端进程启动后立即退出」。dsh 装在 PATH 里的主机不受影响,这也是它此前没被发现的
原因。 - 拉起模板不再接受「省略 dsh 路径」:缺路径直接 VALIDATION 拒绝拼装,不再静默降级成
PATH 查找。此前那条兼容形态正是上面那次漏传能一路跑到真机才现形的原因。
v0.9.1
修复
- 手动实例扫描要求
dsh与web在命令行里紧挨着,不再把「命令行里同时提到
dsh 和 web」的进程算成实例。本机主机受害最深:Center 派给其他主机的
ssh <host> sh -c '<探测脚本>'原样驮着command -v dsh与profiles/web,
于是一轮 14 台的并发探测能在本机凭空变出五个「手动实例」(PID 每轮都换一批)。
除了「另有 N 个手动实例」的假账,它还会让本机的一步拉起被
ADOPTION_AVAILABLE拦成领养对话框,而那几行幻影因端口未知全都按不动。
v0.9.0
修复
- 探测现在认得只在交互 shell 里现身的 dsh:候选目录补上 canon 的
~/.canon/node/bin、~/.canon/bin,并在 login shell 空手而归后退到交互
shell 嗅探(装进~/.bashrc的PATH只有交互 shell 看得见)。此前这类
目标一律被判为「远端未安装 dsh」,实际上装好且 web profile 就绪。 - 版本探测与拉起都会先把 dsh 所在 bin 目录并入
PATH。dsh 常是
#!/usr/bin/env node脚本、解释器与它同住一个目录,此前用绝对路径拉起只会
在日志里留下一行env: 'node': No such file or directory然后当场退出。 - 主机表操作列不再按实例归属增删按钮:同一状态的两行给出同样多、同样顺序的
按钮,只读领养的实例把「重启」「关停」置灰并写明「非本工具拉起」。不误杀
契约不变,此前差异只体现为按钮凭空少两个,看不出原因。 - 可排序表头(主机 / 状态 / dsh / PID)不再比其余表头右移一个按钮内边距、也不再
亮一档:排序控件压成裸文字,排序方向改用只向右延伸的箭头指示。 - 一台主机上有多个手动 dsh web 时,「拉起」的确认框会把每个候选的 PID、端口与
命令行列成单选,只读领养选中的那一个;端口未知的候选留在原位禁用并写明要重新
探测,全部不可领养时确认按钮直接置灰,只留「强拉第二份」与「取消」。此前对话
框不问是哪一个,领养请求不带 PID,被后端以「有多个手动 dsh web,请指定 PID」
挡回,页面上无路可走。 dshc start <host> --adopt新增--pid <pid>指定领养对象;交互提示里也可直接
输入 PID,非交互模式会连候选清单一起印出并要求显式--pid,不再替用户猜。- 领养动作的
operation-done帧丢失时,主机进入running也能解开按钮忙态
(此前只有 start/stop/restart/reconnect 有这条兜底,领养要等 30s 超时)。
v0.8.0
修复
- 没有
ss的远端(两台目标 pod 均无ss/lsof/netstat)现在会回落到
/proc/net/tcp{,6}判定监听状态:复核的LISTEN不再恒为unknown,
--port 0手动实例的实际端口也能被发现。两者都不可得时仍回unknown,
保持「unknown 不作否定证据」。 - 舰队分析的语义摘要上界从 60s 提高到 120s。它是唯一跑本机模型的一步,
实测 100 组载荷约需 50s,原上界比通用上界(90s)还紧,导致正常舰队规模下
常态超时并静默降级为纯确定性聚合。 acceptance:matrix的三处等待不再用与--timeout无关的固定上限封顶,
失败信息也会指出真实阶段(插件就绪 / DSH 建会话 / 注入 / 清理)而非一律
归到 Center 阶段。- 舰队分析卡片的「分析」按钮现在跟随写权限:与 manager 失联时按钮直接禁用并
给出与主机表一致的说明。此前按钮恒为可用态,失联时点击既不发请求也不出任何
提示,看起来像点了没反应。
文档
- 补齐英文手册的 “Pod-local E2E plugin topology (explicit operator path)” 节,
与中文手册对齐,明确 Center 的 SSH/tunnel 控制面、pod 本地 Sidecar 插件注入面
和scripts/deploy-to-pod.sh的归属边界。
新增
-
管理台新增 orphaned 主机安全清理:仅删除当前 SSH 配置已消失的配置与运行记录,
并在清理前后保留远端进程不误杀;orphaned 主机的远程动作、配置同步与 dsh
配置/Workspace 操作会被 manager 拒绝,同时页面明确提示 SSH 配置已消失;
清理接口为POST /api/hosts/clear-orphaned。 -
POST /api/reload现在会重新读取 SSH 配置并刷新 orphaned 状态;Center toast
在抽屉或对话框打开时仍可关闭和复制,并继续保留aria-live播报。 -
新增
acceptance:matrix五 agent 操作员验收入口,默认覆盖
claude、codex、copilot、kimi和dsh,提供有界并行/超时、fresh SSH
scan、两阶段插件注入回执和脱敏 JSON/Markdown 证据;fixture/dry-run 不计入真实通过。 -
矩阵会在缺少 DSH 会话时通过官方
session.create/session.prompt创建测试
会话,并将 persisted preset 导致的dsh_preset_unsupported/ HTTP 409 作为
fail-closed 合同结果保留,不自动清除 preset 或重试。 -
新增已有
dsh web的只读领养流程,支持 CLI/UI 确认、实际端口发现、持久化
startedByUs: false状态和实例死亡自动解除,避免重复拉起或未授权关停。 -
新增按需舰队聚类分析、Sidecar 最低版本握手、本机 DSH headless 摘要及
fail-closed 的确定性降级;新增有界的 owned-web/test-workdir 清理预览与显式应用。
v0.7.1
修复
- 优化 npm 发布后的 registry 验证:先轮询精确版本元数据,再按有界退避安装并验证,
减少 npm 最终一致性传播造成的误报失败。
v0.7.0
新增
- 新增两级真机验收入口:
acceptance:smoke用于快速闭环,acceptance:real用于
发版前完整验收;每轮强制重扫 SSH 配置、互斥运行,并输出脱敏 JSON/Markdown 证据及
跨轮回归比较。 - 新增可执行用户旅程规格与生成清单,行为 ID 对账新增 CLI 退出码面
CLI_EXIT:{0,1,2,3,130};新增行为覆盖层级标记与 §§1–8 的旅程锚点,防止功能矩阵只靠人工维护。 - 新增明确标注为操作员脚本的
scripts/bootstrap-remote.sh,保留 Center 远端零安装、
零常驻边界。
修复
- 真机验收收尾不再使用宽匹配
pkill -f "dsh web",改为按本轮 PID 与完整命令行指纹
逐字核对后停止,指纹不符时拒杀并记证。 - 修复真机验收在共享节点端口占用、已有 launchd plist 或 patch 残留时无法安全重跑的路径。
v0.6.0
新增
- 主机探测新增非交互 PATH、常见用户态目录与受限 login shell 的 dsh 嗅探信息;
dshc probe <host>和管理台 no_dsh 详情会给出场景化安装/配置指南。嗅探只用于诊断展示,
Center 仍不代装 dsh、web profile 或插件。
文档
- 使用手册新增 Agent Sidecar v0.7.0 下游集成契约:明确 C1–C5 清单、版本与远端
Python 兼容边界、no_dsh与远端零安装/零常驻行为,并声明该集成不提供远端注入;
同时新增跨仓库 integration issue form,要求关联 Sidecar issue、双方版本、复现与期望行为。