OutcomeCI

ทางการ

สร้าง ตรวจสอบ และจัดการเวิร์กโฟลว์ที่ขับเคลื่อนด้วยเอเจนต์ในเครื่องมือต่างๆ ของทีมคุณด้วย OutcomeCI

คุณทำอะไรได้บ้างด้วย OutcomeCI MCP?

  • ร่างแผนการทำงาน — ให้ AI ของคุณอ่านคำขอและเสนอแผนทีละขั้นตอนโดยใช้เครื่องมือ draft
  • ปรับปรุงแผนผ่านการสนทนา — ให้ AI ของคุณปรับแผนร่วมกับคุณผ่าน discuss จนกว่าคุณจะอนุมัติ
  • ดำเนินการเปลี่ยนแปลงที่ได้รับอนุมัติ — สั่งให้ AI ของคุณนำแผนที่ตกลงกันไว้ไปปฏิบัติภายใต้สิทธิ์ที่กำหนดโดยใช้ implement
  • รายงานผลกลับ — ขอให้ AI ของคุณโพสต์ผลลัพธ์ เช่น ลิงก์ PR ไปยังเธรดการสนทนาต้นฉบับด้วย announce
  • ตรวจสอบร่องรอยการดำเนินการ — ขอสรุปว่าแต่ละขั้นตอนของเวิร์กโฟลว์เรียกใช้ ส่งคืน หรือถูกปฏิเสธอะไรบ้าง

เซิร์ฟเวอร์ MCP แบบโฮสต์

npx add-mcp 'https://api.outcomeci.com/v1/mcp'

ติดตั้งลง Claude Code, Codex, Cursor และอื่นๆ

เอกสาร

อธิบายเวิร์กโฟลว์ สร้างมันขึ้นมาด้วยกัน

เชื่อมต่อเอเจนต์ที่คุณชื่นชอบเข้ากับ OutcomeCI และอธิบายสิ่งที่คุณต้องการให้ทำ สร้างขั้นตอน เครื่องมือ และการอนุมัติร่วมกัน จากนั้นให้ OutcomeCI เรียกใช้เวิร์กโฟลว์

draft

อ่านคำขอและรีโพซิทอรี เสนอแผนในเธรด

discuss

ทำงานผ่านความคิดเห็นกับผู้ขอจนกว่าพวกเขาจะอนุมัติ

implement

ทำการเปลี่ยนแปลงที่ตกลงกันไว้ภายในสิทธิ์ของเวิร์กโฟลว์

announce

นำผลลัพธ์กลับมายังการสนทนาที่เริ่มต้น

สร้างด้วยเอเจนต์ของคุณ

สร้างเวิร์กโฟลว์ที่เปลี่ยนคำขอจาก Slack ให้เป็น pull request อภิปรายแผนกับผู้ขอและรอการอนุมัติก่อนทำการเปลี่ยนแปลง

  1. 01 draft ขั้นตอนเอเจนต์
  2. 02 discuss การอนุมัติโดยมนุษย์
  3. 03 implement ขั้นตอนเอเจนต์
  4. 04 announce ขั้นตอนเอเจนต์

ตรวจสอบเวิร์กโฟลว์ร่วมกัน OutcomeCI จะเรียกใช้เมื่อมีงานเข้ามา

ดูเวิร์กโฟลว์ทั้งหมด

apiVersion: outcomeci.workflow/v1
name: slack-to-pull-request

trigger:
  webhook: {uses: slack, auth: secrets.slack_signing, events: [mention, dm]}

secrets:
  slack: vault:slack/bot-token
  slack_signing: vault:slack/signing-secret
  github: vault:github

apis:
  slack: {uses: slack, auth: secrets.slack}
  github: {uses: github, auth: secrets.github}

reasoning:
  default: {runner: codex}

steps:
  - draft:
      reason: >
        Read the repositories named in the request. Draft a plan with
        a section per repository and post it in the request's thread.
      from: trigger
      can:
        - github.read
        - slack.post: {channel: trigger.channel, thread_ts: trigger.ts}
      returns:
        plan: {summary, repos: [{repo: {owner, name}, steps: [string]}]}

  - discuss:
      with: draft.plan
      converse: slack.thread(draft.calls.slack.post)
      by: trigger.user
      until: converged
      max_turns: 12
      returns: [plan, status]

  - implement:
      when: discuss.status == "converged"
      for_each: discuss.plan.repos as target
      reason: Implement the approved plan and open one pull request.
      with: [discuss.plan, target]
      can:
        - github.write: {repo: target.repo}
      policy: "One branch, one PR, only files the plan needs. No force-push."
      returns:
        pr?: {url, number: int, branch}
        reason?: string

  - announce:
      with: [implement, discuss.plan]
      reason: Reply in the original thread with each PR link or the reason no PR was opened.
      can:
        - slack.post: {channel: trigger.channel, thread_ts: trigger.ts}

