🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

交互式 ACP 桥 ALwith-ai/dsh-agent

DeepSeek Harness
ALwith-ai16 天前有提交已提供中文文档扫描:含敏感能力

把 dsh 智能体接入桌面与编辑器客户端,支持流式对话

30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ALwith-ai/dsh-agent
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/10/20·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 16 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 25 处,展示前 20 条)
  • 发起网络请求
    src/bridge.ts:692
    const response = client.request(
  • 读取本地文件
    src/plugins.ts:758
    if (!existsSync(file)) return {}
  • 读取本地文件
    src/plugins.ts:761
    parsed = JSON.parse(readFileSync(file, "utf8"))
  • 写入本地文件
    src/plugins.ts:785
    mkdirSync(dirname(file), { recursive: true })
  • 写入本地文件
    src/plugins.ts:786
    writeFileSync(file, `${JSON.stringify(overrides, null, 2)}\n`)
  • 读取本地文件
    src/preset-package.ts:84
    if (!existsSync(root) || !statSync(root).isDirectory()) throw new Error(`preset package directory not found: ${root}`)
  • 读取本地文件
    src/preset-package.ts:84
    if (!existsSync(root) || !statSync(root).isDirectory()) throw new Error(`preset package directory not found: ${root}`)
  • 读取本地文件
    src/preset-package.ts:86
    if (!existsSync(manifestPath)) fail(root, `no ${PRESET_MANIFEST}`)
  • 读取本地文件
    src/preset-package.ts:89
    parsed = JSON.parse(readFileSync(manifestPath, "utf8"))
  • 读取本地文件
    src/preset-package.ts:109
    if (!existsSync(skillsDir) || !statSync(skillsDir).isDirectory())
  • 读取本地文件
    src/preset-package.ts:109
    if (!existsSync(skillsDir) || !statSync(skillsDir).isDirectory())
  • 读取本地文件
    src/persistence/alwith.ts:506
    async stat(id: SessionId, options?: SessionPersistenceStatOptions): Promise<SessionPersistenceSnapshot | undefined> {
  • 读取本地文件
    src/persistence/alwith.ts:515
    const identity = await stat(path, { bigint: true })
  • 读取本地文件
    src/persistence/alwith.ts:532
    const identity = await stat(artifact.path, { bigint: true })
  • 写入本地文件
    src/persistence/alwith.ts:623
    await truncate(path, truncateTo)
  • 写入本地文件
    src/persistence/alwith.ts:653
    await mkdir(dirname(path), { recursive: true })
  • 读取本地文件
    src/persistence/alwith.ts:751
    const before = fileRevision(await stat(path, { bigint: true }))
  • 读取本地文件
    src/persistence/alwith.ts:752
    const buffer = await readFile(path, { signal })
  • 读取本地文件
    src/persistence/alwith.ts:754
    const after = fileRevision(await stat(path, { bigint: true }))
  • 读取本地文件
    src/ptc-bun-loader.ts:18
    let source = readFileSync(args.path, "utf8")
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-group@deepseek-ai/cordis-plugin-include@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-loop@deepseek-ai/dsh-anonymous-user-id@deepseek-ai/dsh-app-boot@deepseek-ai/dsh-atomic-write@deepseek-ai/dsh-attachment@deepseek-ai/dsh-authorization@deepseek-ai/dsh-bash-local@deepseek-ai/dsh-bash-sandbox
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-agent DeepSeek Harness(dsh)的交互式 ACP v2 桥:把 dsh agent 暴露成可被桌面/编辑器客户端托管的聊天后端——逐 token 流、运行态直报(state_update)、权限桥、取消。树外插件形态,不 fork dsh,依赖钉死 npm 精确版本。 由 ALwith 维护;ALwith Desktop 是它的参考客户端(dsh 的桌面端形态)。上游的 ACP 实现是刻意的 automation-only(仅新会话、只发已提交输出),本桥补齐交互式一侧。 状态:developer preview。覆盖 session/new + prompt + 流式 + 状态直报 + cancel + session/resume(live-first 接续、JSONL 持久化冷恢复、客户端 replayFrom 游标历史回放)+ 沙箱优先工具面与升级审批 + 自动上下文压缩(dsh-compaction-basic:步间压力与上下文溢出恢复)、人工 /compact 命令与工具结果裁剪 + 委派工具(subagent / subagent_fork / send_message / list_agents / interrupt_agent,进程内 spawn 与 fork 后端)+ 会话中切模型(session/set_config_op
展开完整文档(README 剩余 1 节)
dsh-agent

DeepSeek Harness(dsh)的交互式 ACP v2 桥:把 dsh agent 暴露成可被桌面/编辑器客户端托管的聊天后端——逐 token 流、运行态直报(state_update)、权限桥、取消。树外插件形态,不 fork dsh,依赖钉死 npm 精确版本。

由 ALwith 维护;ALwith Desktop 是它的参考客户端(dsh 的桌面端形态)。上游的 ACP 实现是刻意的 automation-only(仅新会话、只发已提交输出),本桥补齐交互式一侧。

状态:developer preview。覆盖 session/new + prompt + 流式 + 状态直报 + cancel + session/resume(live-first 接续、JSONL 持久化冷恢复、客户端 replayFrom 游标历史回放)+ 沙箱优先工具面与升级审批 + 自动上下文压缩(dsh-compaction-basic:步间压力与上下文溢出恢复)、人工 /compact 命令与工具结果裁剪 + 委派工具(subagent / subagent_fork / send_message / list_agents / interrupt_agent,进程内 spawn 与 fork 后端)+ 会话中切模型(session/set_config_option)+ LLM 会话标题(先落确定性截断,后台一次生成升级)+ 全部 dsh 预设(standard / minimal / anchored / code PTC,跑在适配 Bun 的官方进程运行时上 / cordis 运行时检查模式,只读 Cordis 工具组 + 随捆 cordis-plugin-development skill)+ 面向宿主的 plugins / sessions 管理 CLI + 多厂商席位(ALWITH_DSH_PI_PROVIDERS:pi-ai 目录路由 —— openai / anthropic / google / xai / … —— 与 DeepSeek 适配器并挂)。

结构

| 文件 | 职责 |
| src/bridge.ts | ACP v2 服务器插件(改编自上游 automation-only v1 桥,MIT) |
| src/codec.ts | 线格式纯转换(改编自上游 codec) |
| src/plugins.ts | 插件清单:组合面即数据(逐预设 roster、核心行保护、用户覆盖) |
| src/compose.ts | 按清单组合运行时(不用 dsh loader/profile——组合确定性,Bun 可跑) |
| src/plugins-cli.ts | plugins 子命令:无活会话即可列出与开关插件 |
| src/sessions-cli.ts | sessions 子命令:经 dsh 自家 persistence 检查会话日志 |
| skills/ | 随预设捆入的 skill(vendor 自 dsh cordis 预设,MIT) |
| src/main.ts | stdio 入口,供宿主 spawn |

运行

需要 Bun(已用 1.4.2 验证);sidecar 不支持以 Node.js 运行。在仓库检出目录中,使用 bun install --frozen-lockfile 安装已锁定的依赖集合。

DEEPSEEK_API_KEY=… bun src/main.ts # stdio 上的 ACP v2 服务器
bun test # mock 适配器协议测试,不打真模型

session/resume 语义:replayFrom 省略 = 只恢复上下文;{ type: "start" } = 整段对话重放为 session/update 帧。每个进程只挂一个持久化 provider,由 ALWITH_DSH_PERSISTENCE 选择:dsh(默认)把 dsh 自己的 JSONL 日志存在 $ALWITH_DSH_SESSIONS_ROOT(默认 ~/.dsh-agent/sessions);alwith 把每个会话存成 ALwith 会话记录($ALWITH_DSH_PROJECTS_DIR/<项目键>/<sessionId>.jsonl,明文 JSONL,兼容 Claude Code 消息,dsh 事件原样保留)。选 alwith 时 session/resume 也能接续 ALwith CLI 写的记录:消息、工具调用与结果重建成 dsh 事件,思考块不进模型上下文。两个 provider 都实现 dsh 0.2.1-rc.2 的句柄合同(每会话单写者、实时事件路由与批量落盘屏障、首次追加前修复撕裂尾部、词表 fail-closed),并通过上游持久化契约测试。

session/prompt 在 Harness 将用户消息插入模型可见历史后立即返回 messageId,与实时 user_message 通知及保留的历史记录一致。回执不等待生成或轮末持久化检查点。排队消息若在插入前被取消,请求直接拒绝,不伪造回执。客户端用回执关联用户消息,并等待随后对应的 idle 事件判断完成。线上协议使用 ACP SDK 1.5.1 验证。

轮次结束(包括取消)在报告 idle 前等待 Agent 停稳及会话持久化检查点。忽略取消信号的工具可能延迟这一边界。取消尚未结束时拒绝新提示;活跃轮次中的空提示不会结束该轮。session/close 在释放 Agent 前排空待写事件,并取消后台标题任务。模型与检查点失败报告 _error,宿主据此保持失败待处理。

提示会等待已有切换结束;切换期间关闭会话会阻止替代 Agent 发布。切换先刷盘,未动过的空会话也会落盘,所以切换失败后任何会话都可通过 session/resume 恢复。

取消与关闭会主动丢弃待处理输入。没有私有的历史注入扩展:接续走 session/resume,由挂载的持久化 provider 提供。适配器必须响应中止信号,否则取消、关闭和退出都可能停滞。宿主可以设置进程退出期限,但强制终止可能丢失尚未刷盘的日志,恢复后历史可能不完整。后台标题收到中止信号后不会阻塞关闭。保留标准 ACP 错误码;面向人的错误消息不是稳定的机器解析接口。

在仓库检出目录中运行 python3 scripts/verify-package.py 可在本地验证打包产物。发布流程和验证器均使用 bun scripts/pack.ts,将 bun.lock 补入 Bun 生成的 tarball。验证器要求解包后的锁文件与仓库字节一致并记录 SHA256,执行生产依赖冻结安装(可能需要网络及原生构建环境),再通过声明的可执行入口对五个预设执行无需凭据的 ACP 检查。超时保护属于验证器,不属于桥接协议。日志和产物保留在输出路径;安装失败不会被绕过。packageManager 字段记录已验证的工具链,不强制运行时版本。发布包自带 Desktop 安装所需的锁文件。这不证明跨平台或真实模型厂商兼容性。

插件

各预设的组合面在代码里写死(确定性),但用户保有 dsh 的两个自由度——逐插件开关与逐插件配置——经覆盖文件($ALWITH_DSH_PLUGINS_FILE,默认 ~/.dsh-agent/plugins.json)生效;spawn 时读取,改动作用于新会话:

bun src/main.ts plugins list --preset standard # 该预设的全部行,JSON
bun src/main.ts plugins set tool-web disabled # 先校验再落盘

{ "disabled": ["tool-web"], "config": { "bash-sandbox": { "timeoutMs": 120000 } } }

核心行(session、llm、沙箱、审批…)不可停用;停用某行会让另一启用行的 requires 落空时,拒绝并给出确切改法——两者都在写盘前炸清楚。config 条目与该行默认配置浅合并。

License

MIT;改编自上游 @deepseek-ai/dsh-acp 的部分见 THIRD_PARTY_NOTICES.md。

Harness 0.2.1-rc.2

整套 Harness 发布集精确锁定到 0.2.1-rc.2。DeepSeek API key 路由使用 dsh-llm-deepseek-api-key;工具结果使用当前扁平的 tool 角色消息契约。Cordis 提供 cordis_inspect_list 和 cordis_inspect_query,不模拟已移除的编写工具。

PTC 宿主和子进程均运行 Bun。src/ptc-bun-loader.ts 使用 amaro 类型擦除和兼容 Bun 的继承管道流适配官方进程运行时,不需要 Node 可执行文件或旧 worker fork。文件隔离和运行时限仍生效;上游 V8 老生代堆限制在 Bun 下不生效。

ACP SDK 1.9 与运行时组合

桥接使用 ACP SDK 1.9.0。所有预设都挂载当前工具和子代理 API 必需的工作目录服务。JSONL 持久化使用上游模块插件,保留其依赖注入元数据;PTC 通过显式 launch 配置让宿主和子进程均使用 Bun。Harness 包与 Cordis peer 依赖固定为同一套上游发布版本。
预览分享卡片长什么样 ↓ALwith-ai/dsh-agent
分享 · DeepSeek Harness Hub
ALwith-ai/dsh-agent

把 dsh 智能体接入桌面与编辑器客户端,支持流式对话

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部