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

围棋对弈 raymondkm2025/dsh-go-game

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

圍棋 for the DeepSeek Harness。完整规则引擎、三级 AI 陪练、随机模拟死子估算、可选 LLM…

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

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

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

状态速览

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

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

验证判据与等级说明 →

可信度证据

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 32 处,展示前 29 条)
  • 读取本地文件
    lib/index.js:207
    sendText(res, readFileSync(path, 'utf8'), type)
  • 读取本地文件
    lib/index.js:352
    return readdirSync(SAVE_DIR).filter((f) => f.endsWith('.sgf')).map((f) => f.slice(0, -4)).sort()
  • 写入本地文件
    lib/index.js:673
    mkdirSync(SAVE_DIR, { recursive: true })
  • 写入本地文件
    lib/index.js:674
    writeFileSync(join(SAVE_DIR, label + '.sgf'), sgf(session.game), 'utf8')
  • 读取本地文件
    lib/index.js:686
    const text = readFileSync(join(SAVE_DIR, label + '.sgf'), 'utf8')
  • 发起网络请求
    lib/client.js:160
    return fetch(API + path, opts).then((r) => r.json())
  • 读取本地文件
    lib/gtp.js:43
    models = readdirSync(weightsDir).filter((f) => f.endsWith('.bin.gz')).sort()
  • 读取本地文件
    lib/gtp.js:49
    if (!existsSync(exePath)) return { ok: false, reason: 'engine-missing', exePath, modelPath: null, models: [] }
  • 读取本地文件
    lib/gtp.js:56
    if (!modelPath || !existsSync(modelPath)) {
  • 读取本地文件
    lib/gtp.js:64
    configPath: existsSync(configPath) ? configPath : null,
  • 读取本地文件
    lib/gtp.js:182
    if (!exePath || !existsSync(exePath)) return { ok: false, error: 'engine-missing' }
  • 读取本地文件
    lib/gtp.js:183
    if (!modelPath || !existsSync(modelPath)) return { ok: false, error: 'model-missing' }
  • 读取本地文件
    install-web-profile.mjs:35
    if (!existsSync(MANIFEST)) fail('profile manifest not found: ' + MANIFEST)
  • 读取本地文件
    install-web-profile.mjs:37
    const original = readFileSync(MANIFEST, 'utf8')
  • 读取本地文件
    install-web-profile.mjs:52
    const linkExists = existsSync(NM_LINK)
  • 写入本地文件
    install-web-profile.mjs:69
    mkdirSync(BACKUP_DIR, { recursive: true })
  • 写入本地文件
    install-web-profile.mjs:71
    copyFileSync(MANIFEST, join(BACKUP_DIR, 'web-package.json.bak'))
  • 写入本地文件
    install-web-profile.mjs:72
    copyFileSync(MANIFEST, join(BACKUP_DIR, 'web-package.json.' + stamp + '.bak'))
  • 写入本地文件
    install-web-profile.mjs:75
    writeFileSync(MANIFEST, next, 'utf8')
  • 读取本地文件
    install-web-profile.mjs:77
    JSON.parse(readFileSync(MANIFEST, 'utf8'))
  • 写入本地文件
    install-web-profile.mjs:81
    mkdirSync(dirname(NM_LINK), { recursive: true })
  • 读取本地文件
    install-web-profile.mjs:86
    target = lstatSync(NM_LINK).isSymbolicLink() ? 'junction ok' : 'exists (not a link)'
  • 发起网络请求
    lib/page.js:31
    return fetch('/dsh-go-game' + path, opts).then(function (r) { return r.json() })
  • 读取本地文件
    verify-install.mjs:40
    if (!existsSync(manifestPath)) {
  • 读取本地文件
    verify-install.mjs:43
    const pkg = JSON.parse(readFileSync(manifestPath, 'utf8'))
  • 读取本地文件
    verify-install.mjs:54
    if (!existsSync(linkPath)) {
  • 读取本地文件
    verify-install.mjs:59
    const st = lstatSync(linkPath)
  • 读取本地文件
    verify-install.mjs:105
    if (!existsSync(patchPath)) {
  • 读取本地文件
    verify-install.mjs:111
    const doc = yaml.load(readFileSync(patchPath, 'utf8'))
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的围棋插件:完整规则引擎、三级 AI、死子估算、LLM 复盘、SGF,以及可选的 KataGo GTP 桥接

README

由 DeepSeek 最新模型翻译生成
dsh-go-game 圍棋 for the DeepSeek Harness。完整规则引擎、三级 AI 陪练、随机模拟死子估算、可选 LLM 复盘、SGF 保存/读取——既能作为 DSH 面板(shell.overlay)使用,也能作为独立页面访问 /dsh-go-game/。 功能 规则(host 半边,纯 JS)。 19×19 / 13×13 / 9×9,中国数子规则(子 + 围住的空点),贴目与让子可配置,气尽提子,禁止自杀,简单劫(禁止立即回提),停一手 / 双方停一手终局,认输,无限悔棋,SGF 导入导出。死子判定是显式的:双方停一手后,标记死子(手动或由估算器标记),然后数子。 AI。 三级,全部跑在 host 进程里: | 级别 | 怎么下 | | easy 入門 | 随机合法落子,避开填自己的眼 | | medium 中級 | 贪心战术:提子、救被打吃的子、打吃对方、偏好形状/线位 | | hard 進階 | 用中级的候选着法列表,每个着法在墙钟预算内做轻量随机模拟打分 | 实话实说的局限: 这是陪练,不是引擎。19×19 上连 hard 也远不如人类业余棋手;9×9 上能下一盘像样的棋。 死子估算器。 形勢判斷 从当前局面跑随机模拟(避开填自己的眼),报告哪些子很少活下来,并给出逐点归属图,棋盘以半透明覆盖层渲染。
展开完整文档(README 剩余 1 节)
dsh-go-game

圍棋 for the DeepSeek Harness。完整规则引擎、三级 AI 陪练、随机模拟死子估算、可选 LLM 复盘、SGF 保存/读取——既能作为 DSH 面板(shell.overlay)使用,也能作为独立页面访问 /dsh-go-game/。

功能

规则(host 半边,纯 JS)。 19×19 / 13×13 / 9×9,中国数子规则(子 + 围住的空点),贴目与让子可配置,气尽提子,禁止自杀,简单劫(禁止立即回提),停一手 / 双方停一手终局,认输,无限悔棋,SGF 导入导出。死子判定是显式的:双方停一手后,标记死子(手动或由估算器标记),然后数子。

AI。 三级,全部跑在 host 进程里:

| 级别 | 怎么下 |
| easy 入門 | 随机合法落子,避开填自己的眼 |
| medium 中級 | 贪心战术:提子、救被打吃的子、打吃对方、偏好形状/线位 |
| hard 進階 | 用中级的候选着法列表,每个着法在墙钟预算内做轻量随机模拟打分 |

实话实说的局限: 这是陪练,不是引擎。19×19 上连 hard 也远不如人类业余棋手;9×9 上能下一盘像样的棋。

死子估算器。 形勢判斷 从当前局面跑随机模拟(避开填自己的眼),报告哪些子很少活下来,并给出逐点归属图,棋盘以半透明覆盖层渲染。这是估算,不是判定——估错的地方用 標記死子 改回来。

LLM 复盘(可选)。 覆盤 向 harness 的 llm 服务请求一段简短粤语点评加一个建议着法(本插件里不放 API key),面板提供一键落子。没配置模型时,退化为本地形势判断摘要。

目录结构

| 文件 | 面 | 作用 |
| lib/engine.js | shared | 规则:棋盘、提子、劫、数子、SGF——无 DOM,无 DSH 导入 |
| lib/ai.js | host | 启发式、模拟对手、死子估算器 |
| lib/gtp.js | host | 通往外部神经网络引擎(KataGo)的 GTP 桥 |
| lib/index.js | host | 会话 + 所有 /dsh-go-game/ 路由、LLM 复盘、SGF 文件 |
| lib/client.js | web | 注册在 shell.overlay 里的 React 面板 |
| lib/page.html、lib/page.js | web | 独立页面(同一批路由上的薄视图) |
| cordis.patch.yml | — | 把插件行插入 web 配置档名册 |
| test/.test.mjs | — | 98 个用例:26 引擎、11 AI、22 host 路由、26 GTP、13 引擎回退 |
| check-plugin.ps1 / .cmd | — | 只读安装检查 |

浏览器里不放任何规则:两个视图都只提交意图,然后重新渲染 host 返回的状态。

测试

node test/engine.test.mjs
node test/ai.test.mjs
node test/host.test.mjs
node test/gtp.test.mjs # GTP bridge, driven by an injected fake engine
node test/engine-fallback.test.mjs # engine selected but absent -> built-in AI
node test/katago-live.mjs --root=<katago dir> # real engine, skipped without --root

每个文件都直接跑;node --test 在这台机器上会失败(runner 会拉起一个带管道的子进程,沙箱不放行)。宿主测试套件用 mock webserver、mock req/res 和 mock llm 驱动真实路由,所以整条非 UI 链路都能离线覆盖。

KataGo(可选神经网络对手)

lib/ai.js 是启发式/推演练习对手。想要真实棋力,就用 lib/gtp.js 通过 GTP 驱动外部 KataGo 进程,与内置 AI 并存:面板里的 引擎 选择器每局挑一个,引擎缺失或损坏时自动回退到内置对手(原因会显示在面板里,不会悄悄吞掉)。

它查找的目录结构(相对于 workspace,也就是插件上一级):

katago/engine/katago.exe Eigen (CPU) build, or any other backend
katago/engine/default_gtp.cfg optional, ships with the release
katago/weights/.bin.gz one or more networks

环境变量覆盖:

| 变量 | 默认值 | 含义 |
| DSH_GO_GAME_KATAGO_ROOT | <plugin>/../../katago | 引擎与权重的根目录 |
| DSH_GO_GAME_KATAGO_THREADS | 4 | 搜索线程数(别超过核心数) |
| DSH_GO_GAME_KATAGO_VISITS | 250 | 每步的访问次数硬上限 |
| DSH_GO_GAME_KATAGO_TIME | 8 | 每步秒数 —— 限制 CPU 延迟 |
| DSH_GO_GAME_KATAGO_TIMEOUT | 90000 | GTP 命令超时(ms) |

GET /dsh-go-game/engine 返回可用性、网络列表和实时状态;POST /dsh-go-game/engine {model:"<file>"} 切换网络,会重启进程(KataGo 启动时只加载一个网络)。

在这台机器上实测 —— i5-8250U,4 线程,无 GPU,AVX2 Eigen 构建跑 b18c384:第一步约 11 秒(要加载 93 MB 的网络),之后每步约 8 秒,maxTime=8。因为搜索受时间限制,硬件越慢损失的是棋力而不是延迟。每次查询都会先显式 clear_board,再把棋局重放到干净的引擎棋盘上:同样大小的 boardsize 下 KataGo 不会* 清掉棋子,否则会冒出一个莫名其妙的「非法落子」。

安装(三步,在 DSH 之外)

智能体沙箱写不了 workspace 之外的地方,所以注册配置档得手动来 —— 在普通终端里跑这些:

1. 在生效的配置档 package.json(%APPDATA%\dsh-desktop\harness\profiles\web)里:把 "dsh-go-game": "link:C:/AppDev/DSH_WORKSPACE/dsh-go-game" 加进 dependencies,再把 "dsh-go-game" 追加到 dsh.profile.bundles。
2. 把 node_modules 指向源码目录(DSH 启动时不会跑 pnpm install,链接缺失会静默失败):

mklink /J "%APPDATA%\dsh-desktop\harness\profiles\web\node_modules\dsh-go-game" "C:\AppDev\DSH_WORKSPACE\dsh-go-game"

3. 重启 DSH。

check-plugin.cmd 随时可以验证整条链路的四个环节(package → 注册 → node_modules → 实时路由)。
路由在 loopback 上不鉴权,和其他本地插件一致: GET /dsh-go-game/status 返回 JSON,是验证存活最快的方式。

说明与未验证部分

- 会话存在宿主内存里(空闲 12 小时清理),以面板/页面生成的客户端 id 为键;重启 DSH 会清空它们。SGF 文件持久化在 <workspace>/.dsh-go-game/games/ 下。
- 推演估算器按设计是 CPU 密集型,且有预算限制(默认 1500 ms,40 次推演)。它跑在宿主上,所以面板永远不会阻塞。
- 尚未在真实 GUI 上验证:面板在 shell.overlay 内的渲染、它的指针事件行为,以及针对真实服务商的 LLM 复盘路径。引擎、AI 和每条路由都由离线测试套件覆盖。
预览分享卡片长什么样 ↓raymondkm2025/dsh-go-game
分享 · DeepSeek Harness Hub
raymondkm2025/dsh-go-game

圍棋 for the DeepSeek Harness。完整规则引擎、三级 AI 陪练、随机模拟死子估算、可选 LLM…

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