สำรวจรูปแบบเวิร์กโฟลว์

ปรับแต่งแผน แล้วอนุมัติ

ตัดสินใจว่าจุดใดที่มนุษย์จะแนะนำ ตรวจสอบ และอนุมัติ ให้สิทธิ์ที่ชัดเจนแก่เอเจนต์ในแต่ละขั้นตอน และรักษาการเปลี่ยนแปลงให้อยู่ในขอบเขตที่คุณกำหนด

  • สิทธิ์สำหรับแต่ละขั้นตอน

    เลือกการดำเนินการที่แต่ละขั้นตอนสามารถทำได้และทรัพยากรที่สามารถเข้าถึงได้ การเรียกที่อยู่นอกเหนือสิทธิ์เหล่านี้จะถูกปฏิเสธ
  • การตรวจสอบนโยบายก่อนการเปลี่ยนแปลง

    เพิ่มกฎเช่นหนึ่งสาขาและหนึ่ง PR ผู้ตรวจสอบนโยบายจะตรวจสอบการเปลี่ยนแปลงที่เสนอก่อนที่จะส่งออก
  • ข้อมูลประจำตัวอยู่ใน Vault

    OutcomeCI แนบข้อมูลประจำตัวเข้ากับการเรียก API เอเจนต์ทำงานผ่านสิทธิ์โดยไม่ได้รับโทเค็น

# product-engineering

OutcomeCI APP

ฉันจะเพิ่มการส่งออก CSV สำหรับหน้า activity และรวมการทดสอบด้วย

Maya

ส่งออกเฉพาะผลลัพธ์ที่กรองแล้ว และรักษาลำดับคอลัมน์เดิม

OutcomeCI APP

อัปเดตแผนแล้ว: ส่งออกผลลัพธ์ที่กรองแล้วในลำดับคอลัมน์ปัจจุบัน พร้อมการทดสอบสำหรับทั้งสองอย่าง พร้อมดำเนินการต่อหรือไม่?

แผนที่แก้ไขพร้อมสำหรับการอนุมัติ

Jordan

ใช้ได้เลย ดำเนินการต่อ

สิทธิ์การใช้งาน

รีโพซิทอรี

acme/console

Grant

github.write

นโยบาย

หนึ่งสาขา หนึ่ง PR ไม่มีการ force-push

ข้อมูลประจำตัว

แนบโดย broker

สภาพแวดล้อมการทำงานที่ติดตามได้

ทุกการทำงานทิ้งบันทึกที่คุณสามารถตรวจสอบได้ ตั้งแต่การเรียกเครื่องมือครั้งแรกจนถึงผลลัพธ์สุดท้าย

ดูว่าแต่ละขั้นตอนเรียกอะไร ได้รับอะไรกลับมา และอะไรถูกปฏิเสธ พร้อมเหตุผลประกอบ ติดตามงานจนถึงผลลัพธ์

สำรวจการทำงานและการตรวจสอบนโยบาย

slack-to-pull-request

เสร็จสมบูรณ์ การเรียก API 5 ครั้ง · ปฏิเสธ 1 ครั้ง

01 github.read acme/console ยืนยันแล้ว

อ่านหน้า activity และการทดสอบที่มีอยู่ เนื้อหารีโพซิทอรีถูกส่งกลับไปยังขั้นตอนร่าง

02 slack.post #product-engineering / เธรดต้นฉบับ ยืนยันแล้ว

โพสต์แผนการส่งออก CSV ที่แก้ไข รวมถึงผลลัพธ์ที่กรองแล้วและลำดับคอลัมน์ที่มีอยู่ ใบตอบรับข้อความระบุการสนทนาที่ใช้สำหรับการอนุมัติ

03 github.write ข้อเสนอ force-push ปฏิเสธ

การตรวจสอบนโยบายปฏิเสธ force-push ที่เสนอ นโยบายอนุญาตหนึ่งสาขาใหม่และหนึ่ง PR โดยไม่มีการ force-push คำขอนี้ไม่ได้ถูกส่งไปยัง GitHub

04 github.write acme/console / pull request #142 ยืนยันแล้ว

เปิด pull request จากสาขาใหม่สำหรับการส่งออก CSV ที่ได้รับการอนุมัติ GitHub ส่งคืนหมายเลข PR และ URL

05 slack.post #product-engineering / เธรดต้นฉบับ ยืนยันแล้ว

โพสต์ลิงก์ pull request และสรุปไปยังเธรดต้นทาง Slack ส่งคืนใบตอบรับข้อความ

ผลลัพธ์ถูกส่งกลับไปยังเธรด Slack ขยายการเรียกเพื่อตรวจสอบ

