agentseed-mcp 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +178 -0
- package/LICENSE +202 -0
- package/README.ja.md +320 -0
- package/README.md +318 -0
- package/README.zh.md +306 -0
- package/bin/cli.js +37 -0
- package/mcp.json +12 -0
- package/package.json +30 -0
- package/plugin.json +22 -0
- package/server/.agentseed/verification-log.jsonl +2 -0
- package/server/__pycache__/guard_cli.cpython-313.pyc +0 -0
- package/server/__pycache__/guard_engine.cpython-313.pyc +0 -0
- package/server/__pycache__/test_cli.cpython-313-pytest-9.1.1.pyc +0 -0
- package/server/__pycache__/test_cli.cpython-313.pyc +0 -0
- package/server/__pycache__/test_features.cpython-313-pytest-9.1.1.pyc +0 -0
- package/server/__pycache__/test_features.cpython-313.pyc +0 -0
- package/server/__pycache__/test_guard.cpython-313-pytest-9.1.1.pyc +0 -0
- package/server/__pycache__/test_guard.cpython-313.pyc +0 -0
- package/server/__pycache__/test_hook.cpython-313-pytest-9.1.1.pyc +0 -0
- package/server/__pycache__/test_hook.cpython-313.pyc +0 -0
- package/server/__pycache__/test_manifests.cpython-313-pytest-9.1.1.pyc +0 -0
- package/server/__pycache__/test_manifests.cpython-313.pyc +0 -0
- package/server/__pycache__/test_server.cpython-313-pytest-9.1.1.pyc +0 -0
- package/server/__pycache__/test_server.cpython-313.pyc +0 -0
- package/server/engine/__init__.py +64 -0
- package/server/engine/__pycache__/__init__.cpython-313.pyc +0 -0
- package/server/engine/__pycache__/audit.cpython-313.pyc +0 -0
- package/server/engine/__pycache__/config.cpython-313.pyc +0 -0
- package/server/engine/__pycache__/hallucination.cpython-313.pyc +0 -0
- package/server/engine/__pycache__/imports.cpython-313.pyc +0 -0
- package/server/engine/__pycache__/plugin.cpython-313.pyc +0 -0
- package/server/engine/__pycache__/sandbox.cpython-313.pyc +0 -0
- package/server/engine/__pycache__/schema.cpython-313.pyc +0 -0
- package/server/engine/__pycache__/symbols.cpython-313.pyc +0 -0
- package/server/engine/__pycache__/version.cpython-313.pyc +0 -0
- package/server/engine/audit.py +84 -0
- package/server/engine/config.py +131 -0
- package/server/engine/hallucination.py +254 -0
- package/server/engine/imports.py +136 -0
- package/server/engine/plugin.py +367 -0
- package/server/engine/sandbox.py +287 -0
- package/server/engine/schema.py +193 -0
- package/server/engine/symbols.py +984 -0
- package/server/engine/version.py +17 -0
- package/server/guard_cli.py +455 -0
- package/server/guard_engine.py +111 -0
- package/server/guard_hook.py +404 -0
- package/server/guard_server.py +472 -0
- package/server/requirements.txt +7 -0
- package/server/test_cli.py +132 -0
- package/server/test_features.py +426 -0
- package/server/test_guard.py +828 -0
- package/server/test_hook.py +331 -0
- package/server/test_manifests.py +70 -0
- package/server/test_server.py +247 -0
- package/skills/verify-before-code/SKILL.ja.md +116 -0
- package/skills/verify-before-code/SKILL.md +140 -0
- package/skills/verify-before-code/SKILL.zh.md +117 -0
- package/skills/verify-before-code/references/DEFAULT-NORMS.md +52 -0
- package/skills/verify-before-code/references/HALLUCINATION-PATTERNS.ja.md +121 -0
- package/skills/verify-before-code/references/HALLUCINATION-PATTERNS.md +166 -0
- package/skills/verify-before-code/references/HALLUCINATION-PATTERNS.zh.md +145 -0
- package/skills/verify-before-code/references/PROMPT-POOL.ja.md +248 -0
- package/skills/verify-before-code/references/PROMPT-POOL.md +282 -0
- package/skills/verify-before-code/references/PROMPT-POOL.zh.md +252 -0
- package/skills/verify-before-code/references/SDD-CONTRACT.ja.md +61 -0
- package/skills/verify-before-code/references/SDD-CONTRACT.md +66 -0
- package/skills/verify-before-code/references/SDD-CONTRACT.zh.md +58 -0
- package/skills/verify-before-code/references/VENDOR-SOLUTIONS.ja.md +62 -0
- package/skills/verify-before-code/references/VENDOR-SOLUTIONS.md +62 -0
- package/skills/verify-before-code/references/VENDOR-SOLUTIONS.zh.md +54 -0
- package/skills/verify-before-code/references/VERIFICATION-CHECKLIST.ja.md +68 -0
- package/skills/verify-before-code/references/VERIFICATION-CHECKLIST.md +73 -0
- package/skills/verify-before-code/references/VERIFICATION-CHECKLIST.zh.md +68 -0
- package/skills/verify-before-code/scripts/check.ps1 +52 -0
- package/skills/verify-before-code/scripts/check.sh +44 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# SDD 契约 —— 规范驱动开发护栏
|
|
2
|
+
|
|
3
|
+
本契约由 `verify-before-code` 技能在**写码之前**加载。一个编程任务只有当它能对照
|
|
4
|
+
本契约表达,并且通过 AgentSeed 的 MCP 闸门时,才算合格。
|
|
5
|
+
|
|
6
|
+
## 1. 任务契约必须说明什么
|
|
7
|
+
|
|
8
|
+
写码之前,智能体必须能回答全部:
|
|
9
|
+
|
|
10
|
+
- **目标** —— 代码必须产生什么行为。
|
|
11
|
+
- **接口** —— 代码暴露的确切函数/类/端点名称与签名(不得自创调用方没要求的名字)。
|
|
12
|
+
- **输入与输出** —— 类型与结构,包括错误情况。
|
|
13
|
+
- **非目标** —— 明确说明哪些不在范围内(YAGNI)。
|
|
14
|
+
- **验证方式** —— "完成"如何被证明(一个测试、一条命令,或一次工具调用)。
|
|
15
|
+
- **风险等级** —— 关键/高/中/低(见验证清单)。
|
|
16
|
+
|
|
17
|
+
若其中任何一项未知,智能体必须停下来询问,而不是猜测。
|
|
18
|
+
|
|
19
|
+
## 2. 禁止模式(幻觉信号)
|
|
20
|
+
|
|
21
|
+
产出的代码中出现以下情况,即表示任务**尚未**完成:
|
|
22
|
+
|
|
23
|
+
- 用 `stub`/`mock`/`fake`/`placeholder`/`dummy`/`todo`/`fixme`/`tbd`/`tba`/
|
|
24
|
+
`not implemented`/`coming soon` 充当真实逻辑。
|
|
25
|
+
- 调用项目里从未定义或导入的函数/类(知识冲突幻觉——编造 API 占代码幻觉的
|
|
26
|
+
15.1%,见 arXiv:2404.00971)。
|
|
27
|
+
- 调用只在"最新版文档"里存在、而**已安装版本**里不存在的 API(先查锁文件)。
|
|
28
|
+
- 在需要计算值或拉取值的地方返回硬编码值。
|
|
29
|
+
- 不在本轮读取文件就引用其内容或行号(文件可能已变)。
|
|
30
|
+
- 完成报告中出现无证据附带的夸大词汇:
|
|
31
|
+
`guaranteed`、`definitely works`、`all tests pass`、`everything works`、
|
|
32
|
+
`fully tested`、`production ready`、`no bugs`、`works perfectly`、
|
|
33
|
+
`should work`、`trust me`。
|
|
34
|
+
|
|
35
|
+
## 3. 验证闸门(由 agentseed MCP 服务器运行)
|
|
36
|
+
|
|
37
|
+
| 工具 | 通过条件 |
|
|
38
|
+
| --- | --- |
|
|
39
|
+
| `verify_code` | `suspects` 为空(未使用任何未定义/未导入的符号) |
|
|
40
|
+
| `scan_hallucination` | `clean` 为 `true`,且无 `stub_code`/`oversold`/`fabricated` 命中 |
|
|
41
|
+
|
|
42
|
+
两者都通过,智能体才能报告完成。完成报告必须附上产生"通过"的证据
|
|
43
|
+
(命令、输出、文件)。
|
|
44
|
+
|
|
45
|
+
## 4. 失败处理
|
|
46
|
+
|
|
47
|
+
闸门失败时,智能体必须:
|
|
48
|
+
|
|
49
|
+
1. 阅读被标记的符号/行及其 `group`(`stub_code`/`oversold`/`fabricated`)。
|
|
50
|
+
2. 要么正确地实现/导入它,要么换成真实依赖,要么补上缺失的证据。
|
|
51
|
+
3. 重跑闸门直到通过。
|
|
52
|
+
4. 只有当某个告警确实无法消除时,才把它抛给用户——绝不要悄悄标记完成。
|
|
53
|
+
|
|
54
|
+
## 5. 配套资源
|
|
55
|
+
|
|
56
|
+
- `PROMPT-POOL.zh.md` —— 本契约每条规则的即用型提示词。
|
|
57
|
+
- `HALLUCINATION-PATTERNS.zh.md` —— 这些规则背后的失效模式目录。
|
|
58
|
+
- `VERIFICATION-CHECKLIST.zh.md` —— 任务收尾的可执行清单。
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# ベンダーソリューション — 幻覚防止技術と導入状況
|
|
2
|
+
|
|
3
|
+
> 主要ベンダー・学界・MCP エコシステムの幻覚防止技術マップ、および AgentSeed
|
|
4
|
+
> における各技術の導入先。
|
|
5
|
+
>
|
|
6
|
+
> 凡例:✅ 導入済み(プロンプト/ルール)· 🛠 AgentSeed MCP ツールとして実装済み
|
|
7
|
+
> · ➡️ 将来リリースで推奨 · 📄 リファレンスとして文書化済み。
|
|
8
|
+
|
|
9
|
+
## 1. 導入マトリクス
|
|
10
|
+
|
|
11
|
+
| 技術 | 提供元 | 仕組み | AgentSeed 内 |
|
|
12
|
+
| --- | --- | --- | --- |
|
|
13
|
+
| 「分からない」と言わせる | Anthropic / OpenAI | 不確実さを認めさせる | ✅ プロンプトプール D1/D2 |
|
|
14
|
+
| 直接引用グラウンディング | Anthropic | 推論前に引用文を抽出 | ✅ プロンプトプール C1/G1 |
|
|
15
|
+
| 引用検証 | Anthropic | 主張→裏付け引用、無ければ撤回 | ✅ プロンプトプール G1-J1 |
|
|
16
|
+
| 思考連鎖検証 | Anthropic / 学界 | 独立した批判的推論パス | ✅ プロンプトプール A2 |
|
|
17
|
+
| Best-of-N / 自己整合性 | Anthropic / 学界 | N 回実行して出力を比較 | ✅ プロンプトプール J3/J4 |
|
|
18
|
+
| 反復精錬 | Anthropic | 出力を再検証にフィードバック | ✅ プロンプトプール J3/J4 |
|
|
19
|
+
| 外部知識の制限 | Anthropic | 提供文書のみ、一般知識は使わない | ✅ プロンプトプール I2 |
|
|
20
|
+
| グラウンディング / RAG | Google / Microsoft / Progress | 回答を検索ソースに固定 | ✅ プロンプトプール I2 |
|
|
21
|
+
| 指示階層 | OpenAI | 衝突時 system > user > model | 📄 推奨 |
|
|
22
|
+
| 構造化出力(JSON Schema) | OpenAI / Guardrails AI | 信頼前にスキーマ検証 | 🛠 `schema_validate` |
|
|
23
|
+
| 入出力ガードレール | OpenAI Agents SDK | 違反でパイプライン停止 | ✅ 4 ゲート SKILL |
|
|
24
|
+
| 決定的実行 | CDV / サンドボックス実行 | テストを実行し結果を観察 | 🛠 `sandbox_run` |
|
|
25
|
+
| 二重チャネル min 融合 | CDV | 決定的 + LLM 批判者、拒否権 | ✅ SKILL ゲート 3/4 |
|
|
26
|
+
| 静的 AST 解析 | Axivion / tree-sitter MCP | 未定義シンボル = 捏造 API | 🛠 `verify_code` |
|
|
27
|
+
| NeMo 五種レール | NVIDIA NeMo Guardrails | 入力/対話/検索/実行/出力 | ✅ 4 ゲートにマップ |
|
|
28
|
+
| Automated Reasoning 検査 | AWS Bedrock | ポリシーの数学的検証 | 📄 推奨 |
|
|
29
|
+
| Granite Guardian リスク判定 | IBM | 幻覚/有害を検出するガードレールモデル | 📄 推奨 |
|
|
30
|
+
| バリデータハブ(50+) | Guardrails AI | プラグイン式バリデータ | ✅ プロンプトプール(サブセット) |
|
|
31
|
+
| 幻覚評価モデル | Vectara HHEM | 要約の無根拠コンテンツを検出 | 📄 推奨 |
|
|
32
|
+
| SelfCheckGPT / FActScore | 学界 | サンプリング比較 / 事実固定チェック | 📄 推奨 |
|
|
33
|
+
| 制約付きデコーディング | 学界(outlines) | 文法制約付き生成 | ➡️ ロードマップ(TS/Go) |
|
|
34
|
+
| 幻覚パターン分類法 | arXiv:2404.00971 | コード幻覚 5 分類カタログ | ✅ 幻覚パターンライブラリ |
|
|
35
|
+
|
|
36
|
+
## 2. ツール機能一覧
|
|
37
|
+
|
|
38
|
+
| 新機能 | 種類 | 導入した技術 |
|
|
39
|
+
| --- | --- | --- |
|
|
40
|
+
| `sandbox_run` | MCP ツール | 決定的実行チャネル(CDV チャネル A / Anthropic 実行検証 / AWS 推論検証の精神) |
|
|
41
|
+
| `schema_validate` | MCP ツール | 構造化出力検証(OpenAI 構造化出力 / Guardrails AI / OWASP LLM09) |
|
|
42
|
+
| Best-of-N + 反復精錬 | プロンプトプール | Anthropic 高度技術 J3/J4 |
|
|
43
|
+
| VENDOR-SOLUTIONS | リファレンス文書 | 完全な導入マップ(本ファイル) |
|
|
44
|
+
|
|
45
|
+
## 3. 次回推奨(将来リリース)
|
|
46
|
+
|
|
47
|
+
1. **制約付きデコーディング / 文法** — `schema_validate` のスキーマを生成側に
|
|
48
|
+
接続し(outlines 方式)、モデルが適合 JSON のみを生成するようにする。
|
|
49
|
+
2. **HHEM 型ファクトチェッカー** — 幻覚評価モデルをラップした任意のリモート MCP
|
|
50
|
+
サーバーを長文要約向けに提供。
|
|
51
|
+
3. **サンドボックス隔離強化** — `sandbox_run` へのリソース上限
|
|
52
|
+
(メモリ/ネットワーク/FS)追加(Docker/gVisor バックエンド)。
|
|
53
|
+
4. **TypeScript/Go 静的解析** — tree-sitter ベースの `verify_code` で非 Python
|
|
54
|
+
プロジェクトをカバー(現在は Python のみ)。
|
|
55
|
+
|
|
56
|
+
## 4. コンプライアンス維持の理由
|
|
57
|
+
|
|
58
|
+
上記はすべて Agent Plugins 1.0.0(§6/§7)が定義する `skills/` + `mcp.json` の
|
|
59
|
+
パッケージ構造内に収まります。この仕様はプラグインの**パッケージ方法と検出方法**
|
|
60
|
+
のみを定め、skill が**何を教えるか**、MCP サーバーが**どのツールを公開するか**は
|
|
61
|
+
制限しません。新ツールはすべて純標準ライブラリ Python(依存ゼロ)のため、クライアント
|
|
62
|
+
側のインストールは不要です。
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Vendor Solutions — Anti-Hallucination Techniques & Adoption Status
|
|
2
|
+
|
|
3
|
+
> A curated map of anti-hallucination techniques from major vendors, academia,
|
|
4
|
+
> and the MCP ecosystem — and where each one lives inside AgentSeed.
|
|
5
|
+
>
|
|
6
|
+
> Adoption legend: ✅ imported (prompt/rules) · 🛠 implemented as an AgentSeed
|
|
7
|
+
> MCP tool · ➡️ recommended for a future release · 📄 documented as reference.
|
|
8
|
+
|
|
9
|
+
## 1. Adoption matrix
|
|
10
|
+
|
|
11
|
+
| Technique | Source | Core mechanism | In AgentSeed |
|
|
12
|
+
| --- | --- | --- | --- |
|
|
13
|
+
| "I don't know" fallback | Anthropic / OpenAI | allow uncertainty instead of guessing | ✅ PROMPT-POOL D1/D2 |
|
|
14
|
+
| Direct-quote grounding | Anthropic | extract quotes before reasoning | ✅ PROMPT-POOL C1/G1 |
|
|
15
|
+
| Verify-with-citations | Anthropic | claim → find supporting quote, else retract | ✅ PROMPT-POOL G1-J1 |
|
|
16
|
+
| Chain-of-thought verification | Anthropic / academia | separate reasoning pass as critic | ✅ PROMPT-POOL A2 |
|
|
17
|
+
| Best-of-N / self-consistency | Anthropic / academia | run N times, compare outputs | ✅ PROMPT-POOL J3/J4 |
|
|
18
|
+
| Iterative refinement | Anthropic | feed output back for re-check | ✅ PROMPT-POOL J3/J4 |
|
|
19
|
+
| External knowledge restriction | Anthropic | only provided docs, not general knowledge | ✅ PROMPT-POOL I2 |
|
|
20
|
+
| Grounding / RAG | Google / Microsoft / Progress | answer anchored in retrieved sources | ✅ PROMPT-POOL I2 |
|
|
21
|
+
| Instruction hierarchy | OpenAI | system > user > model in conflict | 📄 recommended |
|
|
22
|
+
| Structured outputs (JSON Schema) | OpenAI / Guardrails AI | schema-validate before trust | 🛠 `schema_validate` |
|
|
23
|
+
| Input/output guardrails | OpenAI Agents SDK | halt pipeline on violations | ✅ 4-gate SKILL |
|
|
24
|
+
| Deterministic execution | CDV / sandboxed tool use | run the test, observe the result | 🛠 `sandbox_run` |
|
|
25
|
+
| Dual-channel min-fusion | CDV | deterministic + LLM critic, veto wins | ✅ SKILL Gate 3/4 |
|
|
26
|
+
| Static AST analysis | Axivion / tree-sitter MCP | undefined symbols = invented APIs | 🛠 `verify_code` |
|
|
27
|
+
| NeMo five rail types | NVIDIA NeMo Guardrails | input/dialog/retrieval/execution/output | ✅ mapped to 4 gates |
|
|
28
|
+
| Automated Reasoning checks | AWS Bedrock | mathematical verification of policies | 📄 recommended |
|
|
29
|
+
| Granite Guardian risk flags | IBM | guardrail model flags hallucination/harm | 📄 recommended |
|
|
30
|
+
| Validator hub (50+) | Guardrails AI | pluggable validators (PII, toxicity...) | ✅ PROMPT-POOL (subset) |
|
|
31
|
+
| Hallucination eval model | Vectara HHEM | detect unsupported content in summaries | 📄 recommended |
|
|
32
|
+
| SelfCheckGPT / FActScore | academia | sample-based / fact-grounded checks | 📄 recommended |
|
|
33
|
+
| Constrained decoding | academia (outlines) | grammar-constrained generation | ➡️ roadmap (TS/Go + grammar) |
|
|
34
|
+
| Hallucination-pattern taxonomy | arXiv:2404.00971 | 5-class code hallucination catalog | ✅ HALLUCINATION-PATTERNS |
|
|
35
|
+
|
|
36
|
+
## 2. Tool capabilities
|
|
37
|
+
|
|
38
|
+
| New capability | Type | Technique imported |
|
|
39
|
+
| --- | --- | --- |
|
|
40
|
+
| `sandbox_run` | MCP tool | Deterministic execution channel (CDV Channel A / Anthropic verify-with-execution / AWS reasoning spirit) — "tests pass" becomes an observed fact |
|
|
41
|
+
| `schema_validate` | MCP tool | Structured-output validation (OpenAI structured outputs / Guardrails AI validators / OWASP LLM09) — schema before trust |
|
|
42
|
+
| Best-of-N + iterative refinement | PROMPT-POOL | Anthropic advanced techniques J3/J4 |
|
|
43
|
+
| VENDOR-SOLUTIONS | reference doc | full adoption map (this file) |
|
|
44
|
+
|
|
45
|
+
## 3. Recommended next (future releases)
|
|
46
|
+
|
|
47
|
+
1. **Constrained decoding / grammar** — wire `schema_validate`'s schema into
|
|
48
|
+
generation (outlines-style) so the model can only emit conformant JSON.
|
|
49
|
+
2. **HHEM-style fact checker** — optional remote MCP server wrapping a
|
|
50
|
+
hallucination-eval model for long-form summaries.
|
|
51
|
+
3. **Sandbox isolation hardening** — resource caps (memory/network/fs) for
|
|
52
|
+
`sandbox_run` (Docker/gVisor backend).
|
|
53
|
+
4. **TypeScript/Go static analysis** — tree-sitter-based `verify_code` for
|
|
54
|
+
non-Python projects (current AST pass is Python-only).
|
|
55
|
+
|
|
56
|
+
## 4. Why these stay conformant
|
|
57
|
+
|
|
58
|
+
Everything above lives inside the `skills/` + `mcp.json` packaging defined by
|
|
59
|
+
Agent Plugins 1.0.0 (§6/§7). The spec constrains *how* a plugin is packaged and
|
|
60
|
+
discovered — it never constrains *what* a skill teaches or *what* tools an MCP
|
|
61
|
+
server exposes. New tools are pure standard-library Python (zero deps), so no
|
|
62
|
+
client-side installation is required.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# 厂商方案库 —— 防幻觉技术与引进状态
|
|
2
|
+
|
|
3
|
+
> 各大厂商、学术界与 MCP 生态的防幻觉技术地图,以及每一项在 AgentSeed 中的落点。
|
|
4
|
+
>
|
|
5
|
+
> 图例:✅ 已引进(提示/规则)· 🛠 已实现为 AgentSeed MCP 工具 · ➡️ 建议未来版本引入 · 📄 已文档化为参考资料。
|
|
6
|
+
|
|
7
|
+
## 1. 引进矩阵
|
|
8
|
+
|
|
9
|
+
| 技术 | 来源 | 核心机制 | 在 AgentSeed 中 |
|
|
10
|
+
| --- | --- | --- | --- |
|
|
11
|
+
| "我不知道"兜底 | Anthropic / OpenAI | 允许坦诚不确定,而不是猜测 | ✅ 提示池 D1/D2 |
|
|
12
|
+
| 直接引用接地 | Anthropic | 推理前先抽取原文引用 | ✅ 提示池 C1/G1 |
|
|
13
|
+
| 引用验证 | Anthropic | 声明→找支撑引用,找不到就撤回 | ✅ 提示池 G1-J1 |
|
|
14
|
+
| 思维链验证 | Anthropic / 学术界 | 用独立推理轮次做审查者 | ✅ 提示池 A2 |
|
|
15
|
+
| Best-of-N / 自一致性 | Anthropic / 学术界 | 跑 N 次对比输出 | ✅ 提示池 J3/J4 |
|
|
16
|
+
| 迭代精炼 | Anthropic | 把输出喂回去复查 | ✅ 提示池 J3/J4 |
|
|
17
|
+
| 外部知识限制 | Anthropic | 只用提供文档,不靠通用知识 | ✅ 提示池 I2 |
|
|
18
|
+
| 接地 / RAG | Google / Microsoft / Progress | 答案锚定检索来源 | ✅ 提示池 I2 |
|
|
19
|
+
| 指令层级 | OpenAI | 冲突时 system > user > model | 📄 建议 |
|
|
20
|
+
| 结构化输出(JSON Schema) | OpenAI / Guardrails AI | 信任前先过 schema | 🛠 `schema_validate` |
|
|
21
|
+
| 输入/输出护栏 | OpenAI Agents SDK | 违规即中断流水线 | ✅ 四道闸门 SKILL |
|
|
22
|
+
| 确定性执行 | CDV / 沙箱工具调用 | 跑测试,观察结果 | 🛠 `sandbox_run` |
|
|
23
|
+
| 双通道取最小 | CDV | 确定性 + LLM 批评者,一票否决 | ✅ SKILL 闸门 3/4 |
|
|
24
|
+
| 静态 AST 分析 | Axivion / tree-sitter MCP | 未定义符号 = 编造 API | 🛠 `verify_code` |
|
|
25
|
+
| NeMo 五类护栏 | NVIDIA NeMo Guardrails | 输入/对话/检索/执行/输出 | ✅ 映射到四道闸门 |
|
|
26
|
+
| 自动推理检查 | AWS Bedrock | 策略的数学验证 | 📄 建议 |
|
|
27
|
+
| Granite Guardian 风险标记 | IBM | 护栏模型标记幻觉/有害内容 | 📄 建议 |
|
|
28
|
+
| 验证器中心(50+) | Guardrails AI | 可插拔验证器(PII、毒性等) | ✅ 提示池(子集) |
|
|
29
|
+
| 幻觉评估模型 | Vectara HHEM | 检测摘要中无支撑内容 | 📄 建议 |
|
|
30
|
+
| SelfCheckGPT / FActScore | 学术界 | 采样比对 / 事实锚定检查 | 📄 建议 |
|
|
31
|
+
| 约束解码 | 学术界(outlines) | 语法约束生成 | ➡️ 路线图(TS/Go + 语法) |
|
|
32
|
+
| 幻觉模式分类法 | arXiv:2404.00971 | 代码幻觉五类目录 | ✅ 幻觉模式库 |
|
|
33
|
+
|
|
34
|
+
## 2. 工具能力清单
|
|
35
|
+
|
|
36
|
+
| 新能力 | 类型 | 引进的技术 |
|
|
37
|
+
| --- | --- | --- |
|
|
38
|
+
| `sandbox_run` | MCP 工具 | 确定性执行通道(CDV 通道 A / Anthropic 用执行验证 / AWS 推理验证精神)——"测试通过"变成可观测事实 |
|
|
39
|
+
| `schema_validate` | MCP 工具 | 结构化输出校验(OpenAI 结构化输出 / Guardrails AI 验证器 / OWASP LLM09)——先 schema 后信任 |
|
|
40
|
+
| Best-of-N + 迭代精炼 | 提示池 | Anthropic 进阶技术 J3/J4 |
|
|
41
|
+
| VENDOR-SOLUTIONS | 参考文档 | 完整引进地图(本文件) |
|
|
42
|
+
|
|
43
|
+
## 3. 建议下一步(未来版本)
|
|
44
|
+
|
|
45
|
+
1. **约束解码 / 语法** —— 把 `schema_validate` 的 schema 接入生成端(outlines 风格),让模型只能产出合规 JSON。
|
|
46
|
+
2. **HHEM 式事实检查器** —— 可选远程 MCP 服务器,包装幻觉评估模型用于长文摘要。
|
|
47
|
+
3. **沙箱隔离加固** —— 给 `sandbox_run` 加资源上限(内存/网络/文件系统),用 Docker/gVisor 后端。
|
|
48
|
+
4. **TypeScript/Go 静态分析** —— 用 tree-sitter 的 `verify_code` 覆盖非 Python 项目(当前 AST 仅支持 Python)。
|
|
49
|
+
|
|
50
|
+
## 4. 为什么这些都保持合规
|
|
51
|
+
|
|
52
|
+
以上一切都在 Agent Plugins 1.0.0(§6/§7)定义的 `skills/` + `mcp.json` 打包结构内。
|
|
53
|
+
规范约束的是插件**如何打包与发现**——从不约束 skill **教什么**或 MCP 服务器**暴露什么工具**。
|
|
54
|
+
新工具均为纯标准库 Python(零依赖),客户端无需任何安装。
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# 検証チェックリスト
|
|
2
|
+
|
|
3
|
+
> ガードレールの実行可能版。コーディングタスクの最後に実行する。
|
|
4
|
+
> 出典:SFD Lab 5 ステップ、DevelopersGlobal(リスク分類 + 検証レイヤー)、
|
|
5
|
+
> CDV 二重チャネル、reze83 先検証ルール。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## フェーズ 0 — リスク分類(開始前)
|
|
10
|
+
|
|
11
|
+
出力リスクを分類:
|
|
12
|
+
- **Critical** — 誤出力が危害を引き起こす(実行コード、法律、金融、医療)。
|
|
13
|
+
- **High** — 誤出力が大きな労力を浪費(大型リファクタ、デプロイ)。
|
|
14
|
+
- **Medium** — 面倒だが回復可能。
|
|
15
|
+
- **Low** — 外観のみ。
|
|
16
|
+
|
|
17
|
+
Critical/High は全検査、Medium/Low は軽量チェック。
|
|
18
|
+
|
|
19
|
+
- [ ] 実装開始前にリスククラスを決定した。
|
|
20
|
+
|
|
21
|
+
## フェーズ 1 — 契約チェック(コード作成前)
|
|
22
|
+
|
|
23
|
+
- [ ] 契約を 1 文で述べられる(挙動 / インターフェース / 範囲)。
|
|
24
|
+
- [ ] 暗黙の仮定を飲み込んでいない — 不明点は質問した、推測していない。
|
|
25
|
+
- [ ] 対象インターフェースが存在するか、承認のため明示的に提案されている。
|
|
26
|
+
|
|
27
|
+
## フェーズ 2 — 実装衛生
|
|
28
|
+
|
|
29
|
+
- [ ] stub/mock/fake/placeholder/dummy/TODO/FIXME をロジックの代用にしていない。
|
|
30
|
+
- [ ] 呼ぶ全シンボルがこのプロジェクトで定義・インポートされている。
|
|
31
|
+
- [ ] 外部 API は**インストール版**(ロックファイル)で確認した(最新ドキュメントではない)。
|
|
32
|
+
- [ ] デッドコードなし:各文の結果が消費されている。
|
|
33
|
+
- [ ] セキュリティ基本:入力検証、SQL インジェクション/XSS パターンなし、ハードコード
|
|
34
|
+
シークレットなし。
|
|
35
|
+
|
|
36
|
+
## フェーズ 3 — 実行証拠(ハードゲート)
|
|
37
|
+
|
|
38
|
+
- [ ] テストスイートを実行し、コマンド + 出力を貼れる。
|
|
39
|
+
- [ ] コードをエンドツーエンドで実行した(部分パスではない)。
|
|
40
|
+
- [ ] デプロイ/サービス層が実際に稼働していることを確認した(主張する場合)。
|
|
41
|
+
- [ ] 今ターンで引用するファイルを再読した(古いファイル主張なし)。
|
|
42
|
+
- [ ] 実行を伴う主張は `sandbox_run` で実証した。
|
|
43
|
+
- [ ] 構造化出力は `schema_validate` で検証した。
|
|
44
|
+
- [ ] `verify_code` → `suspects` 空。
|
|
45
|
+
- [ ] `scan_hallucination` → `clean: true`。
|
|
46
|
+
|
|
47
|
+
## フェーズ 4 — 言語監査(最終回答)
|
|
48
|
+
|
|
49
|
+
- [ ] すべての記述が OBSERVED、または INFERRED とラベル付け。
|
|
50
|
+
- [ ] 証拠なしの誇大語彙なし:guaranteed / definitely works / all tests pass /
|
|
51
|
+
everything works / fully tested / production ready / no bugs /
|
|
52
|
+
works perfectly / should work / trust me。
|
|
53
|
+
- [ ] 不確実さを正直に表現(「X を確認する必要があります」)、隠さない。
|
|
54
|
+
- [ ] 引用・リンク・統計は実在し、帰属可能。
|
|
55
|
+
|
|
56
|
+
## フェーズ 5 — 格下げルール
|
|
57
|
+
|
|
58
|
+
Critical/High で**一つでも未チェックならタスクは未完了**。「進行中」に格下げし、
|
|
59
|
+
どのチェックが失敗したかを正確に報告し、残作業を列挙する。黙って完了にしない。
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### クイックゲート(チャット型・非コード回答)
|
|
64
|
+
|
|
65
|
+
1. 読者は、私が提供した内容だけで主要主張を検証できるか?
|
|
66
|
+
2. 実際に見ていないものを引用していないか?
|
|
67
|
+
3. 不確実性を正直に表現しているか?
|
|
68
|
+
4. 数字・名前・リンク・政策を捏造していないか?
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Verification Checklist
|
|
2
|
+
|
|
3
|
+
> The executable counterpart of the guardrail. Run this checklist at the end of
|
|
4
|
+
> any coding task. Inspired by: SFD Lab 5-step checklist, DevelopersGlobal
|
|
5
|
+
> hallucination-prevention (risk classification + verification layers), CDV
|
|
6
|
+
> dual-channel verification, reze83 verify-before-claim rules.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Phase 0 — Risk classification (before starting)
|
|
11
|
+
|
|
12
|
+
Classify the task's output risk:
|
|
13
|
+
- **Critical** — wrong output causes harm (code executed, legal, financial, medical).
|
|
14
|
+
- **High** — wrong output wastes significant effort (large refactors, deployments).
|
|
15
|
+
- **Medium** — wrong output is annoying but recoverable.
|
|
16
|
+
- **Low** — cosmetic.
|
|
17
|
+
|
|
18
|
+
Apply full rigor to Critical/High; lighter checks to Medium/Low.
|
|
19
|
+
|
|
20
|
+
- [ ] Risk class assigned before implementation starts.
|
|
21
|
+
|
|
22
|
+
## Phase 1 — Contract check (before coding)
|
|
23
|
+
|
|
24
|
+
- [ ] I can state the contract in one sentence (behavior / interface / scope).
|
|
25
|
+
- [ ] No assumption is silently baked in — unknowns were asked, not guessed.
|
|
26
|
+
- [ ] The target interface exists or is explicitly proposed for approval.
|
|
27
|
+
|
|
28
|
+
## Phase 2 — Implementation hygiene
|
|
29
|
+
|
|
30
|
+
- [ ] No stub / mock / fake / placeholder / dummy / TODO / FIXME as logic.
|
|
31
|
+
- [ ] Every called symbol is defined or imported in this project.
|
|
32
|
+
- [ ] Every external API used was checked against the **installed** version
|
|
33
|
+
(lock file), not the latest docs.
|
|
34
|
+
- [ ] No dead code: every statement's result is consumed.
|
|
35
|
+
- [ ] Security basics: input validation, no SQL injection/XSS patterns, no
|
|
36
|
+
hardcoded secrets.
|
|
37
|
+
|
|
38
|
+
## Phase 3 — Execution evidence (the hard gate)
|
|
39
|
+
|
|
40
|
+
- [ ] I ran the test suite and can paste the command + output.
|
|
41
|
+
- [ ] I ran the code end-to-end (not a partial path).
|
|
42
|
+
- [ ] Deployment/serving layer is confirmed live (if claimed).
|
|
43
|
+
- [ ] I re-read any file I cite in this turn; no stale-file assertions.
|
|
44
|
+
- [ ] Claims that require running code were proven via `sandbox_run`.
|
|
45
|
+
- [ ] Structured outputs passed `schema_validate`.
|
|
46
|
+
- [ ] `verify_code` → `suspects` empty.
|
|
47
|
+
- [ ] `scan_hallucination` → `clean: true` (no stub/oversold/fabricated hits).
|
|
48
|
+
|
|
49
|
+
## Phase 4 — Language audit (final answer)
|
|
50
|
+
|
|
51
|
+
- [ ] Every statement is OBSERVED or labeled INFERRED.
|
|
52
|
+
- [ ] No overclaim vocabulary without evidence:
|
|
53
|
+
guaranteed / definitely works / all tests pass / everything works /
|
|
54
|
+
fully tested / production ready / no bugs / works perfectly /
|
|
55
|
+
should work / trust me.
|
|
56
|
+
- [ ] Uncertainty is expressed ("I need to check X", "I'm not certain"),
|
|
57
|
+
never masked.
|
|
58
|
+
- [ ] Citations, links, statistics are real and attributable.
|
|
59
|
+
|
|
60
|
+
## Phase 5 — Downgrade rule
|
|
61
|
+
|
|
62
|
+
If **any** item above is unchecked for a Critical/High task, the task is NOT
|
|
63
|
+
complete. Downgrade to "in progress", report exactly which checks failed, and
|
|
64
|
+
list the remaining work. Never silently mark done.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### Quick gate (for chat-style answers, non-coding)
|
|
69
|
+
|
|
70
|
+
1. Would a reader be able to verify my key claims from what I provided?
|
|
71
|
+
2. Did I cite anything I haven't actually seen?
|
|
72
|
+
3. Am I phrasing uncertainty honestly?
|
|
73
|
+
4. Did I invent any number, name, link, or policy?
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# 验证清单
|
|
2
|
+
|
|
3
|
+
> 护栏的可执行版本。任何编程任务收尾时跑一遍。灵感来源:SFD Lab 五步清单、
|
|
4
|
+
> DevelopersGlobal 防幻觉(风险分级 + 验证分层)、CDV 双通道验证、
|
|
5
|
+
> reze83 先验证后声称规则。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 阶段 0 —— 风险分级(开始前)
|
|
10
|
+
|
|
11
|
+
给任务输出定级:
|
|
12
|
+
- **关键(Critical)** —— 输出错误会造成伤害(被执行代码、法律、金融、医疗)。
|
|
13
|
+
- **高(High)** —— 输出错误浪费大量精力(大型重构、部署)。
|
|
14
|
+
- **中(Medium)** —— 输出错误烦人但可恢复。
|
|
15
|
+
- **低(Low)** —— 外观层面。
|
|
16
|
+
|
|
17
|
+
关键/高风险走全套;中/低风险做轻量检查。
|
|
18
|
+
|
|
19
|
+
- [ ] 实现开始前已确定风险等级。
|
|
20
|
+
|
|
21
|
+
## 阶段 1 —— 契约检查(写码前)
|
|
22
|
+
|
|
23
|
+
- [ ] 我能用一句话陈述契约(行为 / 接口 / 范围)。
|
|
24
|
+
- [ ] 没有默默吞进假设——未知项是问来的,不是猜的。
|
|
25
|
+
- [ ] 目标接口存在,或已明确提出待批准。
|
|
26
|
+
|
|
27
|
+
## 阶段 2 —— 实现卫生
|
|
28
|
+
|
|
29
|
+
- [ ] 没有用 stub / mock / fake / placeholder / dummy / TODO / FIXME 充当逻辑。
|
|
30
|
+
- [ ] 每个被调用的符号都在本项目内被定义或导入。
|
|
31
|
+
- [ ] 每个外部 API 都对照**已安装版本**(锁文件)核查过,而不是最新版文档。
|
|
32
|
+
- [ ] 无死代码:每条语句的结果都被消费。
|
|
33
|
+
- [ ] 安全底线:输入校验、无 SQL 注入/XSS 模式、无硬编码密钥。
|
|
34
|
+
|
|
35
|
+
## 阶段 3 —— 执行证据(硬闸门)
|
|
36
|
+
|
|
37
|
+
- [ ] 我运行了测试套件,可粘贴命令 + 输出。
|
|
38
|
+
- [ ] 我端到端运行了代码(不是部分路径)。
|
|
39
|
+
- [ ] 部署/服务层已确认在运行(若声称)。
|
|
40
|
+
- [ ] 本轮引用过的文件都已重读;无过期文件断言。
|
|
41
|
+
- [ ] 需要运行代码证实的声明已通过 `sandbox_run` 实证。
|
|
42
|
+
- [ ] 结构化输出已通过 `schema_validate` 校验。
|
|
43
|
+
- [ ] `verify_code` → `suspects` 为空。
|
|
44
|
+
- [ ] `scan_hallucination` → `clean: true`(无 stub/夸大/虚构命中)。
|
|
45
|
+
|
|
46
|
+
## 阶段 4 —— 语言审查(最终答复)
|
|
47
|
+
|
|
48
|
+
- [ ] 每句陈述为 OBSERVED,或标注为 INFERRED。
|
|
49
|
+
- [ ] 无证据时不使用夸大词汇:
|
|
50
|
+
guaranteed / definitely works / all tests pass / everything works /
|
|
51
|
+
fully tested / production ready / no bugs / works perfectly /
|
|
52
|
+
should work / trust me。
|
|
53
|
+
- [ ] 不确定性被如实表达("我需要先检查 X"、"我不确定"),绝不掩盖。
|
|
54
|
+
- [ ] 引用、链接、统计数字真实且有出处。
|
|
55
|
+
|
|
56
|
+
## 阶段 5 —— 降级规则
|
|
57
|
+
|
|
58
|
+
关键/高风险的任何一项未勾选,任务即**未完成**。降级为"进行中",明确报告
|
|
59
|
+
哪些检查失败,列出剩余工作。绝不悄悄标记完成。
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### 快速闸门(聊天类非代码答复)
|
|
64
|
+
|
|
65
|
+
1. 读者能否仅凭我提供的内容核实我的关键论断?
|
|
66
|
+
2. 我引用了任何我并未真正见过的东西吗?
|
|
67
|
+
3. 我是否诚实地表达了不确定性?
|
|
68
|
+
4. 我编造了任何数字、名称、链接或政策吗?
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# AgentSeed quick check - validate the plugin in the given directory.
|
|
2
|
+
# Usage: .\check.ps1 [-Strict] [plugin-dir]
|
|
3
|
+
#
|
|
4
|
+
# Locates guard_cli.py by walking up from this script until a plugin.json
|
|
5
|
+
# (the plugin root) is found; override with AGENTSEED_PLUGIN_ROOT.
|
|
6
|
+
param(
|
|
7
|
+
[switch]$Strict,
|
|
8
|
+
[string]$Target = "."
|
|
9
|
+
)
|
|
10
|
+
$ErrorActionPreference = "Stop"
|
|
11
|
+
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
12
|
+
|
|
13
|
+
$cli = $null
|
|
14
|
+
if ($env:AGENTSEED_PLUGIN_ROOT -and (Test-Path (Join-Path $env:AGENTSEED_PLUGIN_ROOT "server\guard_cli.py"))) {
|
|
15
|
+
$cli = Join-Path $env:AGENTSEED_PLUGIN_ROOT "server\guard_cli.py"
|
|
16
|
+
}
|
|
17
|
+
elseif ((Test-Path (Join-Path $here ".agentseed-plugin-root")) -or (Test-Path (Join-Path $here "..\.agentseed-plugin-root"))) {
|
|
18
|
+
$pf = Join-Path $here ".agentseed-plugin-root"
|
|
19
|
+
if (-not (Test-Path $pf)) { $pf = Join-Path $here "..\.agentseed-plugin-root" }
|
|
20
|
+
$root = (Get-Content $pf -Raw).Trim()
|
|
21
|
+
if ($root -and (Test-Path (Join-Path $root "server\guard_cli.py"))) {
|
|
22
|
+
$cli = Join-Path $root "server\guard_cli.py"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
$d = $here
|
|
27
|
+
foreach ($i in 1..5) {
|
|
28
|
+
$d = Split-Path -Parent $d
|
|
29
|
+
if (-not $d) { break }
|
|
30
|
+
if ((Test-Path (Join-Path $d "plugin.json")) -and (Test-Path (Join-Path $d "server\guard_cli.py"))) {
|
|
31
|
+
$cli = Join-Path $d "server\guard_cli.py"
|
|
32
|
+
break
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (-not $cli) {
|
|
38
|
+
Write-Error "cannot locate server/guard_cli.py. Install the full AgentSeed plugin, or set AGENTSEED_PLUGIN_ROOT to its directory."
|
|
39
|
+
exit 2
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
$py = if ($env:PYTHON) { $env:PYTHON } else { "python" }
|
|
43
|
+
if ($Strict) {
|
|
44
|
+
& $py $cli check $Target
|
|
45
|
+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
|
46
|
+
& $py $cli scan $Target --strict
|
|
47
|
+
exit $LASTEXITCODE
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
& $py $cli check $Target
|
|
51
|
+
exit $LASTEXITCODE
|
|
52
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# AgentSeed quick check - validate the plugin in the given directory.
|
|
3
|
+
# Usage: ./check.sh [--strict] [plugin-dir]
|
|
4
|
+
#
|
|
5
|
+
# Locates guard_cli.py by walking up from this script until a plugin.json
|
|
6
|
+
# (the plugin root) is found; override with AGENTSEED_PLUGIN_ROOT.
|
|
7
|
+
set -e
|
|
8
|
+
here="$(cd "$(dirname "$0")" && pwd)"
|
|
9
|
+
|
|
10
|
+
cli=""
|
|
11
|
+
if [ -n "$AGENTSEED_PLUGIN_ROOT" ] && [ -f "$AGENTSEED_PLUGIN_ROOT/server/guard_cli.py" ]; then
|
|
12
|
+
cli="$AGENTSEED_PLUGIN_ROOT/server/guard_cli.py"
|
|
13
|
+
elif [ -f "$here/.agentseed-plugin-root" ] || [ -f "$here/../.agentseed-plugin-root" ]; then
|
|
14
|
+
pf="$here/.agentseed-plugin-root"
|
|
15
|
+
[ -f "$pf" ] || pf="$here/../.agentseed-plugin-root"
|
|
16
|
+
root="$(cat "$pf")"
|
|
17
|
+
[ -f "$root/server/guard_cli.py" ] && cli="$root/server/guard_cli.py"
|
|
18
|
+
else
|
|
19
|
+
d="$here"
|
|
20
|
+
for _ in 1 2 3 4 5; do
|
|
21
|
+
d="$(dirname "$d")"
|
|
22
|
+
if [ -f "$d/plugin.json" ] && [ -f "$d/server/guard_cli.py" ]; then
|
|
23
|
+
cli="$d/server/guard_cli.py"; break
|
|
24
|
+
fi
|
|
25
|
+
done
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
if [ -z "$cli" ]; then
|
|
29
|
+
echo "error: cannot locate server/guard_cli.py." >&2
|
|
30
|
+
echo "Install the full AgentSeed plugin, or set AGENTSEED_PLUGIN_ROOT to its directory." >&2
|
|
31
|
+
exit 2
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
py="${PYTHON:-python3}"
|
|
35
|
+
command -v "$py" >/dev/null 2>&1 || py=python
|
|
36
|
+
|
|
37
|
+
target="${1:-.}"
|
|
38
|
+
if [ "$1" = "--strict" ]; then
|
|
39
|
+
target="${2:-.}"
|
|
40
|
+
"$py" "$cli" check "$target"
|
|
41
|
+
exec "$py" "$cli" scan "$target" --strict
|
|
42
|
+
else
|
|
43
|
+
exec "$py" "$cli" check "$target"
|
|
44
|
+
fi
|