Pular para o conteúdo principal
Y

dsh-nexus

yuqiguang/dsh-nexus

Nexus 个人编码助理:在桌面端和消息渠道中安排、跟进与验收本机编码任务。Personal coding assistant for DSH.

Instalar

dsh plugin --profile web add github:yuqiguang/dsh-nexus

README

Nexus for DSH

Nexus — 你的个人编码助理。

基于 DeepSeek Harness(DSH),在桌面端、微信和飞书中安排、跟进与验收本机编码任务。你可以交代目标,让本机 Codex 或 Claude Code 执行,查看进度、回答关键问题,再根据验证结果继续修改。

Nexus 是第三方插件,通过公开接口接入 DSH 的模型、原生会话、后台任务、审批和恢复服务。目前源码插件版本为 0.2.52,精确匹配 DSH 0.2.0-rc.2,从 0.2.51 起正式发布。本机 DSH 和编码工具需要保持运行;手机渠道用于远程交互。

插件列表的名称与简介随 DSH 界面语言显示中文或英文:中文名为“Nexus 个人编码助理”,英文名为“Nexus for DSH”。安装预览提供中英双语简介。DSH 同时展示技术标识 dsh-nexus,以及 dsh-nexus/memory 等组件入口;从 0.2.32 起,安装包名和 GitHub 仓库名统一为 dsh-nexus;已有 nexus-next 安装需按迁移说明替换旧包。组件 ID 与数据存储标识保持不变。

现有能力

  • 交代目标:记录需求、共同约束和验收项,按步骤安排编码任务与依赖。
  • 跟进执行:连接本机 Codex 或 Claude Code,通过任务卡片和过程侧栏查看进度,在所属会话中处理提问、审批和继续修改。
  • 检查结果:执行指定的独立验证命令,汇总改动与验收项;区分“编码工具报告完成”“检查通过”和“用户确认业务效果”。
  • 继续工作:支持任务续接与失败步骤恢复,通过原生存储保留记录;渠道投递恢复与编码任务执行分开处理。
  • 手机协作:微信扫码、飞书用户配对、企业微信机器人,均绑定明确的消息所有者。文件通过支持交付的渠道发送,限于明确选择并通过权限检查的文件。

插件也包含记忆、邮箱、日历与待办,0.2.40 起新安装默认启用,均可在 插件 → Nexus → 组件 中按需关闭;DSH 原生定时提醒在任务页管理。新记忆按原生会话的项目目录和身份隔离,旧版记忆需由用户明确归类。

先完成一个编码任务

安装后可以先在 DSH 本地会话使用,渠道连接不是前置条件:

  1. 打开 设置 → 编码工具,选择默认工具,检查安装、凭据和平台状态。Codex 的系统安装可以沿用本机配置;Claude Code 使用 Nexus 专用配置,按页面指引登录或填写凭据。

  2. 在 DSH 原生工作区入口选择项目并新建会话。编码任务默认使用当前会话工作区;需要时可在「编码工具 → 通用 → 限制可用的工作目录」中添加额外限制,留空即可跟随会话。已有任务和续接保持原权限。

  3. 确认「工具状态检查」显示默认工具配置已准备,再在项目会话中交代需求,例如:

    在 D:/Projects/demo 中修复搜索结果重复的问题。保持现有接口,补充必要的回归检查,运行项目测试。结束后告诉我改了哪些文件、哪些检查通过,以及还需要我确认什么。

  4. 运行中的任务卡片固定在输入框上方,多任务可展开;任务结束后,结果卡片会显示在对应的“后台任务状态更新”上方。通知尚未显示时,底部保留可收起的结果。在任务卡片点 查看过程,或在设置页的「最近任务」点 查看任务与验收。详情显示目标、检查结果和验收状态;需要回答或继续修改时点 回到所属会话。任务结束后可以点 刷新结果 查看更新后的验收记录。

  5. 需要手机协作时,配置微信、飞书或企业微信,并在绑定的渠道会话中发起需要远程跟进的任务。渠道会话也会保留在 DSH 中。

连接渠道不会自动接管已有的桌面会话;工作目录相同也不代表会话相同。请在任务所属会话中继续操作。

「配置已准备」只表示本机配置检查通过,没有发起真实模型任务。指定检查通过也只说明这些检查通过;未执行的测试和需要人工确认的效果不能视为已经验收。