เก็บเวิร์กโฟลว์ของคุณ เปลี่ยนเอเจนต์หรือโมเดลของคุณ

เก็บเวิร์กโฟลว์ของคุณใน OutcomeCI หรือในรีโพซิทอรีของคุณ เลือกเอเจนต์และโมเดลสำหรับแต่ละขั้นตอน และเรียกใช้ในเครื่องหรือในคลาวด์

เอเจนต์ของคุณ

  • Codex
  • Claude Code
  • OpenCode

ตั้งค่าเริ่มต้น กำหนดค่าเฉพาะขั้นตอน หรือเพิ่มตัวสำรองสำหรับขีดจำกัดการใช้งาน

กำหนดค่าเอเจนต์ของคุณ

โมเดลของคุณ

  • OpenRouter
  • LiteLLM

นำการเข้าถึงโมเดลที่คุณมีอยู่แล้ว เลือกโมเดลต่อเวิร์กโฟลว์หรือขั้นตอนโดยไม่ผูกมัดการจัดระบบของคุณกับผู้ให้บริการรายเดียว

เลือกโมเดลของคุณ

สภาพแวดล้อมการทำงานของคุณ

LocalOutcomeCI Cloud

รูปแบบเวิร์กโฟลว์และอิมเมจ runner เดียวกัน กำหนดค่าข้อมูลประจำตัวสำหรับแต่ละสภาพแวดล้อม

สำรวจการทำงานในเครื่อง

ต้องการเริ่มต้นด้วยเอเจนต์ที่คุณชื่นชอบหรือไม่?

เชื่อมต่อกับ OutcomeCI ด้วย MCP และสร้างเวิร์กโฟลว์ของคุณร่วมกัน

URL เซิร์ฟเวอร์ MCP

https://api.outcomeci.com/v1/mcp

เชื่อมต่อเอเจนต์ของคุณ

คู่มือการตั้งค่าอย่างเป็นทางการ:OpenCode ↗ Claude Code ↗ Codex ↗

ต้องการเริ่มต้นบนเครื่องของคุณหรือไม่?

ทดสอบในเครื่องด้วย Docker และการเข้าสู่ระบบเอเจนต์ของคุณ ไม่จำเป็นต้องมีบัญชี OutcomeCI

$ pipx install outcomeci-cli

ทำตาม quickstart

เวิร์กโฟลว์เดียวเป็นเพียงจุดเริ่มต้น

เริ่มต้นจากเหตุการณ์ ตารางเวลา หรือคำขอ นำเครื่องมือ เอเจนต์ และการอนุมัติที่แต่ละงานต้องการมารวมกัน

Alert → Investigation → Review

จัดการการแจ้งเตือนที่เข้ามา

เริ่มต้นจาก webhook ที่เข้ามา ตรวจสอบปัญหา และเสนอการแก้ไขสำหรับการตรวจสอบก่อนทำการเปลี่ยนแปลง

สำรวจเวิร์กโฟลว์การแจ้งเตือน

Request → Research → Answer

ตอบคำถามเกี่ยวกับรีโพซิทอรี

ให้เอเจนต์เข้าถึงโค้ดที่เกี่ยวข้องแบบอ่านอย่างเดียว และนำคำตอบกลับไปยังผู้ที่ถาม

สร้างเวิร์กโฟลว์แบบอ่านอย่างเดียว

Schedule → Summary → Update

เตรียมอัปเดตตอนเช้า

รวบรวมกิจกรรมของรีโพซิทอรี สรุปสิ่งที่เปลี่ยนแปลง และแชร์อัปเดตตามตารางเวลาที่คุณเลือก

เริ่มต้นด้วยเวิร์กโฟลว์ตามตารางเวลา

เริ่มต้นด้วยเหตุการณ์ Slack · Webhook · Email · Schedule · CLI

เชื่อมต่อเครื่องมือของคุณ สำรวจตัวเชื่อมต่อโอเพนซอร์ส ↗

คำถามที่พบบ่อย

OutcomeCI ใช้สำหรับเวิร์กโฟลว์การเขียนโค้ดเท่านั้นหรือไม่?

ไม่ OutcomeCI เป็นเฟรมเวิร์กการจัดระบบสำหรับเวิร์กโฟลว์เอเจนต์ กำหนดทริกเกอร์ ขั้นตอน เครื่องมือ และการอนุมัติรอบงานที่คุณต้องการทำ การสาธิต pull request เป็นเพียงตัวอย่างหนึ่ง เวิร์กโฟลว์ยังสามารถตรวจสอบคำถาม สรุปกิจกรรม และดำเนินการผ่านตัวเชื่อมต่อที่รองรับ

