- 홈
- 플러그인
- 워크플로 및 자동화
- dsh-plugin-symbai-deepseek
dsh-plugin-symbai-deepseek
912d/dsh-plugin-symbai-deepseek
DeepSeek Harness용 화이트박스 규칙 작업대입니다. 자연어 규칙을 결정론적 171 atom 전방 연쇄 엔진으로 실행하는 읽기 쉽고 감사 가능한 규칙 체인으로 바꿉니다. 업무 기록은 기기에 남고 규칙 생성에는 필드명과 규칙 텍스트만 전송됩니다.
설치
dsh plugin --profile web add github:912d/dsh-plugin-symbai-deepseekREADME
SymbAI · 白箱规则工作台(DSH 插件)
用 DeepSeek 把大白话业务规则转成可读、可导出的规则链,再由 171 原子前向链引擎确定性执行。 业务数据全程留在本机:只有你主动点「生成规则」时,才会把需求文字与字段名交给 DeepSeek, 不发送任何一条数据记录;规则与数据分离,附完整逻辑库/数据库工作台。
- 白箱:每条结论可追到具体规则与字段级变更,可倒查、可复算;
- 两库分离:规则里只有字段名,数据一步都不动;
- 完整工作台:人工模式 7 种操作 + 大模型模式 + 数据库/原始表格/试算/审计;
- 本地优先:数据留本机,规则是可带走、可传阅的普通文件。
它最初为基层事务的规则判定而设计:逻辑库只存规则(只有字段名),数据库只存数据(原始表格只读 + sha256 校验)。 断网时,浏览、编辑、试算、写盘全部照常可用。
版本 0.2.5 | MIT | 包内自带整套 SymbAI 应用(app/,约 0.85 MB,供社区用户离线使用)。
English one-liner (for the catalog PR): A white-box rule workbench for DeepSeek Harness: turn plain-language rules into readable, auditable rule chains executed by a deterministic 171-atom forward-chain engine. Your business records stay on your machine — rule generation sends field names and rule text only, never data records.
一、安装后怎么用
- 安装 bundle 后刷新一次 Harness 页面(Client 插件需要重新加载模块图);
- 侧栏底部(设置按钮旁)出现 SymbAI 工作台 按钮;
- 点开即见全屏工作台,默认「本机通道」:
- 页面自动读取
data_dir下的逻辑库/规则/*.json、数据库/数据表/*.json; - 点「导出逻辑组 / 导出数据」时直接写回磁盘(写前校验 JSON,旧文件留
.bak); - 右下角角标可一键切换「浏览器通道」,面板顶部也有「本机通道 / 浏览器通道」切换;
- 页面自动读取
- 需要生成规则时,也可以直接在对话里说:「用 SymbAI 把……转成规则并试跑」,走三个 Agent 工具,使用 Harness 自带的 DeepSeek,无需另配 Key。
二、双通道(配置)
cordis.patch.yml:
config:
provider: '' # 留空 = 跟随 Harness 当前模型
model: ''
temperature: 0.2
maxTokens: 3000
app_dir: '' # 应用目录;留空=自动探测:工作区 AI/SymbAI2.0 → 否则用包内 app/
data_dir: '' # 规则/数据表目录;留空=与 app_dir 相同
file_channel: both # both(可切换)| host(只写盘)| browser(只下载/选择文件)
| 通道 | 导出 | 载入 | 适合 |
|---|---|---|---|
| 本机通道 Host | 直接 POST 写回磁盘(原子写 + .bak 备份) | 页面打开即读磁盘(Host 路由动态生成内置索引),改完点「刷新磁盘」 | Harness 内日常使用 |
| 浏览器通道 | 浏览器下载 JSON/XLSX/CSV | 选择文件/拖放 | 不想让插件碰磁盘、纯演示、或离线版 |
首装默认把 app_dir/data_dir 解析到当前工作区的 AI/SymbAI2.0(存在时),写的就是你项目里的真实规则;
社区用户没有该目录时自动使用包内 app/ 副本,写入也落在插件自己的副本里(可通过 data_dir 指到任意目录)。
二·补、主题适配(跟随 Harness 日间 / 夜间)
工作台 iframe 会自动识别 Harness 当前主题(父页面同源时读主题标记/背景亮度;否则跟随系统偏好):
- 日间:白底 + 紫字(正文/标题紫色
#5b2a86,强调紫#6b3fa0,边框淡紫;按钮、表格、输入框全部重绘); - 夜间:黑底 + 浅黄字(背景
#000,正文/标题浅黄#f2e6c0,强调黄#e6c56b);启动页顶栏用浅蓝色底 + 深色字,其余面板/表格/输入框/文档卡片统一深色; - 面板外壳(标题栏/按钮/边框/底栏)也按同一套颜色切换,不只是 iframe 内容;面板打开时把当前主题显式传给 iframe(
&theme=light|dark),避免主题判断不一致; - 主题变化会在 Harness 切换时自动跟随(父页面同源时观察 DOM 标记;否则刷新即可);
- 调试/截图可加
?theme=dark或?theme=light强制主题,例:http://127.0.0.1:<port>/symbai/逻辑库/逻辑库.html?host=1&theme=dark; - 两种主题的实测截图在
docs/light-逻辑库.png、docs/dark-逻辑库.png、docs/dark-数据库.png、docs/dark-启动.png。
二·补2、面板白屏排查
- 先刷新整页(插件刚启用/刚更新时,Client 需要重新加载模块;必要时重启 Harness);
- 面板底部有提示:点「新标签打开」直接访问
/symbai/启动.html,能打开说明路由正常、问题只在 iframe 缓存; - 让 Agent 调用
symbai_doctor:registered: false→ 看routeError(一般是 webServer 服务不可用/路径冲突),重启 Harness 后重试;registered: true但浏览器 404 → 确认访问的是当前 Harness 端口,并刷新;
- 仍异常时把
symbai_doctor的返回贴给维护者。
三、Host 路由与文件 API
| 路由 | 方法 | 说明 |
|---|---|---|
/symbai/ | GET | 整套工作台(原样服务 app/) |
/symbai/逻辑库/内置/内置逻辑.js | GET | Host 通道下从 data_dir 现读规则生成 |
/symbai/数据库/内置/内置数据表.js | GET | Host 通道下从 data_dir 现读数据表生成 |
/symbai/api/info | GET | 目录、通道、规则/数据表数量 |
/symbai/api/list?kind=rules|data | GET | 列出可读 JSON |
/symbai/api/read?kind=&name= | GET | 读取一个 JSON |
/symbai/api/write | POST | {kind,name,content} 写回磁盘 |
安全边界:只允许 逻辑库/规则/*.json 与 数据库/数据表/*.json 两个目录;禁止路径穿越、
禁止非 JSON 内容、禁止跨源请求、请求体上限 4 MB;原始表格(组1~4.xlsx)永远只读,没有任何写入 API。
四、Agent 工具(不变)
| 工具 | 作用 | 调用模型 |
|---|---|---|
symbai_generate_rules | 大白话需求 → SymbAI v2 规则组(两库边界校验 + 原子引用校验 + provenance) | 是(Harness DeepSeek) |
symbai_check_rules | 校验规则组:两库边界 / 条件可解析 / 原子 id 存在 | 否 |
symbai_run_rules | 171 原子前向链对 records 试跑,返回 final_state / 终止原因 / 逐轮变更 | 否(确定性) |
symbai_doctor | 诊断:工作台路由是否注册、应用/数据目录、通道、原子数;面板白屏时先调它 | 否 |
模型调用走 Harness 的 llm 服务(实测 deepseek-official / deepseek-flash),不直连外网、不另存 API Key。
生成结果带 nondeterministic: true、human_approved: false,人工确认后才应落库;max_iter 是"没算完"的显式信号。
五、包结构
index.js Host 半:3 个工具 + 工作台路由注册
client.js Client 半:侧栏按钮 + 全屏工作台浮层(iframe)+ 通道切换
host/routes.js 静态路由 / 动态内置索引 / 文件 API / 双通道判断
host/hostio.js 注入到应用页面的通道桥(导出写盘、角标、通道切换)
app/ 随包携带的完整 SymbAI 2.0 应用(启动页/逻辑库/数据库/文档)
lib/ 171 原子 + 前向链引擎 + IR(工具执行用)
locale/, icon.svg 插件市场展示元数据
scripts/sync-app.mjs 从工作区 AI/SymbAI2.0 同步应用进 app/(发布前运行)
六、开发与发布
# 同步最新应用进包(在包目录)
node scripts/sync-app.mjs
# 检查发布内容(社区发布前)
npm pack --dry-run --json --ignore-scripts
发布到社区(待作者决策):
private: true改为false;- 确认 npm 包名
dsh-plugin-symbai-deepseek可用; npm pack --dry-run核对文件(当前 56 个文件 / 解包约 1.1 MB;含app/、host/、lib/、client.js);npm publish,并把dsh字段(bundle.patch + client)与图标/文案提交到插件市场索引;- 发布前用真实 DeepSeek 额度复测 401/余额不足/超时错误路径(当前只有 mock 与正常路径实测)。
七、已知边界
- 面板是一个 iframe 承载的原应用,不是 React 重写;应用内的「大模型模式」仍走原版离线/本机桥逻辑, 在 Harness 里推荐用 Agent 工具(原生 DeepSeek)生成规则。
- 浏览器通道下仍受浏览器沙箱限制:保存=下载、载入=选择文件;本机通道才写盘。
- 22 个控制流/文件 IO/numpy 算法原子保持
unsupported(原设计口径),不会被伪造执行。 - 修改插件源码后需重启 Harness(或禁用/启用插件)才能加载新的 Host JS 代际;Client 半在刷新页面后生效。
八、本机实测(2026-11-05)
- 安装:
install_bundle→application: applied,v0.2.0;插件行include:symbai-deepseekactive; - Client 注册:
sidebar.footer.action→symbai-workbenchactive;shell.overlay→symbai-workbench-overlayactive; - Host 路由:
/symbai/api/info正常;/symbai/启动.html?host=1&selftest=1PASS 11/0, 逻辑库页 PASS 16/16,数据库页 PASS 8/8; - 双通道:本机通道页
__SYMBAI_HOST__=true,点「导出逻辑组」→ HTTP POST 写回磁盘成功,statusLine显示「已写入本机:…/AI/SymbAI2.0/逻辑库/规则/逻辑组_订单折扣.json」; 切到?host=0后__SYMBAI_HOST__=false,角标为「浏览器通道(下载/选择文件)」; - 文件 API:写接口 200;路径穿越、非 JSON 内容、浏览器通道写入均被拒绝;
- 打包:
npm pack --dry-run56 个文件、解包 1.13 MB(含完整app/)。