安装到桌面端

  1. 从 DSH 官网 安装桌面端,确认版本为 0.2.0-rc.2,并先完成模型配置。

  2. 在 插件 → 添加插件 中填写 npm 包名 dsh-nexus,也可填写下面的固定地址。安装完成后点击 立即启用。如果提示重启,从托盘完全退出后重新打开。

    https://github.com/yuqiguang/dsh-nexus/releases/download/install/dsh-nexus.tgz
    
  3. 先打开 设置 → 编码工具 完成上面的首次任务,再按需配置 渠道连接 和其他扩展。

  4. 需要提醒功能时,在 插件 → 官方 启用 自动化任务(@deepseek-ai/dsh-experimental-schedule-bundle)。

npm 从 0.2.41 起提供安装包,推荐入口为 dsh-nexus,默认获取 latest 正式版(next 暂同步兼容旧安装入口),或填写 dsh-nexus@0.2.51 固定版本。npm 和 GitHub 分发相同安装包;npm 镜像可能延迟同步,新版暂时找不到时可选择 npm 官方源,或使用上面的 GitHub 地址。通过 DSH 添加才能注册插件,普通 npm install 不会自动完成这一步。

固定地址及 npm 的 latest 标签随正式版发布更新,不需要改版本号;已安装插件从 0.2.39 起可选择空闲自动安装,见下方“插件更新”。当前固定地址指向的版本及兼容性说明见 固定安装入口。旧包 nexus-next 用户请先阅读迁移说明,避免同时加载两个包。

也可以从 版本 Releases 下载指定版本的 .tgz 和 SHA256SUMS,核对后填写本机绝对路径。Windows 示例:C:\Users\<user>\Downloads\dsh-nexus-0.2.51.tgz;不要填写 WSL 路径。桌面端自带安装所需的 CLI 和 pnpm。需要固定历史版本时,使用对应版本的下载链接。

编码工具现在支持「推荐版本」或「指定版本」。默认推荐 Codex 0.155.1、Claude Agent SDK 0.3.273;指定时填写完整版本号,可带预发布后缀,不支持 latest、版本范围或下载地址。先保存设置,再点击安装;保存、切回推荐或更新插件均不会自动替换现有工具。页面分别显示已安装版本、待安装版本与本次安装版本。Claude 的选择指 Agent SDK 及配套程序,与 Claude Code 命令显示的版本号不同。自定义版本尚未通过本插件兼容性验证,遇到问题可切回推荐版本重新安装。编码任务或沙箱配置进行中不能替换托管程序。

点击编码工具中的「安装托管版本」后,按钮旁会显示当前阶段、耗时和最近日志,可展开查看脱敏后的日志尾部。状态自动刷新;关闭设置页后安装仍继续,请保持 DSH 运行。主包与平台包显示实时下载速度和已下载量;下载源提供总大小时显示单包百分比,否则显示总大小未知。缓存读取单独标注;断流最多整包尝试三次,未完成的包不支持跨安装续传。安装总等待上限为 60 分钟,长时间无数据会提前失败;失败或超时会给出原因并允许重试。安装完成后仍需按页面检查凭据与运行状态。公开 npm 仓库显示域名和标准包路径,认证信息、查询参数与不确定的自定义路径会隐藏;两个工具共用安装目录,一次只安装一个,另一工具需等安装结束后手动点击,不会自动排队。

插件更新

从 0.2.39 起,Windows 桌面端提供 插件 → Nexus → 插件详情 → Nexus 更新:

  • 自动检查更新默认开启,DSH 运行期间每六小时检查一次 GitHub 发布版本并校验新包。
  • **空闲时自动安装(重启后生效)**默认关闭,按需开启。任务、消息投递和数据恢复结束,且连续两分钟没有会话活动后才安装;也可以手动检查、排队安装或取消。
  • 立即更新(0.2.43 起):检查到新版后可手动触发;无阻塞时立即开始安装,有运行任务、待投递消息、工具安装或数据恢复时显示具体等待原因,并可取消排队。自动更新等待期间也可手动触发,手动操作无需额外等待两分钟。旧版仍通过“空闲时安装”升级,重启后显示新按钮。
  • 安装前核对 SHA256、包结构、构建身份和 DSH 兼容性,并取得与当前运行构建一致的回退包。通过官方插件管理器更新,保留配置、原生数据和组件开关,不自动批准新的依赖脚本。
  • 安装成功后分别显示正在运行和已经安装的版本。待任务完成,从托盘完全退出并重新打开 DSH 才生效,不强制重启。
  • 安装失败时尝试恢复旧版文件,保留中断状态和重试回退入口;缺少可靠回退包时不安装,失败版本不会自动反复尝试。如果新版在重启后完全无法加载,需从对应 Release 下载旧包,通过 DSH 插件页恢复。