เอเจนต์และโมเดลใดที่ฉันสามารถใช้ได้?

OutcomeCI รองรับ Codex, Claude Code และ OpenCode เลือก runner และโมเดลที่รองรับในเวิร์กโฟลว์ของคุณ กำหนดค่าเอเจนต์เฉพาะขั้นตอน หรือกำหนดค่าตัวสำรองสำหรับขีดจำกัดการใช้งาน เก็บเวิร์กโฟลว์ของคุณใน OutcomeCI หรือในรีโพซิทอรีของคุณ

เวิร์กโฟลว์ของฉันสามารถทำงานที่ไหนได้บ้าง?

เรียกใช้เวิร์กโฟลว์บน managed runners ของ OutcomeCI Cloud หรือทดสอบในเครื่องด้วย Docker และการเข้าสู่ระบบเอเจนต์ของคุณเอง ทั้งสองใช้ runner image และรูปแบบเวิร์กโฟลว์เดียวกัน กำหนดค่าข้อมูลประจำตัวและการเชื่อมต่อเอเจนต์สำหรับแต่ละสภาพแวดล้อม

บันทึกการทำงานบันทึกอะไรบ้าง?

บันทึกการทำงานของ run บันทึกการเรียก API ผลลัพธ์ และการปฏิเสธพร้อมเหตุผล ใช้เพื่อตรวจสอบว่าเวิร์กโฟลว์พยายามทำอะไรและเกิดอะไรขึ้น เป็นบันทึกการทำงานของเครื่องมือ ไม่ใช่บันทึกการคิดส่วนตัวของเอเจนต์

จะเกิดอะไรขึ้นหาก run ล้มเหลวหรือเอเจนต์ถึงขีดจำกัด?

เปิดบันทึกการทำงานเพื่อดูว่าอะไรล้มเหลวและตรวจสอบการเรียกที่บันทึกไว้ก่อนลองใหม่ Cloud runs จะลองใหม่สำหรับความล้มเหลวชั่วคราวบางอย่าง เช่น การเชื่อมต่อเอเจนต์ที่ไม่ว่าง สูงสุดห้าครั้ง กำหนดค่าเอเจนต์สำรองสำหรับขีดจำกัดการใช้งานหรืออัตรา สำหรับ run ในเครื่องที่ล้มเหลว แก้ไขสาเหตุและดำเนินการต่อด้วยตัวเลือก retry ของ CLI การเรียกที่มีผลลัพธ์ไม่แน่นอนจะไม่ถูกเล่นซ้ำโดยอัตโนมัติ

จะเกิดอะไรขึ้นหากไม่มีใครอนุมัติแผน?

คุณกำหนดช่วงเวลาการอนุมัติ ขั้นตอนการอนุมัติที่หมดเวลาจะข้ามขั้นตอนที่เหลือ ในการสาธิต การนำไปใช้ต้องมีแผนที่ได้รับการอนุมัติ หากการสนทนาหมดเวลาหรือถึงขีดจำกัดรอบโดยไม่มีการตกลง การนำไปใช้จะถูกข้าม

จัดการสิทธิ์และความลับอย่างไร?

แต่ละขั้นตอนมีสิทธิ์ที่ชัดเจนซึ่งจำกัดเฉพาะการดำเนินการและอาร์กิวเมนต์ broker ปฏิเสธการเรียกที่อยู่นอกสิทธิ์เหล่านี้และแนบข้อมูลประจำตัวจาก Vault ไปยังการเรียกที่อนุญาต การตรวจสอบนโยบายเสริมจะตรวจสอบการเปลี่ยนแปลงที่เสนอเทียบกับกฎภาษาธรรมดา และเวิร์กโฟลว์สามารถรอการอนุมัติจากมนุษย์

เครื่องมือและทริกเกอร์ใดที่รองรับ?

ตัวเชื่อมต่อ GitHub และ Slack พร้อมใช้งานในปัจจุบัน เริ่มต้นเวิร์กโฟลว์จากการกล่าวถึงและข้อความตรงใน Slack, webhooks, อีเมล, ตารางเวลา cron หรือ CLI ตัวเชื่อมต่อเป็นโอเพนซอร์ส ขอ API เพิ่มเติมผ่านรีโพซิทอรีตัวเชื่อมต่อ

ฉันต้องมีบัญชีเพื่อทดสอบในเครื่องหรือไม่?

ไม่ ติดตั้ง CLI และทดสอบเวิร์กโฟลว์ในเครื่องด้วย Docker การเข้าสู่ระบบเอเจนต์ของคุณ และข้อมูลประจำตัวสำหรับเครื่องมือที่คุณเชื่อมต่อ สร้างบัญชี OutcomeCI เพื่อเรียกใช้เวิร์กโฟลว์บน managed cloud runners