-
Notifications
You must be signed in to change notification settings - Fork 157
Add Simili Bot for semantic issue triage #283
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
bde7fb0
1e93839
3681312
f98ef88
eda70c6
08c1287
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,21 @@ | ||||||
| qdrant: | ||||||
| url: "${QDRANT_URL}" | ||||||
| api_key: "${QDRANT_API_KEY}" | ||||||
| collection: "entireio-cli-issues" | ||||||
|
|
||||||
| embedding: | ||||||
| provider: "gemini" | ||||||
| api_key: "${GEMINI_API_KEY}" | ||||||
| model: "gemini-embedding-001" | ||||||
|
|
||||||
| defaults: | ||||||
| similarity_threshold: 0.75 | ||||||
| max_similar_to_show: 5 | ||||||
|
|
||||||
| transfer: | ||||||
| duplicate_confidence_threshold: 0.85 | ||||||
|
|
||||||
| repositories: | ||||||
| - org: "entireio" | ||||||
| repo: "entireio-cli" | ||||||
|
||||||
| repo: "entireio-cli" | |
| repo: "cli" |
Copilot
AI
Feb 12, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The PR description repeatedly refers to the repository as "entireio-cli" and "entireio/entireio-cli", but the actual repository is "entireio/cli" (as evidenced by go.mod, README.md, scripts/install.sh, and all other documentation). This naming discrepancy appears in the configuration files and will cause the integration to fail. The description should be updated to reflect the correct repository name, and all configuration values should use "cli" as the repository name.
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,24 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name: Simili Issue Triage | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| on: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| issues: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| types: [opened, reopened] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| jobs: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| triage: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| runs-on: ubuntu-latest | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| permissions: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| issues: write | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| contents: read | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| steps: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - uses: actions/checkout@v4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - name: Run Simili Bot | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: similigh/simili-bot@v0.1.5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| uses: similigh/simili-bot@v0.1.5 | |
| # Pinned to a specific commit SHA for supply-chain security. | |
| # Replace <COMMIT_SHA_FOR_V0_1_5> with the reviewed commit for v0.1.5. | |
| uses: similigh/simili-bot@<COMMIT_SHA_FOR_V0_1_5> |
Copilot
AI
Feb 12, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding an automated issue triage system is a significant change that affects how contributors interact with the project, but there's no documentation update for this new workflow. Consider adding a section to CONTRIBUTING.md explaining:
- That issues will automatically receive triage comments from Simili Bot
- What the triage reports mean (similar issues, duplicate detection, suggested labels)
- That this is automated and not a human review
This helps set expectations for contributors who may be confused by automated comments on their issues.
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Explain automated triage to contributors | |
| uses: actions/github-script@v7 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const issue = context.issue; | |
| if (!issue || !issue.number) { | |
| core.info('No issue context available, skipping explanation comment.'); | |
| } else { | |
| const body = [ | |
| "👋 This issue is being triaged automatically by **Simili Bot**.", | |
| "", | |
| "Simili Bot is an automated tool that helps maintainers by:", | |
| "- Searching for **similar issues** that might already discuss this topic.", | |
| "- Flagging potential **duplicates**.", | |
| "- Suggesting **labels** based on the issue content.", | |
| "", | |
| "These comments and suggestions are **generated automatically** and **do not represent a human review or a maintainer decision**. A project maintainer may later follow up with additional comments, labels, or actions.", | |
| ].join("\n"); | |
| await github.rest.issues.createComment({ | |
| owner: issue.owner, | |
| repo: issue.repo, | |
| issue_number: issue.number, | |
| body, | |
| }); | |
| } |
Copilot
AI
Feb 12, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The PR description mentions that manual indexing is required after merge ("run simili index --repo entireio/entireio-cli"), but there's no automation or documentation for keeping the index updated. The PR also states that editing issues won't update the vector DB until manual re-indexing. This creates an operational burden where:
- The index will become stale over time as issues are edited
- Someone must remember to periodically re-run indexing
- There's no monitoring or alerting if indexing fails
Consider either:
- Adding a scheduled workflow to periodically re-index (e.g., weekly)
- Documenting the re-indexing procedure in a MAINTENANCE.md or similar file
- Creating an issue to track the upcoming v0.2.0 feature that will handle this automatically
Without this, the integration may degrade in quality over time as the index becomes increasingly stale.
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,50 @@ | ||||||
| #!/bin/bash | ||||||
| # Backfill script for applying Simili Bot triage to existing open issues | ||||||
| # Usage: ./scripts/simili-backfill.sh | ||||||
|
|
||||||
| set -euo pipefail | ||||||
|
|
||||||
| REPO="entireio/cli" | ||||||
| CONFIG=".github/simili.yaml" | ||||||
|
|
||||||
| echo "🔍 Fetching open issues from $REPO..." | ||||||
|
|
||||||
| # Fetch all open issues | ||||||
| gh issue list --repo "$REPO" --state open --json number,title,body,author,labels,createdAt --limit 1000 > /tmp/issues.json | ||||||
|
|
||||||
| ISSUE_COUNT=$(jq '. | length' /tmp/issues.json) | ||||||
| echo "📊 Found $ISSUE_COUNT open issues" | ||||||
|
|
||||||
| if [ "$ISSUE_COUNT" -eq 0 ]; then | ||||||
| echo "✅ No issues to process" | ||||||
| exit 0 | ||||||
| fi | ||||||
|
|
||||||
| echo "🤖 Processing issues with Simili Bot..." | ||||||
|
|
||||||
| # Process each issue | ||||||
| jq -c '.[]' /tmp/issues.json | while read -r issue; do | ||||||
| NUMBER=$(echo "$issue" | jq -r '.number') | ||||||
| TITLE=$(echo "$issue" | jq -r '.title') | ||||||
|
|
||||||
| echo " Processing #$NUMBER: $TITLE" | ||||||
|
|
||||||
| # Create temporary issue file | ||||||
| echo "$issue" > "/tmp/issue-$NUMBER.json" | ||||||
|
|
||||||
| # Run simili process (requires simili CLI to be installed) | ||||||
| if command -v simili &> /dev/null; then | ||||||
| simili process --issue "/tmp/issue-$NUMBER.json" --config "$CONFIG" || echo " ⚠️ Failed to process #$NUMBER" | ||||||
| else | ||||||
| echo " ⚠️ simili CLI not found. Install with: gh extension install similigh/simili-bot" | ||||||
|
||||||
| echo " ⚠️ simili CLI not found. Install with: gh extension install similigh/simili-bot" | |
| echo " ⚠️ simili CLI not found. Please install the simili CLI before running this script (see the Simili documentation for installation instructions)." |
Copilot
AI
Feb 12, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The cleanup operation at line 44 will fail if the simili command fails on line 37 and exits due to set -e. The temporary file will not be removed in error cases, leading to leftover files in /tmp. Consider using a trap to ensure cleanup happens on exit, or move the cleanup to a finally-like construct.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Qdrant collection name is specified as "entireio-cli-issues" which doesn't align with the actual repository name "entireio/cli". While this may be intentional for the collection name, it's inconsistent with the repository naming convention used throughout the codebase. Consider using "entireio-cli-issues" or a name that clearly matches the repository for easier maintenance and debugging.