0.2.38 及更早版本需先手动升级一次:按官方插件页流程卸载旧插件,再添加新版安装包。卸载保留原生会话和渠道凭据。固定地址在新版发布后指向最新包,无需随版本修改。源码 Web 继续使用源码服务更新器;已卸载的插件不会被更新器重新安装。

组件开关

0.2.40 起,新安装的日历与待办、邮箱、长期记忆三个组件均默认启用,在 插件 → Nexus → 组件 中独立启停。已有显式关闭记录继续保留;邮箱仍需配置并启用账号后才连接。设置页显示实际运行状态;宿主提示需要重启时,等待任务结束后完全退出并重新打开 DSH。

一个安装包包含以下四个原生组件:

组件包内入口默认状态
Nexus 核心dsh-nexus启用
长期记忆dsh-nexus/memory启用
邮箱dsh-nexus/mail启用
日历与待办dsh-nexus/agenda启用

“Nexus 扩展”设置页和旧开关接口已移除。旧版模块开关不再生效,也不会重新启用已关闭的组件;原有配置和数据保留。需要继续使用时,请在原生组件列表中启用对应能力。

编码任务、验证、验收、文件交付和数据入口保留。渠道逐个连接;原生定时提醒仍在 DSH 任务页管理,本页不会取消已有提醒。静默时段、每日简报与语音配置仍在“助理”中管理。

文档使用官方能力

DSH 0.2.0-rc.2 桌面端提供 Word、Excel、PPT 技能及随附运行环境,支持常规读写编辑、结构检查、预览、PDF 导出和表格重算。Nexus 按当前会话实际可见的技能处理,不把导出成功当作排版验收通过。Web 部署需自行配置相应技能与依赖。

从 0.2.19 及更早版本升级: 自带文档兼容组件、设置页及 doc_read、doc_create、doc_edit、doc_convert 已移除,不再提供旧格式、Pandoc 转换和 PDF 文本提取的兼容路径。用户已有文档与本机已安装的软件保留。旧组件启停覆盖不会恢复已移除的能力;开发 profile 在初始化时清理对应旧插入项。

文件接收、查找、原生呈现、支持渠道的文件发送和编码成果打包继续保留,不依赖 Nexus 自带文档引擎。

邮箱组件

邮箱组件从 0.2.40 起新安装默认启用;曾关闭组件时先在 插件 → Nexus → 组件 中重新启用,再到 设置 → 邮箱与日程 配置和启用账号。组件提供收件查询、邮件搜索与阅读、发送确认、免确认收件人和收件提醒;邮件正文仍作为外部数据处理,附件必须位于当前会话工作区。

从 0.2.17 及更早版本升级: 旧版邮箱扩展开关不再生效,需要在组件页重新启用。账号配置、原生凭据、收件进度和提醒规则保留;组件关闭时仍可编辑账号、清除密码和删除规则。连接测试只在组件启用时可用,测试成功不表示持续连接已建立。

停用组件或切换账号后,旧审批和仍在读取附件、原邮件的请求不能继续发送;重新启用也不会恢复这些旧请求。已经提交给 SMTP 的发送会等待结果,停用无法撤回,也不会自动重试。切换账号会使用新邮箱的收件进度,不把其中的历史邮件作为新提醒重放。

设置页面由核心组件提供,关闭可选组件后仍可管理原有数据。

日历与待办组件

日历与待办组件从 0.2.40 起新安装默认启用;保持组件开启即可使用 calendar、todo 工具、到期提醒,以及每日简报中的日程和待办。提醒时间等偏好仍在 设置 → 邮箱与日程 管理;如果之前关闭了页面中的日历服务,也需在那里重新启用。

从 0.2.18 及更早版本升级: 原来的扩展开关已退休;0.2.40 起新安装默认启用,已保存的关闭状态仍需在组件页手动更改。已有日程、待办、完成状态、提醒进度和时间设置保留。关闭组件后,仍可在设置页删除日程、完成或删除待办;每日简报不再读取这些数据,也不会将关闭误报成“今天没有日程”。

停用立即停止接纳新的工具操作和提醒,已开始的数据写入和已被通知服务接纳的投递完成后再结束卸载。旧请求不能在重新启用后写入;迟到的提醒回执也不能恢复已删除的条目或覆盖后来编辑的内容。

已经被渠道或静默队列接收的通知仍按原规则投递,停用组件不会撤回。没有投递成功的到期提醒继续沿用原来的 30 分钟补发窗口;更早的记录标为错过,不集中重放。DSH 原生定时提醒由任务页独立管理,关闭本组件不取消它们。

项目记忆与旧数据

