AI Skill Hub 推荐使用:OpenClaw线性插件 是一款优质的Agent工作流。AI 综合评分 7.5 分,在同类工具中表现稳健。如果你正在寻找可靠的Agent工作流解决方案,这是一个值得深入了解的选择。
Linear Agent插件,支持OAuth和多语言
OpenClaw线性插件 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
Linear Agent插件,支持OAuth和多语言
OpenClaw线性插件 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
# 方式一:npm 全局安装 npm install -g openclaw-linear-plugin # 方式二:npx 直接运行(无需安装) npx openclaw-linear-plugin --help # 方式三:项目依赖安装 npm install openclaw-linear-plugin # 方式四:从源码运行 git clone https://github.com/calltelemetry/openclaw-linear-plugin cd openclaw-linear-plugin npm install npm start
# 命令行使用
openclaw-linear-plugin --help
# 基本用法
openclaw-linear-plugin [options] <input>
# Node.js 代码中使用
const openclaw_linear_plugin = require('openclaw-linear-plugin');
const result = await openclaw_linear_plugin.run(options);
console.log(result);
# openclaw-linear-plugin 配置说明 # 查看配置选项 openclaw-linear-plugin --config-example > config.yml # 常见配置项 # output_dir: ./output # log_level: info # workers: 4 # 环境变量(覆盖配置文件) export OPENCLAW_LINEAR_PLUGIN_CONFIG="/path/to/config.yml"
<p align="center"> <img src="docs/logo.jpeg" alt="OpenClaw Linear Plugin" width="720" /> </p>
Every dispatch creates a .claw/ folder inside the worktree with everything the agent did:
/home/claw/worktrees/ENG-100/
├── .claw/
│ ├── manifest.json # Issue metadata, tier, status, attempt count
│ ├── worker-0.md # What the worker did on attempt 1
│ ├── worker-1.md # What the worker did on attempt 2 (if retried)
│ ├── audit-0.json # Audit verdict for attempt 1
│ ├── audit-1.json # Audit verdict for attempt 2
│ ├── log.jsonl # Timeline of every phase with timing
│ └── summary.md # Final summary (written on done or stuck)
├── src/ # ← your code, modified by the agent
├── tests/
└── ...
If something went wrong, start with log.jsonl — it shows every phase, how long it took, and a preview of the output.
---
openclaw plugins install @calltelemetry/openclaw-linear
Linear delivers webhooks over the public internet. The gateway listens on localhost:18789 and needs a public HTTPS endpoint. A Cloudflare Tunnel is the recommended approach — no open ports, no TLS cert management, no static IP required.
How it works: cloudflared opens an outbound connection to Cloudflare's edge and keeps it alive. Cloudflare routes incoming HTTPS requests for your hostname back through the tunnel to localhost:18789. No inbound firewall rules needed.
```bash
sudo cloudflared service install sudo systemctl enable --now cloudflared
To test without installing as a service:
bash cloudflared tunnel run openclaw-linear ```
{
"notifications": {
"targets": [
{ "channel": "discord", "target": "1471743433566715974" },
{ "channel": "telegram", "target": "-1003884997363" },
{ "channel": "slack", "target": "C0123456789", "accountId": "my-acct" }
],
"events": {
"auditing": false
},
"richFormat": true
}
}
targets — Where to send notifications (channel name + ID)events — Toggle specific events off (all on by default)richFormat — Set to true for Discord embeds with colors and Telegram HTML formattingTip: Claude Code is very good at setting this up for you. Install the plugin, install the Cloudflare CLI and authenticate (cloudflared tunnel login), then just ask Claude to configure the rest. Or run the guided setup wizard:It walks through agent profiles, auth, webhook provisioning, and verification in one interactive flow.> openclaw openclaw-linear setup >
worker:
system: "You are a senior engineer. Write clean, tested code."
task: |
Issue: {{identifier}} — {{title}}
{{description}}
Workspace: {{worktreePath}}
Implement this issue. Write tests. Commit your work.
audit:
system: "You are a strict code auditor."
rework:
addendum: |
PREVIOUS AUDIT FAILED. Fix these gaps:
{{gaps}}
Create /etc/cloudflared/config.yml (system-wide) or ~/.cloudflared/config.yml (user):
tunnel: <TUNNEL_ID>
credentials-file: /home/<user>/.cloudflared/<TUNNEL_ID>.json
ingress:
- hostname: linear.yourdomain.com
service: http://localhost:18789
- service: http_status:404 # catch-all, reject unmatched requests
The ingress rule routes all traffic for your hostname to the gateway on localhost. The catch-all http_status:404 rejects requests for any other hostname.
Trigger: Comment "let's plan the features" on a project issue.
For larger work, the planner breaks a project into issues before any code is written. It enters interview mode — asking questions, creating issues with user stories and acceptance criteria, and building a dependency graph in real time.
The planner proactively asks for: - User stories — "As a [role], I want [feature] so that [benefit]" - Acceptance criteria — Given/When/Then format - UAT test scenarios — How to manually verify the feature
What you'll see in Linear:
I've created 3 issues: - PROJ-2: Build search API endpoint (3 pts, blocks PROJ-3) - PROJ-3: Search results page (2 pts, blocked by PROJ-2) - PROJ-4: Autocomplete suggestions (1 pt, independent) Does that cover it? Should the autocomplete call a separate endpoint or share the search API?
When you say "looks good", the planner validates the plan (descriptions, estimates, no circular deps) and sends it to a different AI model for a cross-model review:
| Your primary model | Auto-reviewer |
|---|---|
| Claude / Anthropic | Codex |
| Codex / OpenAI | Gemini |
| Gemini / Google | Codex |
| Other (Kimi, Mistral, etc.) | Gemini |
After approval, issues are dispatched automatically in dependency order — up to 3 in parallel.
📊 Search Feature: 2/3 complete
Add settings under the plugin entry in openclaw.json:
{
"plugins": {
"entries": {
"openclaw-linear": {
"config": {
"defaultAgentId": "coder",
"maxReworkAttempts": 2,
"enableAudit": true
}
}
}
}
}
| Key | Type | Default | What it does |
|---|---|---|---|
defaultAgentId | string | "default" | Which agent runs the pipeline |
classifierAgentId | string | — | Agent for intent classification (use a small/fast model like Haiku) |
plannerReviewModel | string | auto | Cross-model plan reviewer: "claude", "codex", or "gemini". Auto-detects the complement of your primary model. |
enableAudit | boolean | true | Run auditor after implementation |
enableOrchestration | boolean | true | Allow spawn_agent / ask_agent tools |
maxReworkAttempts | number | 2 | Max audit failures before escalation |
codexBaseRepo | string | "/home/claw/ai-workspace" | Git repo for worktrees |
worktreeBaseDir | string | "~/.openclaw/worktrees" | Where worktrees are created |
repos | object | — | Multi-repo map (see [Multi-Repo](#multi-repo)) |
projectName | string | — | Human-readable project name (injected into agent prompts) |
dispatchStatePath | string | "~/.openclaw/linear-dispatch-state.json" | Dispatch state file |
planningStatePath | string | "~/.openclaw/linear-planning-state.json" | Planning session state file |
promptsPath | string | — | Custom prompts file path |
notifications | object | — | Notification targets (see [Notifications](#notifications)) |
inactivitySec | number | 120 | Kill agent if silent this long |
maxTotalSec | number | 7200 | Max total agent session time |
toolTimeoutSec | number | 600 | Max single CLI tool time |
enableGuidance | boolean | true | Inject Linear workspace/team guidance into agent prompts |
teamGuidanceOverrides | object | — | Per-team guidance toggle. Key = team ID, value = boolean. Unset teams inherit enableGuidance. |
claudeApiKey | string | — | Anthropic API key for Claude CLI (passed as ANTHROPIC_API_KEY env var). Required if using Claude backend. |
| Variable | Required | What it does |
|---|---|---|
LINEAR_CLIENT_ID | Yes | OAuth app client ID |
LINEAR_CLIENT_SECRET | Yes | OAuth app client secret |
LINEAR_API_KEY | No | Personal API key (fallback) |
If you plan to use labels (Method B below) to tag issues, run this to create the repo:xxx labels automatically:
openclaw openclaw-linear repos sync
This reads your repos config and creates matching labels (repo:api, repo:frontend, etc.) in every Linear team. To preview without creating anything:
openclaw openclaw-linear repos check
The check command also validates your repo paths — it'll warn you if a path doesn't exist, isn't a git repo, or is a submodule (which won't work with multi-repo dispatch).
| What you do in Linear | What happens |
|---|---|
| Create a new issue | Agent triages — adds estimate, labels, priority |
| Assign an issue to the agent | Worker → Audit → Done (or retry, or escalate) |
| Comment anything on an issue | Intent classifier routes to the right handler |
Mention an agent by name (with or without @) | That agent responds |
| Ask a question or request work | Default agent handles it |
| Say "close this" / "mark as done" / "this is resolved" | Closure report posted, issue moved to completed |
| Say "plan this project" (on a project issue) | Planning interview starts |
| Reply during planning | Issues created/updated with user stories & AC |
| Say "looks good" / "finalize plan" | Validates → cross-model review → approval |
| Say "approve plan" (after review) | Dispatches all issues in dependency order |
| Say "cancel" / "abandon planning" | Exits planning mode |
/dispatch list | Shows all active dispatches |
/dispatch retry CT-123 | Re-runs a stuck dispatch |
/dispatch status CT-123 | Detailed dispatch info |
| Add `` to issue body | Multi-repo dispatch |
---
For programmatic access, the plugin registers these RPC methods:
| Method | What it does |
|---|---|
dispatch.list | List dispatches (filterable by status, tier) |
dispatch.get | Get full dispatch details |
dispatch.retry | Re-dispatch a stuck issue |
dispatch.escalate | Force-stuck with a reason |
dispatch.cancel | Remove an active dispatch |
dispatch.stats | Counts by status and tier |
---
Agents call linear_issues with typed JSON parameters. The tool wraps the Linear GraphQL API directly and handles all name-to-ID resolution automatically.
| Action | What it does | Key parameters |
|---|---|---|
read | Get full issue details (status, labels, comments, relations) | issueId |
create | Create a new issue or sub-issue | title, description, teamId or parentIssueId |
update | Change status, priority, labels, estimate, or title | issueId + fields |
comment | Post a comment on an issue | issueId, body |
list_states | Get available workflow states for a team | teamId |
list_labels | Get available labels for a team | teamId |
Sub-issues: Use action="create" with parentIssueId to create sub-issues under an existing issue. The new issue inherits teamId and projectId from its parent automatically. Only orchestrators on triaged issues have create access — workers and auditors cannot create issues.
This section documents every interaction between the plugin and the Linear GraphQL API, the webhook event routing, the hook lifecycle, and the dispatch pipeline internals.
All Linear API calls go through LinearAgentApi (src/api/linear-api.ts), which wraps https://api.linear.app/graphql with automatic token refresh, retry resilience, and 401 recovery.
Token resolution (resolveLinearToken) checks three sources in priority order:
pluginConfig.accessToken — static config~/.openclaw/auth-profiles.json) — OAuth tokens with auto-refreshLINEAR_ACCESS_TOKEN / LINEAR_API_KEY environment variableOAuth tokens get a Bearer prefix; personal API keys do not. Tokens are refreshed 60 seconds before expiry via refreshLinearToken(), and the refreshed credentials are persisted back to the auth profile store.
API methods by category:
| Category | Method | GraphQL Operation | Used By |
|---|---|---|---|
| **Issues** | getIssueDetails(issueId) | query Issue | Triage, audit, close, linear_issues tool |
createIssue(input) | mutation IssueCreate | Planner | |
updateIssue(issueId, input) | mutation IssueUpdate | Triage (labels, estimate, priority) | |
updateIssueExtended(issueId, input) | mutation IssueUpdate | linear_issues tool, close handler | |
createIssueRelation(input) | mutation IssueRelationCreate | Planner (dependency DAG) | |
| **Comments** | createComment(issueId, body, opts) | mutation CommentCreate | All phases (fallback delivery) |
createReaction(commentId, emoji) | mutation ReactionCreate | Acknowledgment reactions | |
| **Sessions** | createSessionOnIssue(issueId) | mutation AgentSessionCreateOnIssue | Comment handler, close handler |
emitActivity(sessionId, content) | mutation AgentActivityCreate | Primary response delivery | |
updateSession(sessionId, input) | mutation AgentSessionUpdate | External URLs, plan text | |
| **Teams** | getTeamStates(teamId) | query TeamStates | linear_issues tool, close handler |
getTeamLabels(teamId) | query TeamLabels | linear_issues tool, triage | |
getTeams() | query Teams | Doctor health check |
createLabel(teamId, name, opts) | `mu
Add a repos map to your plugin config in openclaw.json. The key is a short name you pick, the value is the absolute path to that repo on disk:
{
"plugins": {
"entries": {
"openclaw-linear": {
"config": {
"repos": {
"api": "/home/claw/repos/api",
"frontend": "/home/claw/repos/frontend",
"shared": "/home/claw/repos/shared-libs"
}
}
}
}
}
}
Restart the gateway after saving: systemctl --user restart openclaw-gateway
本项目是 OpenClaw Linear Plugin 的 README 文档,介绍了该插件的功能和使用方法。
本插件提供了多项功能,包括自动分配任务、代码审查、重写和测试等。它还支持 Cloudflare Tunnel 的设置和使用。
安装 OpenClaw Linear Plugin,需要使用以下命令:openclaw plugins install @calltelemetry/openclaw-linear
使用 OpenClaw Linear Plugin,需要按照以下步骤进行:安装 Cloudflare CLI、配置 Cloudflare Tunnel、设置插件配置等。
配置 OpenClaw Linear Plugin,需要在 openclaw.json 文件中添加以下设置:defaultAgentId、maxReworkAttempts、enableAudit 等。
OpenClaw Linear Plugin 提供了多个 API 接口,包括 dispatch.list、dispatch.get、dispatch.retry 等,用于程序化访问插件功能。
OpenClaw Linear Plugin 的工作流包括 Auto-triage、Worker → Auditor pipeline 等阶段,用于自动分配任务、代码审查和重写等功能。
高质量的AI工作流插件,支持OAuth和多语言
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
总体来看,OpenClaw线性插件 是一款质量良好的Agent工作流,在同类工具中具备一定竞争力。AI Skill Hub 将持续追踪其更新动态,建议收藏备用,结合自身场景选择合适时机引入使用。
| 原始名称 | openclaw-linear-plugin |
| 原始描述 | 开源AI工作流:Linear Agent plugin for OpenClaw — webhook-driven AI pipeline with OAuth, multi-。⭐12 · TypeScript |
| Topics | AI工作流TypeScript |
| GitHub | https://github.com/calltelemetry/openclaw-linear-plugin |
| License | MIT |
| 语言 | TypeScript |
收录时间:2026-05-29 · 更新时间:2026-05-30 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端