sapbuddy-dsh
Verifiedsapbuddy-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 手工创建。
密码在设置页的响应中脱敏为 ***。
写门禁
写操作受三层约束,任一层都能单独拒绝:
- 连接级只读 —— 连接未声明
security.readOnly: false即拒写(连接级优先、顶层兜底, 读取失败 fail-closed)。连接级判定不会被"不传connectionId"绕过,所以可以做到 开发系统可写、QAS/生产锁死。 - 开发客户端守卫 —— 读
T000.CCCATEGORY,默认只放行C(定制/客户开发); 查不到时 fail-closed。生产系统(P)即使关掉只读也写不进去。 - 人工确认 —— 需用户批准(确认词须位于句首;窗口默认 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 自动收录的)。
链接
- 仓库与完整文档:https://github.com/gxx950224/sapbuddy-dsh
- 上游 CLI / Web 版(pi 引擎):https://github.com/gxx950224/sapbuddy
- 问题反馈:https://github.com/gxx950224/sapbuddy-dsh/issues
注意区分:npm 上的
sapbuddy是上游 CLI 版;本包sapbuddy-dsh是 DSH 底座版。 旧的sapbuddy-tools/sapbuddy-settings/sapbuddy-settings-ui已合并进本包并弃用。
许可证
MIT。工具实现同步自上游 gxx950224/sapbuddy。
0.0.4
本版本基于已构建产物修改发布。取消 ABAP 源码硬编码中文的写入阻断;修复 Web 原生审批获批后未开启默认 15 分钟授权窗口的问题,写入与激活共用窗口。中文文案改为维护建议,其他连接与对象保护保持生效。