长期记忆组件从 0.2.40 起新安装默认启用,可在 插件 → Nexus → 组件 中按需关闭;从 0.2.16 及更早版本升级后,旧版记忆开关不再生效,需要在组件页重新启用。原有记忆、写入策略、项目与身份隔离均保留,不会因启用组件而改成自动写入。

启用后提供记忆工具、自动注入和渠道摘要写入;关闭后停止接纳新的模型操作,已经开始的存储写入完成后才结束卸载。等待项目范围确认的操作不能继续写入,已进入会话的旧记忆不会被撤回。设置 → 记忆 始终可以管理数据,页面显示组件实际运行状态;数据管理不受模型开关限制。

在 设置 → 记忆 选择范围,查看、导出、添加、编辑、批量删除或编辑后采纳记录。选择只影响设置页,不改变活动会话或文件权限。新的本机项目先在 DSH 中打开工作区;渠道范围在首次产生记忆后列出。

  • 模型只能写入和删除当前主会话项目的记忆;读取还包含同一身份下由用户明确保存的全局个人偏好。
  • 项目范围取自原生会话工作目录的真实路径,不根据对话内容或工具参数选择,不自动扩大到 Git 根目录。不同目录分别存储;子任务会话和没有有效目录的会话不使用记忆。
  • 渠道账号、绑定用户和聊天身份不同,记忆互不共享。本机与渠道也不会因为目录相同而共享;同一渠道聊天换会话后,仍可使用同项目的记忆。
  • 旧数据保留在“旧版未归类记忆(不注入)”。选择目标范围后可逐条复制,保留原记录,不覆盖已有同名画像;也可导出或删除。不会自动猜测项目归属。
  • 新写入和渠道摘要默认先待确认;可设置全局默认或当前范围覆盖,模型主动记忆与渠道摘要分别控制,也可恢复继承。升级保留旧版已关闭的写入或注入设置。记忆开关关闭后停止自动处理,但仍可管理数据。

代码结构和开发约定仍以仓库指令为准。记忆不代替任务历史或验收结果。删除停止后续检索与注入,已经进入会话上下文的内容不会被撤回。

记忆设置的事件每页 20 条,支持搜索当前范围的全部事件;最近注入每页 10 条,最多保留 200 条日志,旧日志自动清理。每个范围最多保存 1,000 条事件、60 条画像和 100 条待确认;达到事件上限后需先整理,普通记忆不会自动删除,自动保存的对话摘要满额时只替换最旧摘要。注入日志只是使用记录,清理日志不删除记忆,也不会把全部日志发给模型。导出可选择当前范围的画像、事件和待确认记录,不受分页或搜索影响;支持下载 JSON 并预览迁移到明确范围。默认保留已有画像、跳过重复事件,待确认不会自动采纳,也不导入账号绑定或策略。新注入日志保存当时内容快照,之后修改或删除记忆不会改写历史日志。

任务中断与消息未送达

打开任务的“查看过程”或“查看任务与验收”:

  • 恢复建议说明当前应处理提问、核对中断原因还是检查验证结果;有后续执行时可打开对应任务。旧版本任务先核对当前目标,不直接沿用旧验收结论。
  • 独立验证逐条展示检查通过、失败或未执行,并可展开命令输出。编码工具报告完成不等于检查通过,也不等于业务验收完成。
  • 当前目标恢复清单保留已通过步骤,列出前置任务和仍在执行的下游任务等阻塞。回到所属会话说明继续要求,实际恢复仍校验工作区、依赖和审批,不沿用一次性授权。

请求恢复: 任务详情会显示 Codex/Claude 自身的重试状态。短暂限流、网络中断或模型服务暂时不可用,在工具内部重试结束后可自动续接原编码会话,最多两次,默认等待 5 秒、15 秒;上游暴露更长的等待时间时予以尊重,超过两分钟则暂停。自动续接保留原任务、工作区锁、权限与总运行时限,等待期间可取消。额度耗尽、认证失败、原会话不可用、进程未清理或工作区权限变化时停止;普通命令和验证失败不会触发这项恢复。DSH 重启后不自动重放任务。会话续接不能保证外部操作恰好执行一次,编码工具会被要求先核对已有结果,再继续未完成工作。

有编码会话标识时可以尝试原上下文续接;没有标识时重试会开始新的编码执行,需先核对已有文件。是否能够续接由编码工具检查,详情页本身不会启动任务。

微信“消息投递恢复”显示已保存但尚未送达的回复。重试发送只补发未发送部分,不重跑任务、不重放审批提示。认证失效时使用原绑定账号重新扫码,回复窗口过期时由原绑定用户发送新消息。待发条数不是任务完成状态;在 DSH 的所属会话中查看实际结果。

