Skip to content

sapbuddy-dsh

Verified

sapbuddy-dsh · v0.0.4 · MIT · Web UI

SapBuddy —— SAP ABAP AI 全能助手(DeepSeek Harness 插件):41 个 SAP 工具 + 8 个 ABAP 技能 + SapBuddy preset + 连接设置页。一个包名装完。

Install

dsh plugin add sapbuddy-dsh

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Tags

Readme

sapbuddy-dsh

SapBuddy 的 DeepSeek Harness(DSH) 底座: 41 个 SAP ABAP 工具 + 8 个 ABAP 技能 + agent preset sapbuddy + 三层写门禁 + 连接设置页。

面向 DSH 0.2.0-rc.2,需要 Node >= 22。一个包名装完全部。


安装

在 DSH 的 插件 → 添加插件 对话框里填:

sapbuddy-dsh

或命令行:

dsh plugin --profile <profile> add sapbuddy-dsh

装完必须完整重启 DSH(托盘退出,不是关窗口)——插件代码在宿主启动时加载。 重启后新建会话时选择 SapBuddy preset,并在 设置 → SAP 连接 里新建 SAP 连接。

⚠️ 手工安装前必须配好构建放行

依赖链里有个遥测包会注册构建脚本:

sapbuddy-dsh → abap-adt-api → io-ts-reporters → @scarf/scarf(遥测,无需构建)

pnpm 11 把「存在未批准的构建脚本」当错误(ERR_PNPM_IGNORED_BUILDS,退出码 1)。 而 dsh plugin add 在 pnpm 失败后不会再注册 bundle —— 包进了 node_modules, dsh.profile.bundles 却没更新,于是 preset 永远不出现,且没有任何明显报错。

在目标 profile 的 pnpm-workspace.yaml 里放行:

allowBuilds:
  '@scarf/scarf': false

或在仓库里跑安装器(会自动做这一步):

node scripts/install.mjs --profile desktop

包自身声明 pnpm.ignoredBuiltDependencies 不足以覆盖三级传递依赖(已实测), 必须在安装侧声明。

这个包往 profile 里插两条行

行 作用
sapbuddy-dsh(顶层) 设置页的 HTTP 路由,并让客户端页面被加载
preset 内的 sapbuddy-dsh/tools 41 个工具 + 写门禁 + 提示词注入

两条都必须存在,写法也受 DSH 约束(dsh-client-modules 只扫描顶层行、 且只认精确包名)。这也是包的主入口是设置页、工具走子路径的原因。 详见仓库 README 的「为什么只有一个包」。


首次运行会落盘什么

插件加载时把包内 defaults/ 中缺失的文件补写到配置根 (<DSH_HOME|~/.dsh>/.agent-presets/sapbuddy/),并创建 prompts/ logs/ output/ uploads/:

prompts/SYSTEM.md          # 铁律与输出约定(每次会话实时注入)
prompts/Memory.md          # 避坑记录,随会话累积
AGENTS.md                  # 项目开发指南
connections.example.json   # 连接配置示例(参考用)
settings.example.json

仅补缺,绝不覆盖——Memory.md 是累积数据,用户改过的 SYSTEM.md / AGENTS.md 同理。 配置根可用环境变量 SAPBUDDY_HOME 覆盖。

本包不创建 connections.json:那是用户数据(含凭据),请在 「设置 → SAP 连接」中新建,或参照 connections.example.json 手工创建。 密码在设置页的响应中脱敏为 ***。


写门禁

写操作受三层约束,任一层都能单独拒绝:

  1. 连接级只读 —— 连接未声明 security.readOnly: false 即拒写(连接级优先、顶层兜底, 读取失败 fail-closed)。连接级判定不会被"不传 connectionId"绕过,所以可以做到 开发系统可写、QAS/生产锁死。
  2. 开发客户端守卫 —— 读 T000.CCCATEGORY,默认只放行 C(定制/客户开发); 查不到时 fail-closed。生产系统(P)即使关掉只读也写不进去。
  3. 人工确认 —— 需用户批准(确认词须位于句首;窗口默认 15 分钟,见配置根 settings.json 的 approvalWindowMinutes)。

另有内容级硬校验:写入含用户可见中文字面量的代码会被拒(须走消息类 / 文本元素)。 命名空间强制:只写 Z*/Y*,SAP 标准对象只读。


工具清单

41 个工具覆盖:对象搜索 / 读码 / 代码定位、ADT 文档、ATC 检查、单元测试、SQL 查询、 DDIC(域 / 数据元素 / 结构 / 表)、文本池与文本元素、屏幕文字、消息类、函数模块接口、 传输请求、激活与语法诊断、Mermaid 校验等。

8 个技能:abap-code-review、abap-explain、abap-templates、abap-wiki、 clean-abap、dev-write、sap-abap-skills、translate-workflow。

完整清单见技能 sap-abap-skills/references/tool-guide.md(场景 → 工具 → 传参示例)。


导出

子路径 内容
sapbuddy-dsh(主入口) 顶层插件:设置页的 webServer 路由
sapbuddy-dsh/tools preset 内插件:41 工具注册 + 写门禁 + 提示词注入
sapbuddy-dsh/client 设置页浏览器端 bundle(dsh.client)

开发

pnpm install
pnpm --filter sapbuddy-dsh build   # clean + tsc + esbuild → dist/
pnpm --filter sapbuddy-dsh test    # 172 用例

技能与默认提示词分别在 skills/ 与 defaults/,两者都随包发布——改动后请跑一次 npm pack --dry-run 确认内容仍在(README.md 与 LICENSE 是 npm 自动收录的)。


链接

注意区分:npm 上的 sapbuddy 是上游 CLI 版;本包 sapbuddy-dsh 是 DSH 底座版。 旧的 sapbuddy-tools / sapbuddy-settings / sapbuddy-settings-ui 已合并进本包并弃用。

许可证

MIT。工具实现同步自上游 gxx950224/sapbuddy。

0.0.4

本版本基于已构建产物修改发布。取消 ABAP 源码硬编码中文的写入阻断;修复 Web 原生审批获批后未开启默认 15 分钟授权窗口的问题,写入与激活共用窗口。中文文案改为维护建议,其他连接与对象保护保持生效。