← 返回
未分类 中文

Council Pilot

Fully autonomous expert forum builder and project maturity engine. User delivers an idea, auto-distills domain experts from web sources, builds knowledge bas...
全自动的专家论坛构建与项目成熟度引擎。用户提交想法,系统自动从网络来源提炼领域专家,构建知识库...
wd041216-bit wd041216-bit 来源
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 384
下载
💾 0
安装
1
版本
#latest

概述

Council Pilot — Autonomous Pipeline

Build a fully automated expert-driven project from a single idea. The pipeline discovers experts, distills their public knowledge, forms a council, scores maturity, builds code, debugs, and iterates until the council awards 100/100. Then submits to GitHub.

Core Rule

Distill methods, evidence preferences, reasoning habits, critique patterns, and blind spots from PUBLIC sources only. Do NOT impersonate living persons, invent private beliefs, fabricate quotes, or treat expert profiles as primary evidence. Expert memory is an analysis lens, not truth.

Quick Start

# Full autonomous pipeline
python3 scripts/expert_distiller.py init --root ./forum --domain "AI Reliability" --topic "LLM hallucination detection"

Then invoke this skill with the domain idea. The skill handles everything from discovery to GitHub submission.

Autonomous Pipeline: 10 Phases

Phases 1-4 run once (setup). Phases 5-9 iterate until convergence. Phase 10 runs once at completion.

INIT → DISCOVER → DISTILL → COUNCIL → SCORE
                                        │
                             score < 100│
                                        ▼
          GAP_FILL ← RESCORE ← DEBUG ← BUILD
              │
              │ needs new experts
              ▼
           discover single → distill single → update council
              │
              │ score = 100 + all pass
              ▼
           SUBMIT (terminal)

Phase 1: INIT

Goal: Parse user idea into domain spec, initialize forum root.

Steps:

  1. Parse the user's idea/concept into a domain name and topic description
  2. Run CLI:

```bash

python3 scripts/expert_distiller.py init --root --domain "" --topic ""

```

  1. Initialize pipeline state:

```bash

python3 scripts/expert_distiller.py build --root --domain "" --target-repo ""

```

  1. Write the domain's coverage_axes — list 3-8 sub-domains the forum should cover

Output: Initialized forum root with domains/.json, directory layout, pipeline_state.json

Transition: → DISCOVER

Phase 2: DISCOVER

Goal: Web-search for expert candidates (3-8 people).

Steps:

  1. Generate search queries from the domain topic (see agents/expert-researcher.md)
  2. For each query, use the current environment's web search tool to search
  3. For each result, use the current environment's web fetch/open tool to read candidate pages
  4. Identify real public figures with domain expertise
  5. Collect source URLs classified by tier (A/B/C per references/source-gates.md)
  6. For each candidate, run CLI commands:

```bash

python3 scripts/expert_distiller.py candidate --root --domain --name "" --reason ""

python3 scripts/expert_distiller.py source --root --expert-id --tier A --title "" --url "<URL>" --note "<Note>"</p><p> python3 scripts/expert_distiller.py source --root <root> --expert-id <id> --tier B --title "<Title>" --url "<URL>" --note "<Note>"</p><p> ```</p><p><strong>Gate</strong>: At least 3 candidates with at least 1 Tier A + 1 Tier B source each</p><p><strong>Output</strong>: <code>candidates/<id>.json</code> + <code>source_dossiers/<id>.json</code> for each candidate</p><p><strong>Transition</strong>: → DISTILL</p><h3>Phase 3: DISTILL</h3><p><strong>Goal</strong>: Audit candidates, promote, fill profiles with LLM-driven distillation.</p><p><strong>Steps</strong>:</p><ol><li>For each candidate, run audit:</li></ol><p> ```bash</p><p> python3 scripts/expert_distiller.py audit --root <root> --expert-id <id></p><p> ```</p><ol><li>For candidates that pass audit (<code>promotion_allowed: true</code>), create profile:</li></ol><p> ```bash</p><p> python3 scripts/expert_distiller.py profile --root <root> --domain <domain> --expert-id <id> --name "<Name>"</p><p> ```</p><ol><li>For each promoted expert, fill the profile by reading source content:</li><ul><li>Read source URLs with the current environment's web fetch/open tool</li><li>Extract career arc, reasoning patterns, critique styles, blind spots</li><li>Write the filled profile to <code>experts/<id>/profile.json</code></li><li>Write the distillate markdown to <code>experts/<id>/distillate.md</code></li><li>Follow the contract in <code>references/profile-contract.md</code></li></ul><li>Rebuild index:</li></ol><p> ```bash</p><p> python3 scripts/expert_distiller.py index --root <root></p><p> ```</p><p><strong>Gate</strong>: At least 2 experts with fully filled profiles</p><p><strong>Output</strong>: <code>experts/<id>/profile.json</code> + <code>experts/<id>/distillate.md</code> for each promoted expert</p><p><strong>Transition</strong>: → COUNCIL</p><h3>Phase 4: COUNCIL</h3><p><strong>Goal</strong>: Form expert council with auto-assigned roles.</p><p><strong>Steps</strong>:</p><ol><li>Create council:</li></ol><p> ```bash</p><p> python3 scripts/expert_distiller.py council create --root <root> --domain <domain> --name "<Domain> Main Council"</p><p> # Optional: --experts id1,id2,id3 to specify which experts (default: all)</p><p> ```</p><ol><li>Review the auto-assigned roles (chair, reviewer, advocate, skeptic)</li><li>If needed, manually adjust with <code>council add-member --role <role></code></li></ol><p><strong>Output</strong>: <code>councils/<council_id>.json</code> with members, roles, weights, routing rules</p><p><strong>Transition</strong>: → SCORE (first pass)</p><h3>Phase 5: SCORE (First Pass)</h3><p><strong>Goal</strong>: Initial scoring — all axes start at 0 (no artifact exists).</p><p><strong>Steps</strong>:</p><ol><li>Run score command:</li></ol><p> ```bash</p><p> python3 scripts/expert_distiller.py score --root <root> --domain <domain></p><p> ```</p><ol><li>This first pass records baseline 0/100 — everything needs building</li></ol><p><strong>Output</strong>: <code>scoring_reports/<domain>_<timestamp>.json</code> with total=0</p><p><strong>Transition</strong>: → BUILD (always needs work on first pass)</p><h3>Phase 6: BUILD</h3><p><strong>Goal</strong>: Generate project code guided by expert lenses, targeting weakest axes.</p><p><strong>Steps</strong>:</p><ol><li>Read the scoring report to identify weakest axes</li><li>For each expert in the council, extract build guidance:</li><ul><li><code>reasoning_kernel.core_questions</code> — what they'd ask</li><li><code>reasoning_kernel.preferred_abstractions</code> — what concepts they use</li><li><code>advantage_knowledge_base.anti_patterns</code> — what to avoid</li><li><code>domain_relevance.best_used_for</code> — where they add value</li></ul><li>Generate code that:</li><ul><li>Addresses the specific gaps from the scoring report</li><li>Uses patterns experts would approve</li><li>Avoids anti-patterns experts would flag</li><li>Follows expert testing and quality preferences</li></ul><li>Write code to the target repo path</li><li>Record build context:</li></ol><p> ```bash</p><p> python3 scripts/expert_distiller.py build --root <root> --domain <domain> --target-repo <repo_path></p><p> ```</p><p><strong>Agent</strong>: Use <code>project-builder</code> agent for code generation</p><p><strong>Output</strong>: Project source code at target repo path</p><p><strong>Transition</strong>: → DEBUG</p><h3>Phase 7: DEBUG</h3><p><strong>Goal</strong>: Verification loop — build, types, lint, tests, security, diff.</p><p><strong>Steps</strong>:</p><ol><li><strong>Build</strong>: Run the project's build command. Fix failures.</li><li><strong>Type Check</strong>: Run type checker. Fix errors.</li><li><strong>Lint</strong>: Run linter. Fix warnings.</li><li><strong>Tests</strong>: Run test suite. Fix failures.</li><li><strong>Security</strong>: Scan for secrets, injection, OWASP top 10.</li><li><strong>Diff Review</strong>: Check for regressions and scope creep.</li></ol><p>For each stage failure:</p><ul><li>Max 3 retries per failure type</li><li>Tag failure with impacted scoring axis (see <code>references/build-integration.md</code>)</li><li>If 3 retries exhausted, feed failure to GAP_FILL</li></ul><p><strong>Agent</strong>: Use <code>project-builder</code> agent for build failure fixes</p><p><strong>Transition</strong>:</p><ul><li>All PASS → RESCORE</li><li>Any FAIL (after retries) → GAP_FILL with failure details</li></ul><h3>Phase 8: RESCORE</h3><p><strong>Goal</strong>: Full 4-axis scoring with council debate protocol.</p><p><strong>Steps</strong>:</p><ol><li>Run score command against the artifact:</li></ol><p> ```bash</p><p> python3 scripts/expert_distiller.py score --root <root> --domain <domain> --artifact <repo_path></p><p> ```</p><ol><li>For each axis, apply expert council debate (see <code>references/council-protocol.md</code>):</li><ul><li>Each expert scores independently using their reasoning kernel</li><li>Skeptic challenges high scores (>20)</li><li>Advocate affirms low scores (<15)</li><li>Compute weighted median per axis</li></ul><li>Sum axes for total (0-100)</li><li>Update pipeline state with new scores</li><li>Generate report:</li></ol><p> ```bash</p><p> python3 scripts/expert_distiller.py report --root <root> --domain <domain> --format markdown</p><p> ```</p><p><strong>Agent</strong>: Use <code>maturity-scorer</code> agent for adversarial scoring</p><p><strong>Output</strong>: Updated <code>scoring_reports/<domain>_<timestamp>.json</code></p><p><strong>Transition</strong>:</p><ul><li>total = 100 + verification all PASS → SUBMIT</li><li>total < 100 → GAP_FILL</li><li>Score regression (>10 point drop) → PAUSE and flag</li></ul><h3>Phase 9: GAP_FILL</h3><p><strong>Goal</strong>: Analyze gaps, add experts if needed, determine build focus.</p><p><strong>Steps</strong>:</p><ol><li>Run coverage analysis:</li></ol><p> ```bash</p><p> python3 scripts/expert_distiller.py coverage --root <root> --domain <domain></p><p> ```</p><ol><li>Analyze scoring report for specific gaps per axis</li><li>Determine action:</li><ul><li><strong>Missing expertise</strong> → DISCOVER single candidate (fast-track), DISTILL, add to council:</li></ul></ol><p> ```bash</p><p> python3 scripts/expert_distiller.py council add-member --root <root> --council-id <id> --expert-id <new_id> --fast-track</p><p> ```</p><ul><li><strong>Knowledge gaps</strong> (no new expert needed) → BUILD with focus on specific gaps</li><li><strong>Score regression</strong> → Revert to previous approach, BUILD differently</li></ul><ol><li>Update pipeline state history</li></ol><p><strong>Agent</strong>: Use <code>gap-analyst</code> agent for coverage analysis</p><p><strong>Output</strong>: <code>gap_analyses/<domain>_<timestamp>.json</code> with recommendations</p><p><strong>Transition</strong>: → BUILD (next iteration)</p><h3>Phase 10: SUBMIT</h3><p><strong>Goal</strong>: Submit converged artifact to GitHub.</p><p><strong>Steps</strong>:</p><ol><li>Run final verification (all 6 stages must PASS)</li><li>Generate final report:</li></ol><p> ```bash</p><p> python3 scripts/expert_distiller.py report --root <root> --domain <domain> --format markdown --output MATURITY_REPORT.md</p><p> ```</p><ol><li>Create git branch: <code>council-pilot/<domain_id></code></li><li>Commit all changes with format:</li></ol><p> ```</p><p> feat(council-pilot): <domain> maturity 100/100</p><p> Breadth: 25/25 | Depth: 25/25 | Thickness: 25/25 | Effectiveness: 25/25</p><p> Expert council: <council_name> (<expert_count> experts)</p><p> Iterations: <iteration_count></p><p> ```</p><ol><li>Push branch and create PR:</li></ol><p> ```bash</p><p> git push -u origin council-pilot/<domain_id></p><p> gh pr create --title "Expert-Distilled: <domain>" --body-file MATURITY_REPORT.md</p><p> ```</p><ol><li>Update pipeline state: <code>status: submitted</code></li></ol><p><strong>Output</strong>: GitHub PR URL</p><p><strong>Transition</strong>: Terminal (pipeline complete)</p><h2>Convergence Criteria</h2><p>The pipeline terminates ONLY when ALL conditions are met:</p><ol><li>Maturity score = 100 (breadth=25, depth=25, thickness=25, effectiveness=25)</li><li>Verification loop: all 6 stages PASS</li><li>No coverage gaps flagged by gap analyst</li><li>Council consensus that artifact is submission-ready</li></ol><p>A score of 100 means the expert council cannot find meaningful improvements. This is intentionally hard to achieve.</p><h2>Loop Parameters</h2><table><thead><tr><th>Parameter</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>-----------</td><td>---------</td><td>-------------</td></tr><tr><td><code>--max-iterations</code></td><td>10</td><td>Maximum BUILD→DEBUG→RESCORE cycles</td></tr><tr><td><code>--target-repo</code></td><td>current dir</td><td>Where to build the project</td></tr><tr><td><code>--quick</code></td><td>false</td><td>Reduce to 2 experts, max 3 iterations</td></tr></tbody></table><h2>State Persistence</h2><p>Pipeline state is stored in <code><root>/pipeline_state.json</code>:</p><ul><li>Current phase, iteration count, score history</li><li>Target repo, GitHub branch, active council</li><li>Experts added mid-loop (flagged for later review)</li><li>Build failures and score regressions</li></ul><p>Each iteration reads state at start, writes at end. Context can be safely compacted between iterations.</p><h2>Dynamic Expert Addition</h2><p>The pipeline can add new experts mid-loop:</p><ol><li>Gap analyst identifies uncovered sub-domain</li><li>Expert researcher discovers 1-2 targeted candidates (fast-track)</li><li>Minimum viable sources collected (1 Tier A + 1 Tier B)</li><li>Abbreviated audit → skeleton profile → add to council</li><li>Fast-tracked experts start with weight cap 0.2 (vs 0.3)</li><li>After 2 scoring cycles, fast-track flag is removed</li></ol><p>Maximum 2 new experts per iteration. Total council size must not exceed 10.</p><h2>Failure Recovery</h2><table><thead><tr><th>Failure</th><th>Recovery</th></tr></thead><tbody><tr><td>---------</td><td>----------</td></tr><tr><td>Max iterations reached</td><td>Pause, generate report, print current state</td></tr><tr><td>Build failure after 3 retries</td><td>Log failure, continue to GAP_FILL</td></tr><tr><td>Score regression (>10 points)</td><td>Pause, revert to previous artifact</td></tr><tr><td>Context window pressure</td><td>Write state to disk, compact, resume</td></tr></tbody></table><h2>Search Tools</h2><p>Use whichever web research surface is available in the active agent runtime:</p><ul><li>In Codex, use the built-in web search/open workflow when current public sources are needed.</li><li>In Claude Code, use configured web-search MCP tools if they are installed.</li><li>If no web tool is available, run <code>discover --from-file</code> with a curated JSON source list and mark the run as source-file assisted.</li></ul><h2>Safety and Trust</h2><ul><li>Require at least one Tier A and one Tier B source before promotion</li><li>Never use Tier C sources to define core beliefs, bio_arc, signature_ideas, critique_style, or quote_bank</li><li>Mark stale or weakly sourced fields as tentative</li><li>Preserve source refs and freshness metadata with every profile</li><li>Downgrade conclusions that rely only on expert memory</li><li>Never fabricate quotes — all quotes must be verbatim or clearly marked as paraphrases with source attribution</li><li>Expert memory is an analysis lens, not primary evidence</li></ul><h2>Fast Commands (Manual Mode)</h2><p>All CLI commands work standalone without the autonomous pipeline:</p><pre><code># Initialize python3 scripts/expert_distiller.py init --root ./forum --domain "My Domain" --topic "Description" # Add candidate and sources python3 scripts/expert_distiller.py candidate --root ./forum --domain "my-domain" --name "Expert Name" --reason "Why" python3 scripts/expert_distiller.py source --root ./forum --expert-id expert-name --tier A --title "Source" --url "https://..." --note "Note" # Audit, profile, validate python3 scripts/expert_distiller.py audit --root ./forum --expert-id expert-name python3 scripts/expert_distiller.py profile --root ./forum --domain "my-domain" --expert-id expert-name --name "Expert Name" python3 scripts/expert_distiller.py validate --root ./forum --strict # Council management python3 scripts/expert_distiller.py council create --root ./forum --domain "my-domain" python3 scripts/expert_distiller.py council list --root ./forum python3 scripts/expert_distiller.py council show --root ./forum --council-id my-domain-main # Scoring and analysis python3 scripts/expert_distiller.py score --root ./forum --domain "my-domain" --artifact ./project python3 scripts/expert_distiller.py coverage --root ./forum --domain "my-domain" python3 scripts/expert_distiller.py report --root ./forum --domain "my-domain" --format markdown # Discovery and maintenance python3 scripts/expert_distiller.py discover --root ./forum --domain "my-domain" --from-file candidates.json python3 scripts/expert_distiller.py refresh --root ./forum --stale-only </code></pre></div> </div> </div> <div id="tab-versions" class="detail-content"> <div class="detail-section"> <h2>版本历史</h2> <p style="margin-bottom:12px;font-size:14px;color:#94a3b8;">共 1 个版本</p> <ul class="version-list"> <li> <div> <span class="version-tag">v1.0.0</span> <span style="font-size:11px;color:#5b6abf;margin-left:8px;background:#eef0ff;padding:1px 8px;border-radius:10px;">当前</span> </div> <div style="font-size:12px;color:#94a3b8;"> 2026-05-03 11:17 安全 安全 </div> </li> </ul> </div> </div> <div id="tab-security" class="detail-content"> <div class="detail-section"> <h2>安全检测</h2> <div class="sec-grid"> <div class="sec-card"> <h4>腾讯云安全 (Keen)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://tix.qq.com/search/skill?keyword=2c553d665e26b8a8601a40c14ad80926" target="_blank">查看报告</a> </div> <div class="sec-card"> <h4>腾讯云安全 (Sanbu)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://static.cloudsec.tencent.com/html-report-v2/2026/05/26/434875_a9dde22162f639edc583fd621b8b4a13.html?q-sign-algorithm=sha1&q-ak=AKID8JMG1bzBC1dz96qNhssfFftujT1NCoFi&q-sign-time=1781958127%3B1813494127&q-key-time=1781958127%3B1813494127&q-header-list=host&q-url-param-list=&q-signature=f48149e11db79f5b3fe8329eed44146e00b4dd0b" target="_blank">查看报告</a> </div> </div> </div> </div> <!-- Recommended Skills --> <div style="margin-top:24px;"> <h2 style="font-size:18px;font-weight:600;margin-bottom:16px;">🔗 相关推荐</h2> <div class="rec-grid"> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">knowledge-management</span> <h3><a href="/s/openclaw-free-web-search">Zero Api Key Web Search</a></h3> <div class="rec-owner">wd041216-bit</div> <div class="rec-desc">OpenClaw 技能,用于基于来源的网络搜索、页面阅读和证据感知的声明检查。默认无需 API 密钥;可选的提供者可以启用...</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 2</span> <span style="color:#5b6abf;">📥 2,534</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">ai-agent</span> <h3><a href="/s/find-skills">Find Skills</a></h3> <div class="rec-owner">guipi888</div> <div class="rec-desc">场景驱动+关键词双模式技能发现工具。当用户用自然语言描述场景/需求(如"我想做一个海报""帮我分析股票"),或明确说"安装技能/find skills/找个skill"时,自动从官方内置、本地已安装、SkillHub、虾评、GitHub、C</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 1,460</span> <span style="color:#5b6abf;">📥 511,878</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">ai-agent</span> <h3><a href="/s/self-improving-agent">self-improving agent</a></h3> <div class="rec-owner">pskoett</div> <div class="rec-desc">捕获经验教训、错误及修正内容,以实现持续改进。适用于以下场景:(1)命令或操作意外失败;(2)用户纠正Claude(如“不,那不对……”“实际上……”);(3)用户请求的功能不存在;(4)外部API或工具出现故障;(5)Claude发现自身</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 4,097</span> <span style="color:#5b6abf;">📥 824,612</span> </div> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded',function(){ document.querySelectorAll('.detail-tab').forEach(function(btn){ btn.addEventListener('click',function(e){ var tab = this.getAttribute('data-tab'); document.querySelectorAll('.detail-tab').forEach(function(b){b.classList.remove('active')}); document.querySelectorAll('.detail-content').forEach(function(c){c.classList.remove('active')}); this.classList.add('active'); var el = document.getElementById('tab-'+tab); if(el) el.classList.add('active'); }); }); }); </script> <div class="footer"> <p>Skill工具集 © 2026</p> </div></body> </html>