自动化和电脑、微信协作

定时执行工作使用官方自动化,日历只发送保存的提醒文字。nexus_automation 可查询和修改同一已绑定聊天的新旧会话任务,保留原任务编号、执行会话及未修改字段;新建仍使用 schedule_create。关闭官方自动化后不会用日历代替执行,已有日历不会自动迁移。

在绑定微信的同一个 DSH 会话里从电脑继续聊天,助手最终回复也会发到微信,电脑输入的原文不会镜像发送;普通未绑定会话不会转发。电脑端完成后,原聊天会收到简短的审批结果或所选项回执,旧提示失效;不重复完整参数和自由填写内容。审批和原生提问同时呈现在电脑与绑定渠道,先完成的一端生效,另一端等待取消,旧指令失效。原生审批记录只保留一次;过长内容仍需在电脑查看完整信息后处理。

配置渠道和工作目录

项目通过 DSH 原生工作区和新建会话入口选择,编码工具设置不再保存另一份项目选择。新项目可放在 C:\Users\<user>\Documents\deepseek-harness\projects 下,每个项目独立一个子目录;已有 Git 仓库保留原位置即可。编码任务省略 cwd 即使用当前会话工作区,新项目可指定工作区内子目录;派发结果显示实际目录。编码工具的目录设置只作附加限制,不能扩大会话工作区。渠道收件目录可使用同级的 nexus,DSH 的 .dsh 留作应用数据。

Codex 与 Claude Code 共用托管安装目录,一次安装一个工具。npm 会检查已成功安装的另一工具的依赖;此前失败、没有完成标记的另一工具不会被顺带重试。两种工具仍分别记录安装完成状态和登录凭据。

三个渠道默认关闭。首次启用需要完成各自的认证和用户绑定:

渠道配置方式
微信扫码并确认授权,绑定确认扫码的账号
飞书填写 App ID 和 App Secret,在私聊发送配对码,再回到设置页确认绑定
企业微信填写智能机器人的 Bot ID、Secret 和允许的用户 userid

飞书应用需要启用机器人、长连接消息事件及相应权限,并对目标用户开放。

三个渠道能做的事不一样,按需选择:

能力微信飞书企业微信
单聊文本支持支持支持
入站图片、文件、语音支持不支持,仅文本不支持,仅文本
回传本机文件支持支持支持
待投递恢复(重启后补发未送达回复)支持暂不支持暂不支持

入站附件和待投递恢复目前只有微信具备。飞书和企业微信只处理单聊文本:发送图片、文件或语音不会进入会话,也不会收到“不支持”的提示。两者的发送不带投递记录,重启后不会补发;设置页的「恢复待投递」只对微信可用。需要附件往来或断线补发时使用微信。

渠道收件和一般助理操作可以使用独立目录,例如 Windows 下的 C:\Users\<user>\Documents\deepseek-harness\nexus。代码项目继续使用自己的仓库目录及开发指令,任务始终跟随所属会话工作区;如果配置了附加目录限制,需同时包含目标项目。

这些目录不必与 DSH 的数据目录放在一起,也不必把现有项目搬进 Nexus 工作区。目录位置本身不授予额外文件权限。目前首次保存渠道工作区需要先建立该渠道的连接配置;本地编码项目由 DSH 原生工作区入口选择,编码工具设置中的目录限制只作附加约束。

插件没有工作区覆盖配置时使用 $DSH_HOME/nexus-workspace,未设置 DSH_HOME 时为 ~/.dsh/nexus-workspace。也可以在宿主 profile 的 cordis.patch.yml 设置插件默认目录,例如:

- id: nexus-channels
  config:
    workspaceRoot: C:/Users/<user>/Documents/deepseek-harness/nexus

修改渠道工作目录后,下一条用户消息会在新目录建立会话。旧会话保留,工作文件不会自动搬迁。桌面端和源码运行的实例使用各自的数据与账号配置。

编码权限与审核

在“设置 → 编码工具 → 通用 → 派发模式”选择新任务的执行权限,默认仍为自动审核。任务不自动继承 DSH 主会话的完全权限,只读会话不能派发可写任务。

模式执行方式
自动审核(默认)标准模式:DSH 审核命令和额外权限,安全时自动授权,证据不足时询问用户
手动确认标准模式:命令和额外权限直接交给用户确认,常规项目文件操作仍自动执行
严格模式要求原生沙箱,限制写入与命令联网;可选择是否自动审核安全的额外操作
完全权限以当前系统用户权限执行,关闭 Codex / Claude 沙箱及 Nexus 的执行审批与拦截规则,可访问项目外文件、联网、发布及运行系统命令;不自动提升为管理员

