[Feature]: Can Model Service Settings directly use assistants or agents? #1106
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: GitHub Issue Tracker with Feishu Notification | |
| on: | |
| issues: | |
| types: [opened] | |
| schedule: | |
| # Run every day at 8:30 Beijing Time (00:30 UTC) | |
| - cron: "30 0 * * *" | |
| workflow_dispatch: | |
| jobs: | |
| process-new-issue: | |
| if: github.event_name == 'issues' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| issues: write | |
| contents: read | |
| id-token: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| - name: Check Beijing Time | |
| id: check_time | |
| run: | | |
| # Get current time in Beijing timezone (UTC+8) | |
| BEIJING_HOUR=$(TZ='Asia/Shanghai' date +%H) | |
| BEIJING_MINUTE=$(TZ='Asia/Shanghai' date +%M) | |
| echo "Beijing Time: ${BEIJING_HOUR}:${BEIJING_MINUTE}" | |
| # Check if time is between 00:00 and 08:30 | |
| if [ $BEIJING_HOUR -lt 8 ] || ([ $BEIJING_HOUR -eq 8 ] && [ $BEIJING_MINUTE -le 30 ]); then | |
| echo "should_delay=true" >> $GITHUB_OUTPUT | |
| echo "⏰ Issue created during quiet hours (00:00-08:30 Beijing Time)" | |
| echo "Will schedule notification for 08:30" | |
| else | |
| echo "should_delay=false" >> $GITHUB_OUTPUT | |
| echo "✅ Issue created during active hours, will notify immediately" | |
| fi | |
| - name: Add pending label if in quiet hours | |
| if: steps.check_time.outputs.should_delay == 'true' | |
| uses: actions/github-script@v8 | |
| with: | |
| script: | | |
| github.rest.issues.addLabels({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| labels: ['pending-feishu-notification'] | |
| }); | |
| - name: Setup Node.js | |
| if: steps.check_time.outputs.should_delay == 'false' | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 22 | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Get pnpm store directory | |
| id: pnpm-cache | |
| shell: bash | |
| run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT | |
| - name: Cache pnpm dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pnpm- | |
| - name: Install dependencies | |
| if: steps.check_time.outputs.should_delay == 'false' | |
| run: pnpm install | |
| - name: Process issue with Claude | |
| if: steps.check_time.outputs.should_delay == 'false' | |
| uses: anthropics/claude-code-action@v1 | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| allowed_non_write_users: "*" | |
| anthropic_api_key: ${{ secrets.CLAUDE_TRANSLATOR_APIKEY }} | |
| claude_args: "--allowed-tools Bash(gh issue:*),Bash(pnpm tsx scripts/feishu-notify.ts*)" | |
| prompt: | | |
| 你是一个GitHub Issue自动化处理助手。请完成以下任务: | |
| ## 当前Issue信息 | |
| - Issue编号:#${{ github.event.issue.number }} | |
| - 标题:${{ github.event.issue.title }} | |
| - 作者:${{ github.event.issue.user.login }} | |
| - URL:${{ github.event.issue.html_url }} | |
| - 标签:${{ join(github.event.issue.labels.*.name, ', ') }} | |
| ### Issue body | |
| `````md | |
| ${{ github.event.issue.body }} | |
| ````` | |
| ## 任务步骤 | |
| 1. **分析并总结issue** | |
| 用中文(简体)提供简洁的总结(2-3句话),包括: | |
| - 问题的主要内容 | |
| - 核心诉求 | |
| - 重要的技术细节 | |
| 2. **发送飞书通知** | |
| 使用CLI工具发送飞书通知,参考以下示例: | |
| ```bash | |
| pnpm tsx scripts/feishu-notify.ts issue \ | |
| -u "${{ github.event.issue.html_url }}" \ | |
| -n "${{ github.event.issue.number }}" \ | |
| -t "${{ github.event.issue.title }}" \ | |
| -a "${{ github.event.issue.user.login }}" \ | |
| -l "${{ join(github.event.issue.labels.*.name, ',') }}" \ | |
| -m "<你生成的中文总结>" | |
| ``` | |
| ## 注意事项 | |
| - 总结必须使用简体中文 | |
| - 命令行参数需要正确转义特殊字符 | |
| - 如果issue内容为空,也要提供一个简短的说明 | |
| 请开始执行任务! | |
| env: | |
| ANTHROPIC_BASE_URL: ${{ secrets.CLAUDE_TRANSLATOR_BASEURL }} | |
| FEISHU_WEBHOOK_URL: ${{ secrets.FEISHU_WEBHOOK_URL }} | |
| FEISHU_WEBHOOK_SECRET: ${{ secrets.FEISHU_WEBHOOK_SECRET }} | |
| process-pending-issues: | |
| if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| issues: write | |
| contents: read | |
| id-token: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 22 | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Get pnpm store directory | |
| id: pnpm-cache | |
| shell: bash | |
| run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT | |
| - name: Cache pnpm dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pnpm- | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Process pending issues with Claude | |
| uses: anthropics/claude-code-action@v1 | |
| with: | |
| anthropic_api_key: ${{ secrets.CLAUDE_TRANSLATOR_APIKEY }} | |
| allowed_non_write_users: "*" | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| claude_args: "--allowed-tools Bash(gh issue:*),Bash(gh api:*),Bash(pnpm tsx scripts/feishu-notify.ts*)" | |
| prompt: | | |
| 你是一个GitHub Issue自动化处理助手。请完成以下任务: | |
| ## 任务说明 | |
| 处理所有待发送飞书通知的GitHub Issues(标记为 `pending-feishu-notification` 的issues) | |
| ## 步骤 | |
| 1. **获取待处理的issues** | |
| 使用以下命令获取所有带 `pending-feishu-notification` 标签的issues: | |
| ```bash | |
| gh api repos/${{ github.repository }}/issues?labels=pending-feishu-notification&state=open | |
| ``` | |
| 2. **总结每个issue** | |
| 对于每个找到的issue,用中文提供简洁的总结(2-3句话),包括: | |
| - 问题的主要内容 | |
| - 核心诉求 | |
| - 重要的技术细节 | |
| 3. **发送飞书通知** | |
| 使用CLI工具发送飞书通知,参考以下示例: | |
| ```bash | |
| pnpm tsx scripts/feishu-notify.ts issue \ | |
| -u "<issue的html_url>" \ | |
| -n "<issue编号>" \ | |
| -t "<issue标题>" \ | |
| -a "<issue作者>" \ | |
| -l "<逗号分隔的标签列表,排除pending-feishu-notification>" \ | |
| -m "<你生成的中文总结>" | |
| ``` | |
| 4. **移除标签** | |
| 成功发送后,使用以下命令移除 `pending-feishu-notification` 标签: | |
| ```bash | |
| gh api -X DELETE repos/${{ github.repository }}/issues/<issue编号>/labels/pending-feishu-notification | |
| ``` | |
| ## 环境变量 | |
| - Repository: ${{ github.repository }} | |
| - Feishu webhook URL和密钥已在环境变量中配置好 | |
| ## 注意事项 | |
| - 如果没有待处理的issues,输出提示信息后直接结束 | |
| - 处理多个issues时,每个issue之间等待2-3秒,避免API限流 | |
| - 如果某个issue处理失败,继续处理下一个,不要中断整个流程 | |
| - 所有总结必须使用中文(简体中文) | |
| 请开始执行任务! | |
| env: | |
| ANTHROPIC_BASE_URL: ${{ secrets.CLAUDE_TRANSLATOR_BASEURL }} | |
| FEISHU_WEBHOOK_URL: ${{ secrets.FEISHU_WEBHOOK_URL }} | |
| FEISHU_WEBHOOK_SECRET: ${{ secrets.FEISHU_WEBHOOK_SECRET }} |