完全权限仍保留目标澄清、会话归属、渠道身份绑定、取消和运行时限。它只改变派发编码任务的执行权限,不修改 DSH 主会话工具的权限设置,也不自动向渠道发送文件或凭据。任务起始目录仍必须在当前会话允许的工作区内;完全权限下该目录不构成执行隔离。

DSH 审核规则可以分别将命令、额外文件权限、独立网络请求设为自动审核或始终人工确认,并填写最多 4000 字补充审核要求(请勿填写密钥)。这些选项适用于已经需要审批的操作,不把项目内常规读写全部变成人工审批;独立网络规则不限制标准模式命令内部联网。补充要求交给审核模型解释,不能解除硬规则或明确拒绝;完全权限跳过执行审核规则。

派发默认以完整工作为单位:主助手明确目标、约束和交付方式,编码工具在同一会话内完成项目调查、修改和针对性自测;只有可独立执行、独立验收的工作才拆分。复杂需求可保存说明单而不拆成多个任务。已有目标不重复确认,同一说明单版本、任务目录和问题内容下可复用普通澄清回答;权限批准不缓存。普通澄清沿用原验收,不再附带“是否保留验证”的额外问题;需要调整验收时按目标变更处理。运行中补充执行细节可转给 Codex,修改说明单目标、约束或验收则先分析影响并停止旧版本。

新任务的 coder_status 详情和完成汇报提供排队、执行(含工具)、自动审核(含审核排队)、等待用户(含提问排队)、验证/收集改动和重试等待的互斥阶段耗时,以及审核请求和观察到的重试次数。它们不是纯模型推理耗时;历史记录不倒推,服务异常退出后的空白时间不计入执行耗时,重启最多统计到最后一次持久记录。编码工具在修改过程中做必要自测,宿主仍独立运行最终约定的验收;仅验证条件需要修正时使用仅复验,不重启编码工作。

派发时将真实工作目录、权限模式、审核规则、联网域名及时间预算写入原生任务记录;保存设置只影响新任务的权限,续接保留原快照,不会自动升级为完全权限。关闭自动审核仍会立即停止后续自动授权。设置中可调整每次运行时限(默认 60 分钟,1–240)和联网域名(默认 registry.npmjs.org,不支持通配符);完全权限不使用域名名单。

Codex 经 app-server 运行。每个回合使用原生 outputSchema 返回完成、需要用户输入或受阻状态;结果中的问号、FAQ 或可选建议不会自行触发等待。缺少有效结构化结果时报告协议错误,不猜测完成;原生提问工具仍正常工作。自动审核、手动确认和严格模式使用 untrusted 与 workspace-write,核对返回策略并在每个回合重设派发时的边界。标准模式允许任务所需联网,具体命令和额外权限经 DSH 安全审核;严格模式默认隔离网络,仅具体域名请求可匹配授权名单。这些模式保留任务目录写入和额外临时目录限制;写入沙箱不等于完整的宿主读取隔离。完全权限使用原生 never 与 danger-full-access,线程启动、续接和每个回合均保持该设置,并核对返回策略。

Claude Code 经 Agent SDK 运行,非完全权限模式使用 default,关闭项目设置加载并限定工具集,由 PreToolUse 和权限回调接入同一监工。标准模式由 DSH 审核具体命令,不提供操作系统文件或网络隔离;严格模式强制使用原生沙箱,禁止无沙箱重试,名单外网络被阻止。严格模式需要平台沙箱及其依赖,缺少时不静默降级。标准和严格模式的文件工具检查真实路径。完全权限使用原生 bypassPermissions、allowDangerouslySkipPermissions: true 并关闭沙箱,保留提问与取消回调;续接沿用原任务权限。

非完全权限模式下,请求归一后按以下规则处理:

  1. 硬规则保护 .ssh、.nexus、*.pem 等凭据路径并阻止明显破坏性命令。项目内 .env.example、.env.sample、.env.template 通过现有内容和完整拟写入内容检查后,可按普通文件创建、修改、读取和明确选择后打包;仅空值、占位符与受支持的本地非敏感配置自动通过。标准模式下,用原生文件工具写项目内实际 .env 或无法确认安全的模板时,交给用户单次确认,审批消息隐藏配置内容。实际凭据读取、shell 中的凭据操作、目录授权与目录外凭据仍受保护;严格模式不放开实际环境配置写入。git push、发布、提权、系统修改和其他高影响操作仍由用户确认。
  2. 习惯规则,确定性匹配,保存在原生 storage,只用来收紧或代答:deny 直接拒绝,answer 用固定答案回答提问。命令规则写命令开头的词(npm test、git commit),复合命令任何一段命中 deny 就拒绝;文件规则用相对任务目录的 glob(src/**、docs/*.md);提问规则用关键字加固定答案。习惯规则可以收紧硬规则升级的操作,不能放行它们。常规操作本来就放行,所以不再接受 allow 规则:coder_rules 只能加 deny 和 answer,项目规则块里的 allow 行被跳过,以前存下的 allow 规则保留但不再起作用,列表和设置页标注“已无作用,可删除”;升级提示里也不再有“允许并记住”。
  3. DSH 安全审核默认开启,建议与标准模式一起使用。标准模式按实际命令、权限和关联源码审核项目修改、测试、构建、依赖安装及联网操作;严格模式的额外授权范围更小。Python 审核包含静态导入、包入口、pytest 默认发现的测试、conftest 与配置;发现有条目、深度、文件数量和大小上限,不执行待审核代码。自定义发现、动态加载、链接或边界不明的内容会标记为证据不足。审核共享 180 秒时限;空响应、截断以及明确分类的网络、接口超时、限流或服务端异常最多重试一次,认证、额度及未知异常不盲目重试,明确拒绝不重试。记录安全的错误分类,不保存可能含凭据的原始接口错误;失败、超时或不确定时说明原因并交给用户。标准模式下,来源可核验的直接系统只读命令可在核对显式项目文件后免模型审核;仅支持有限 POSIX 命令,PowerShell 包装、PATH 命令、递归、额外权限和自定义审核要求继续审核。等待用户超时单独记录为暂停,不等于用户拒绝。相同任务中明确可复用的安全结论仅在 60 秒内、命令与权限及源码证据未变化时复用;人工审批不缓存。旧任务续接保留派发时的权限设置,关闭自动审核立即停止后续自动授权。
  4. 升级到用户。未获自动授权的额外操作、写到任务目录之外(或路径未知)的文件改动、以及编码工具的提问,通过原生提问服务发到派发任务的那个聊天,微信里看到的是“需要你补充信息 … 编码任务 ct-xxxx … Codex 请求:… 1. 允许 2. 拒绝”,回复“回答 1”即允许本次;Codex 的整回合额外权限申请被拒绝,必须改为具体命令或文件操作。“拒绝”只否决这一步,编码工具会接着做别的。编码工具自己的选择题按原选项列出,照常用“回答 序号”作答,自由回答用“回答 文本 内容”。
  5. 自动放行。任务目录内的普通文件修改、读取和已确认的配置模板无需逐次询问;标准模式命令仍先经安全审核,安全时自动通过。未识别的工具请求交给用户。自动审核可减少可核验安全操作的人工审批;若主动选择完全权限,执行操作不再进入上述审批流程。

从源码运行和打包

需要 Node.js 22.20.0 或更新版本,以及可用的 pnpm 命令(DSH 官方插件管理使用)。

npm ci
npm run build
npm test
npm start -- --no-open

源码启动会创建本项目独立的 .nexus/ 数据目录及 workspace/ 工作目录。构建同时生成固定的 dist/plugin.tgz;首次启动或构建变化时,通过 DSH 官方接口安装到同一 profile,因此“插件 → 已安装”中也能看到 Nexus 及四个组件。旧源码的直接文件入口会转为配置覆盖项,保留原有设置和组件开关;更新和回退按对应构建的安装包执行,普通重启不会重复安装。首次安装可能需要下载依赖。通过终端显示的本机地址打开 Web 界面并配置模型。登录地址包含访问凭据,请保留在本机。

构建插件安装包:

npm run build
npm pack

安装包包含编译后的插件、客户端设置页、配置层、许可证和发布说明。账号、会话、工作区、测试文件和内部文档不随安装包分发。公开发行包使用 npm 的 latest 标签发布正式版,同一份包同时上传 GitHub Release。维护者打包和发布步骤见 PUBLISHING.md。

验证

npm run check
npm run build
npm test
npm run smoke

请串行执行构建和测试,并在运行集成检查前停止其他 DSH 实例。集成检查使用独立临时数据目录、本地模拟模型和渠道;插件安装阶段需要下载依赖。

Linux / WSL 是主要开发环境。仓库包含 Windows 的本地验证脚本,但本地模拟检查不能代表真实账号、模型任务或所有桌面平台均已验收。DSH 候选版本和原生沙箱行为仍可能变化。

0.2.34 验证(2026-10-03):29 项相关单元检查和 63 项原生 DSH 生命周期检查通过,覆盖源码入口迁移、安装失败、配置修改、构建更新与回退、组件启停及卸载后的重启。以上为本版定向检查,旧版的包名迁移与审核修复结果分别保留在版本说明中。

验证使用本地模型和渠道夹具,没有运行真实模型编码任务、发送真实渠道消息或进行浏览器视觉验收。Windows 的历史检查覆盖本机安装、接口、审核夹具和旧任务读取,不代表 Windows 所有功能均已验收。详细范围和从 0.2.28 升级的变化见 CHANGELOG.md。

Windows 已知限制:Claude 严格模式及隔离回环验证不可用;标准模式的命令审批本身不等同于操作系统隔离。本机还曾复现 DSH rc.2 官方 Windows ACL runner 在 workspace-write 下以 0xC0000142 启动失败,该问题仍未解决。出现此错误表示进程未成功启动,不能当作验证已经执行或通过;Nexus 编码工具的执行与验证使用各自的适配路径。

后续完善方向

以下为计划,尚未作为完整体验提供:

  • 在原生工作区、任务详情与验收展示的基础上,完善总体目标工作台和任务操作。
  • 扩大 Windows 安装与真实任务流程验证,收集首次使用、任务恢复和旧记忆归类的反馈。

数据与权限

渠道授权通过 DSH 原生凭据服务保存,界面只返回脱敏配置。远程消息必须匹配已绑定用户;审批回复受所属会话约束。工作区路径不等于对整个宿主文件系统的授权。

Codex、Claude Code 和各渠道平台需要各自可用的账号与服务。标准模式中的命令审批不等同于操作系统隔离;严格模式依赖平台上的原生沙箱支持。Windows 桌面支持独立助手执行整体恢复;源码服务仍在启动前导入。其他桌面系统暂时只支持备份检查和记忆迁移。

设置 → 数据 可选择整体备份或指定范围的记忆迁移。备份默认包含会话和原生存储,登录凭据与源码 Nexus profile 配置可选;包含凭据必须设置至少 10 个字符的密码。加密备份使用 AES-256-GCM / scrypt,扩展名 .nxb;普通备份为 ZIP。密码丢失无法恢复,不含凭据的备份仍可能包含私人对话,应妥善保存。桌面 profile、附件与工作区文件需另行备份。

恢复前校验并显示版本、时间、数量和替换范围,确认绑定相同文件。v2 总是替换会话与存储,只替换选入的凭据和配置;未包含部分保留当前数据。旧版 v1 ZIP 仍按原整体替换语义读取。原数据留在运行目录的 replaced-时间/,源码服务在启动前换入;任务运行时拒绝整体恢复,安排重启后仍等待空闲。建议使用相同 DSH 版本恢复。导出和导入文件上限均为 256 MiB,解包数据上限 512 MiB。

Windows 桌面恢复要求备份标注的 DSH 版本与当前版本一致,且不包含源码 profile 配置。在“设置 → 数据”选择备份、预览后点击“准备桌面恢复 → 确认并启动恢复助手”,再从托盘菜单完全退出 DSH。助手不会强制停止任务,等待退出后才替换数据并重新打开桌面端;等待期间可取消。当前桌面配置、插件安装及未选入的凭据保留。恢复期间不要更新 DSH 或启动其他使用同一数据目录的实例。

恢复助手中断时,可运行页面提示的 <DSH_HOME>/nexus-restore/continue.cmd;未完成的替换先回退,已提交的替换完成收尾。回退受文件占用阻碍时会保留启动保护,解除占用后重试;此时不要在 DSH 错误页面重置配置或手动删除保护文件。原数据保留在 <DSH_HOME>/replaced-时间/。Windows 恢复检查脚本为 scripts/check-windows-desktop-restore.cjs,只使用虚构数据,不代表真实账号恢复验收。

请勿将 .nexus/、.dsh/、真实环境变量文件、认证地址或工作区中的私人文件提交到仓库。

Community & feedback

许可证与参与开发

Nexus 自有代码采用 MIT License,允许在保留版权和许可声明的条件下使用、修改和分发,包括商业使用。

本项目使用 DSH、飞书 SDK、企业微信 SDK 等第三方组件,其许可证和服务条款分别适用。Claude Agent SDK 及其配套程序不属于 Nexus 的 MIT 授权范围。安装包不包含 DSH、React 或 Claude Agent SDK 的实现,详见 第三方组件与许可。

问题反馈和代码贡献见 CONTRIBUTING.md。请提供插件和 DSH 版本、操作系统、脱敏后的错误信息以及可复现步骤。

各版本的改动与验证范围见 版本记录。

Plugins relacionados