@sakanano-moe/agenthelm 6.7.0 → 6.11.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/runtime/index.json +6 -6
- package/runtime/plugins/agent-pack/.codex-plugin/plugin.json +1 -1
- package/runtime/plugins/agent-pack/hooks/hooks.json +32 -0
- package/runtime/plugins/agent-pack/plugin.json +1 -1
- package/runtime/plugins/agent-pack/references/local-only.md +126 -0
- package/runtime/plugins/agent-pack/references/nudge.en.md +58 -0
- package/runtime/plugins/agent-pack/references/nudge.md +58 -0
- package/runtime/plugins/agent-pack/runtime/agent_pack_nudge.py +573 -0
- package/runtime/plugins/agent-pack/runtime/agenthelm.py +419 -107
- package/runtime/plugins/agent-pack/runtime/agenthelm_runtime.py +77 -53
- package/runtime/plugins/agent-pack/runtime/i18n_agent_pack.py +78 -0
- package/runtime/plugins/agent-pack/runtime/local_only.py +1130 -0
- package/runtime/plugins/agent-pack/runtime/locale/en.json +385 -0
- package/runtime/plugins/agent-pack/runtime/mcp_server.py +25 -0
- package/runtime/plugins/agent-pack/runtime/nudge_text.py +107 -0
- package/runtime/plugins/agent-pack/skills/agent-pack/SKILL.md +9 -1
- package/runtime/plugins/agents-init/.codex-plugin/plugin.json +1 -1
- package/runtime/plugins/agents-init/content.json +17 -2
- package/runtime/plugins/agents-init/plugin.json +1 -1
- package/runtime/plugins/agents-init/skills/agents-init/AGENT.template.md +47 -0
- package/runtime/plugins/agents-init/skills/agents-init/SKILL.md +39 -1
- package/runtime/plugins/agents-init/skills/agents-init/project.schema.json +404 -70
- package/runtime/plugins/agents-init/skills/agents-init/scripts/adopt.py +596 -0
- package/runtime/plugins/agents-init/skills/agents-init/scripts/i18n_init.py +78 -0
- package/runtime/plugins/agents-init/skills/agents-init/scripts/init_project.py +245 -72
- package/runtime/plugins/agents-init/skills/agents-init/scripts/locale/en.json +210 -0
- package/runtime/plugins/agents-init/skills/agents-init/scripts/regions.py +99 -0
- package/runtime/plugins/agents-init/skills/agents-init/scripts/scaffold.py +1081 -0
- package/runtime/plugins/agents-init/skills/agents-init/scripts/test_adopt.py +551 -0
- package/runtime/plugins/agents-init/skills/agents-init/scripts/test_init_project.py +46 -2
- package/runtime/plugins/agents-init/skills/agents-init/scripts/test_scaffold.py +555 -0
- package/runtime/plugins/agents-init/skills/agents-init/skeleton.json +66 -0
- package/runtime/plugins/agents-init/skills/agents-init/skill.json +1 -1
- package/runtime/plugins/opinion-manager/.codex-plugin/plugin.json +1 -1
- package/runtime/plugins/opinion-manager/plugin.json +1 -1
- package/runtime/plugins/opinion-manager/references/inbox.en.md +48 -0
- package/runtime/plugins/opinion-manager/references/inbox.md +48 -0
- package/runtime/plugins/opinion-manager/runtime/context.py +19 -18
- package/runtime/plugins/opinion-manager/runtime/i18n_opinion.py +78 -0
- package/runtime/plugins/opinion-manager/runtime/inbox.py +397 -0
- package/runtime/plugins/opinion-manager/runtime/inbox_text.py +101 -0
- package/runtime/plugins/opinion-manager/runtime/lifecycle.py +45 -44
- package/runtime/plugins/opinion-manager/runtime/locale/en.json +184 -0
- package/runtime/plugins/opinion-manager/runtime/opinion_manager.py +55 -50
- package/runtime/plugins/opinion-manager/runtime/versioned.py +84 -83
- package/runtime/plugins/opinion-manager/skills/opinion-manager/SKILL.md +15 -2
- package/runtime/plugins/project-orchestrator/.codex-plugin/plugin.json +1 -1
- package/runtime/plugins/project-orchestrator/content.json +30 -3
- package/runtime/plugins/project-orchestrator/plugin.json +1 -1
- package/runtime/plugins/project-orchestrator/references/case-workspaces.md +9 -1
- package/runtime/plugins/project-orchestrator/references/case.schema.json +1 -0
- package/runtime/plugins/project-orchestrator/references/sop-interview.md +83 -0
- package/runtime/plugins/project-orchestrator/references/sop.md +156 -0
- package/runtime/plugins/project-orchestrator/runtime/assets.py +52 -57
- package/runtime/plugins/project-orchestrator/runtime/case.py +139 -80
- package/runtime/plugins/project-orchestrator/runtime/case_structure.py +71 -0
- package/runtime/plugins/project-orchestrator/runtime/case_workspace.py +47 -46
- package/runtime/plugins/project-orchestrator/runtime/i18n_orchestrator.py +78 -0
- package/runtime/plugins/project-orchestrator/runtime/locale/en.json +1409 -0
- package/runtime/plugins/project-orchestrator/runtime/memory.py +44 -43
- package/runtime/plugins/project-orchestrator/runtime/private_paths.py +119 -0
- package/runtime/plugins/project-orchestrator/runtime/project_base.py +37 -19
- package/runtime/plugins/project-orchestrator/runtime/project_cli.py +267 -174
- package/runtime/plugins/project-orchestrator/runtime/project_demo.py +130 -48
- package/runtime/plugins/project-orchestrator/runtime/project_maintain.py +524 -134
- package/runtime/plugins/project-orchestrator/runtime/project_menu.py +159 -85
- package/runtime/plugins/project-orchestrator/runtime/project_real.py +191 -106
- package/runtime/plugins/project-orchestrator/runtime/project_write.py +58 -55
- package/runtime/plugins/project-orchestrator/runtime/sop.py +1670 -0
- package/runtime/plugins/project-orchestrator/runtime/sop_structure.py +226 -0
- package/runtime/plugins/project-orchestrator/runtime/wf.py +74 -70
- package/runtime/plugins/project-orchestrator/skills/project-orchestrator/SKILL.md +22 -0
- package/runtime/plugins/project-orchestrator/sop-templates/blank/SOP.en.md +57 -0
- package/runtime/plugins/project-orchestrator/sop-templates/blank/SOP.md +57 -0
- package/runtime/plugins/project-orchestrator/sop-templates/knowledge-digest/SOP.en.md +77 -0
- package/runtime/plugins/project-orchestrator/sop-templates/knowledge-digest/SOP.md +77 -0
- package/runtime/plugins/project-orchestrator/sop-templates/knowledge-digest/templates/digest.en.md +11 -0
- package/runtime/plugins/project-orchestrator/sop-templates/knowledge-digest/templates/digest.md +11 -0
- package/runtime/plugins/project-orchestrator/sop-templates/video-to-transcript/SOP.en.md +87 -0
- package/runtime/plugins/project-orchestrator/sop-templates/video-to-transcript/SOP.md +87 -0
- package/runtime/plugins/project-orchestrator/sop-templates/weekly-review/SOP.en.md +75 -0
- package/runtime/plugins/project-orchestrator/sop-templates/weekly-review/SOP.md +75 -0
- package/runtime/plugins/project-orchestrator/sop-templates/weekly-review/templates/review.en.md +11 -0
- package/runtime/plugins/project-orchestrator/sop-templates/weekly-review/templates/review.md +12 -0
- package/runtime/plugins/project-orchestrator/templates/CASE.en.md +39 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: "1.0"
|
|
3
|
+
id: "{{id}}"
|
|
4
|
+
title: "{{title}}"
|
|
5
|
+
status: "draft"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
description: "【待补充】一句话:这个流程做什么、什么时候该想起它"
|
|
8
|
+
trigger: "【待补充】什么情况下用这个流程"
|
|
9
|
+
exclude: ""
|
|
10
|
+
confirm: "ask"
|
|
11
|
+
creates_case: "always"
|
|
12
|
+
created: "{{date}}"
|
|
13
|
+
aliases: []
|
|
14
|
+
examples_hit: []
|
|
15
|
+
examples_miss: []
|
|
16
|
+
on_events: []
|
|
17
|
+
outputs: []
|
|
18
|
+
sources: []
|
|
19
|
+
decided: []
|
|
20
|
+
---
|
|
21
|
+
# {{title}}
|
|
22
|
+
|
|
23
|
+
## 目的
|
|
24
|
+
|
|
25
|
+
【待补充】这个流程要达成什么结果,一两句话。
|
|
26
|
+
|
|
27
|
+
## 前置条件
|
|
28
|
+
|
|
29
|
+
每行一项:`- 种类:名称|用途:…|安装:…|替代:另一项的名称|缺失时:询问用户`。
|
|
30
|
+
种类可用:命令、模块(Python 模块)、环境变量、路径、技能、MCP、手动确认。缺失时可用:询问用户、停止、跳过该步、使用替代。
|
|
31
|
+
API 密钥只写环境变量名,不写密钥本身。确实不需要任何工具时写“无”。
|
|
32
|
+
|
|
33
|
+
- 命令:【待补充】|用途:【待补充】|安装:【待补充】|缺失时:询问用户
|
|
34
|
+
|
|
35
|
+
## 步骤
|
|
36
|
+
|
|
37
|
+
每步一个编号,下面用缩进的子项补充;可用子项:工具、输入、中间产物、最终产物、检查点、失败时、需确认、说明。
|
|
38
|
+
“工具”里写的名称必须在上面的前置条件里声明过。
|
|
39
|
+
|
|
40
|
+
1. 【待补充】第一步做什么
|
|
41
|
+
- 工具:【待补充】
|
|
42
|
+
- 输入:【待补充】
|
|
43
|
+
- 中间产物:【待补充】
|
|
44
|
+
- 检查点:【待补充】怎样算这一步做对了
|
|
45
|
+
- 失败时:【待补充】(不写则按“执行约定”处理)
|
|
46
|
+
|
|
47
|
+
## 完成标准
|
|
48
|
+
|
|
49
|
+
- 【待补充】怎样才算整个流程做完了(能被检查的条件,例如“成品文件存在于 …”)
|
|
50
|
+
|
|
51
|
+
## 例外与回退
|
|
52
|
+
|
|
53
|
+
- 【待补充】常见的例外情况和处理办法;没有就写“无”。
|
|
54
|
+
|
|
55
|
+
## 修订记录
|
|
56
|
+
|
|
57
|
+
暂无。
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: "1.0"
|
|
3
|
+
id: "{{id}}"
|
|
4
|
+
title: "Weekly knowledge digest"
|
|
5
|
+
status: "draft"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
description: "Regularly tidy new notes and materials: merge duplicates, fill in links and distill rule candidates"
|
|
8
|
+
trigger: "The user wants the recent notes and materials tidied, or the fixed digest day has come"
|
|
9
|
+
exclude: "Only looking up one particular document"
|
|
10
|
+
schedule: "weekly:sat"
|
|
11
|
+
confirm: "ask"
|
|
12
|
+
creates_case: "always"
|
|
13
|
+
created: "{{date}}"
|
|
14
|
+
aliases:
|
|
15
|
+
- "knowledge digest"
|
|
16
|
+
- "tidy notes"
|
|
17
|
+
examples_hit:
|
|
18
|
+
- "Tidy up my recent notes"
|
|
19
|
+
- "Do a knowledge digest"
|
|
20
|
+
examples_miss:
|
|
21
|
+
- "Find that report from last time"
|
|
22
|
+
on_events: []
|
|
23
|
+
outputs: []
|
|
24
|
+
sources: []
|
|
25
|
+
decided: []
|
|
26
|
+
---
|
|
27
|
+
# {{title}}
|
|
28
|
+
|
|
29
|
+
## Purpose
|
|
30
|
+
|
|
31
|
+
Bring the notes and materials added or changed over a period into a state where they are searchable, free of duplicates and linked to each other, and distill practices that keep recurring into rule candidates.
|
|
32
|
+
|
|
33
|
+
## Prerequisites
|
|
34
|
+
|
|
35
|
+
- Command: agenthelm | Purpose: find new materials by keyword and date (`agenthelm project find`) | Install: see agenthelm's INSTALL.md | If missing: Ask the user
|
|
36
|
+
|
|
37
|
+
## Steps
|
|
38
|
+
|
|
39
|
+
1. Settle the scope of the digest
|
|
40
|
+
- Inputs: a directory, tags or a period
|
|
41
|
+
- Checkpoint: the user states the scope explicitly
|
|
42
|
+
- Needs confirmation: yes
|
|
43
|
+
- Note: if the scope contains materials with personal progress, accounts or private material, tell the user first and let them decide whether to include them; by default this procedure tidies only shareable knowledge content
|
|
44
|
+
2. Collect new and changed materials
|
|
45
|
+
- Tools: agenthelm
|
|
46
|
+
- Inputs: the scope; the date of the last digest
|
|
47
|
+
- Intermediates: a list of things to tidy
|
|
48
|
+
- Checkpoint: the list holds only materials in scope
|
|
49
|
+
3. Merge duplicates and outdated content
|
|
50
|
+
- Inputs: the list of things to tidy
|
|
51
|
+
- Checkpoint: every merge or deletion is on the list
|
|
52
|
+
- Needs confirmation: yes
|
|
53
|
+
- Note: hand the list to the user for confirmation before merging or deleting, and never delete directly; keep the originals that were merged until the user confirms
|
|
54
|
+
4. Fill in links and indexes
|
|
55
|
+
- Checkpoint: each new material is referenced by at least one index or related material, and no link is broken
|
|
56
|
+
5. Distill rule candidates
|
|
57
|
+
- Inputs: practices that recurred during the digest and that the user has stated explicitly
|
|
58
|
+
- Intermediates: a candidate list (each with the places it is based on)
|
|
59
|
+
- Note: only form candidates and hand them to rule management (opinion-manager) for the user-confirmation flow; never write into OPINION.md yourself, and the number of recurrences is not the user's confirmation
|
|
60
|
+
6. Record the result
|
|
61
|
+
- Final outputs: docs/digest-DATE.md inside this Case's directory (using the structure of templates/digest.md in this directory)
|
|
62
|
+
- Checkpoint: merges, deletions, new links and candidates are each recorded
|
|
63
|
+
|
|
64
|
+
## Completion criteria
|
|
65
|
+
|
|
66
|
+
- The result is saved and registered as a deliverable
|
|
67
|
+
- Everything merged or deleted was confirmed by the user
|
|
68
|
+
- The rule candidates were handed to the user for a decision, or "no candidates this time" is recorded explicitly
|
|
69
|
+
|
|
70
|
+
## Exceptions and fallback
|
|
71
|
+
|
|
72
|
+
- Nothing new in scope: record it as it is, and do not change existing content just to have something to show
|
|
73
|
+
- Content that was already tidied turns out to be wrong: do not overwrite the original; point it out in the result and ask the user
|
|
74
|
+
|
|
75
|
+
## Revision log
|
|
76
|
+
|
|
77
|
+
None yet.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: "1.0"
|
|
3
|
+
id: "{{id}}"
|
|
4
|
+
title: "每周知识整理"
|
|
5
|
+
status: "draft"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
description: "定期整理新增的笔记与资料:合并重复、补齐链接,并提炼规则候选"
|
|
8
|
+
trigger: "用户要整理最近的笔记和资料,或到了固定的整理日"
|
|
9
|
+
exclude: "只是查找某一份资料"
|
|
10
|
+
schedule: "weekly:sat"
|
|
11
|
+
confirm: "ask"
|
|
12
|
+
creates_case: "always"
|
|
13
|
+
created: "{{date}}"
|
|
14
|
+
aliases:
|
|
15
|
+
- "知识整理"
|
|
16
|
+
- "整理笔记"
|
|
17
|
+
examples_hit:
|
|
18
|
+
- "把最近的笔记整理一下"
|
|
19
|
+
- "做一次知识整理"
|
|
20
|
+
examples_miss:
|
|
21
|
+
- "帮我找一下上次那份报告"
|
|
22
|
+
on_events: []
|
|
23
|
+
outputs: []
|
|
24
|
+
sources: []
|
|
25
|
+
decided: []
|
|
26
|
+
---
|
|
27
|
+
# {{title}}
|
|
28
|
+
|
|
29
|
+
## 目的
|
|
30
|
+
|
|
31
|
+
把一段时间内新增或变更的笔记、资料整理成可检索、不重复、互相链接的状态,并把反复出现的做法沉淀成规则候选。
|
|
32
|
+
|
|
33
|
+
## 前置条件
|
|
34
|
+
|
|
35
|
+
- 命令:agenthelm|用途:按关键词、日期查找新增的资料(`agenthelm project find`)|安装:见 agenthelm 的 INSTALL.md|缺失时:询问用户
|
|
36
|
+
|
|
37
|
+
## 步骤
|
|
38
|
+
|
|
39
|
+
1. 确定整理范围
|
|
40
|
+
- 输入:目录、标签或时间段
|
|
41
|
+
- 检查点:范围由用户明确给出
|
|
42
|
+
- 需确认:是
|
|
43
|
+
- 说明:范围内如有含个人进度、账号或私人素材的资料,先告诉用户,由用户决定是否纳入;本流程默认只整理可共享的知识类内容
|
|
44
|
+
2. 收集新增与变更的资料
|
|
45
|
+
- 工具:agenthelm
|
|
46
|
+
- 输入:范围;上次整理的日期
|
|
47
|
+
- 中间产物:待整理清单
|
|
48
|
+
- 检查点:清单只含范围内的资料
|
|
49
|
+
3. 合并重复与过时内容
|
|
50
|
+
- 输入:待整理清单
|
|
51
|
+
- 检查点:每一处合并或删除都列在清单里
|
|
52
|
+
- 需确认:是
|
|
53
|
+
- 说明:合并或删除前把清单交给用户确认,不直接删除;被合并的原文先保留到用户确认之后
|
|
54
|
+
4. 补齐链接与索引
|
|
55
|
+
- 检查点:新增资料至少被一个索引或相关资料引用,没有断链
|
|
56
|
+
5. 提炼规则候选
|
|
57
|
+
- 输入:整理过程中反复出现、用户明确表达过的做法
|
|
58
|
+
- 中间产物:候选清单(每条写明依据来自哪几处)
|
|
59
|
+
- 说明:只形成候选,交给规则管理(opinion-manager)走用户确认流程;不自行写入 OPINION.md,重复出现的次数不等于用户已确认
|
|
60
|
+
6. 记录整理结果
|
|
61
|
+
- 最终产物:本 Case 目录内的 docs/digest-日期.md(使用本目录 templates/digest.md 的结构)
|
|
62
|
+
- 检查点:合并、删除、新增链接、候选各有记录
|
|
63
|
+
|
|
64
|
+
## 完成标准
|
|
65
|
+
|
|
66
|
+
- 整理结果已保存并登记为交付物
|
|
67
|
+
- 合并或删除的内容都经用户确认
|
|
68
|
+
- 规则候选已交给用户裁决,或明确记录“本次无候选”
|
|
69
|
+
|
|
70
|
+
## 例外与回退
|
|
71
|
+
|
|
72
|
+
- 范围内没有新增内容:照实记录,不为了凑数改动已有内容
|
|
73
|
+
- 发现已整理的内容有误:不覆盖原文,在结果里标出并问用户
|
|
74
|
+
|
|
75
|
+
## 修订记录
|
|
76
|
+
|
|
77
|
+
暂无。
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: "1.0"
|
|
3
|
+
id: "{{id}}"
|
|
4
|
+
title: "Video to transcript"
|
|
5
|
+
status: "draft"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
description: "Turn a video (a link or a local file) into a transcript"
|
|
8
|
+
trigger: "The user wants a video turned into a transcript, subtitles or searchable text"
|
|
9
|
+
exclude: "The user already has a transcript and only wants it summarized or rewritten"
|
|
10
|
+
confirm: "ask"
|
|
11
|
+
creates_case: "always"
|
|
12
|
+
created: "{{date}}"
|
|
13
|
+
aliases:
|
|
14
|
+
- "video to text"
|
|
15
|
+
- "video transcription"
|
|
16
|
+
examples_hit:
|
|
17
|
+
- "Turn this video into a transcript"
|
|
18
|
+
- "Transcribe the video at this link"
|
|
19
|
+
examples_miss:
|
|
20
|
+
- "Summarize this transcript"
|
|
21
|
+
on_events: []
|
|
22
|
+
outputs: []
|
|
23
|
+
sources: []
|
|
24
|
+
decided: []
|
|
25
|
+
---
|
|
26
|
+
# {{title}}
|
|
27
|
+
|
|
28
|
+
## Purpose
|
|
29
|
+
|
|
30
|
+
Turn a video into a readable, searchable transcript that keeps its source information.
|
|
31
|
+
|
|
32
|
+
## Prerequisites
|
|
33
|
+
|
|
34
|
+
A set of common choices; the names are examples: confirm, replace or delete each one according to the tools you actually use. Items marked "Only if" are needed only when this run's input matches the condition.
|
|
35
|
+
|
|
36
|
+
- Command: yutto | Purpose: download Bilibili videos (BV / av IDs, bilibili.com links); `--audio-only` fetches just the audio, `-d` sets the output directory | Install: `pipx install yutto` (needs FFmpeg configured) | Only if: the input is a Bilibili video | If missing: Ask the user
|
|
37
|
+
- Command: yt-dlp | Purpose: download online videos from other sites | Install: `pipx install yt-dlp` or the system package manager | Only if: the input is an online video from a site other than Bilibili | If missing: Ask the user
|
|
38
|
+
- Command: ffmpeg | Purpose: merge Bilibili audio and video streams, extract audio from a video, convert to the format the transcription tool needs | Install: the system package manager (for example `brew install ffmpeg`) | If missing: Ask the user
|
|
39
|
+
- Command: whisper-cli | Purpose: transcription with a local model | Install: follow the official instructions of the local transcription tool you use | Alternative: TRANSCRIBE_API_KEY | If missing: Use the alternative
|
|
40
|
+
- Path: ~/models/whisper.bin | Purpose: the model file whisper-cli needs; change it to your actual location | If missing: Ask the user
|
|
41
|
+
- Environment variable: TRANSCRIBE_API_KEY | Purpose: the key for a cloud transcription API, if you switch to one (write only the variable name) | If missing: Ask the user
|
|
42
|
+
|
|
43
|
+
## Steps
|
|
44
|
+
|
|
45
|
+
1. Confirm the input and options
|
|
46
|
+
- Inputs: the video link or local file path; the language; whether timestamps are needed
|
|
47
|
+
- Checkpoint: the input is clear, and a local file really exists
|
|
48
|
+
2. Get the video file
|
|
49
|
+
- Tools: yutto, yt-dlp
|
|
50
|
+
- Inputs: the video link (skip this step for a local file)
|
|
51
|
+
- Intermediates: the downloaded video or audio file
|
|
52
|
+
- Checkpoint: the file exists and is larger than 0 bytes
|
|
53
|
+
- On failure: Ask the user (when a link is dead, needs a login or is region-locked, do not work around it yourself)
|
|
54
|
+
- Needs confirmation: yes
|
|
55
|
+
- Note: use yutto for Bilibili links and yt-dlp for other sites. For content that needs a login, the user logs in and saves the login information themselves (see yutto's official documentation for how); credentials are written neither into this SOP nor into the Case. Downloading a large file is a slow step, so the "run conventions" decide whether to ask first
|
|
56
|
+
3. Extract the audio
|
|
57
|
+
- Tools: ffmpeg
|
|
58
|
+
- Inputs: the video or audio file from the previous step
|
|
59
|
+
- Intermediates: audio.wav (mono, 16 kHz; follow the transcription tool if it needs another format)
|
|
60
|
+
- Checkpoint: the audio length differs from the video length by at most 1 second
|
|
61
|
+
4. Transcribe
|
|
62
|
+
- Tools: whisper-cli, TRANSCRIBE_API_KEY
|
|
63
|
+
- Inputs: audio.wav; the language
|
|
64
|
+
- Intermediates: the raw transcription result
|
|
65
|
+
- Checkpoint: the text is not empty and its length roughly matches the audio length
|
|
66
|
+
- Note: prefer local transcription; switch to a cloud API only when the local one is unavailable and the user agrees, because using an API sends the audio to a third-party service, which needs the user's consent first
|
|
67
|
+
5. Tidy up and save
|
|
68
|
+
- Inputs: the raw transcription result
|
|
69
|
+
- Final outputs: the transcript (see the completion criteria for where to save it)
|
|
70
|
+
- Checkpoint: spot-check one passage each from the start, the middle and the end against the audio
|
|
71
|
+
6. Clean up
|
|
72
|
+
- Note: handle the intermediates according to the "run conventions"; clean up only files registered in the Case during this run
|
|
73
|
+
|
|
74
|
+
## Completion criteria
|
|
75
|
+
|
|
76
|
+
- The transcript is saved at: [TO FILL IN]
|
|
77
|
+
- The start of the transcript records the source (link or file name), the transcription tool and the date
|
|
78
|
+
- The intermediates were handled as agreed, and the outcome is noted in the Case's work log
|
|
79
|
+
|
|
80
|
+
## Exceptions and fallback
|
|
81
|
+
|
|
82
|
+
- The video has no audio track: stop and tell the user; do not make up text
|
|
83
|
+
- The audio is very long: transcribe it in segments and merge them, then check that the passages join up
|
|
84
|
+
|
|
85
|
+
## Revision log
|
|
86
|
+
|
|
87
|
+
None yet.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: "1.0"
|
|
3
|
+
id: "{{id}}"
|
|
4
|
+
title: "视频转文字稿"
|
|
5
|
+
status: "draft"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
description: "把一个视频(链接或本地文件)转成文字稿"
|
|
8
|
+
trigger: "用户要把某个视频转成文字稿、字幕或可检索的文本"
|
|
9
|
+
exclude: "用户已经提供了文字稿,只是要总结或改写"
|
|
10
|
+
confirm: "ask"
|
|
11
|
+
creates_case: "always"
|
|
12
|
+
created: "{{date}}"
|
|
13
|
+
aliases:
|
|
14
|
+
- "视频转文字"
|
|
15
|
+
- "视频转录"
|
|
16
|
+
examples_hit:
|
|
17
|
+
- "帮我把这个视频转成文字稿"
|
|
18
|
+
- "这个链接的视频转录一下"
|
|
19
|
+
examples_miss:
|
|
20
|
+
- "总结一下这份文字稿"
|
|
21
|
+
on_events: []
|
|
22
|
+
outputs: []
|
|
23
|
+
sources: []
|
|
24
|
+
decided: []
|
|
25
|
+
---
|
|
26
|
+
# {{title}}
|
|
27
|
+
|
|
28
|
+
## 目的
|
|
29
|
+
|
|
30
|
+
把一个视频转成可阅读、可检索的文字稿,并保留来源信息。
|
|
31
|
+
|
|
32
|
+
## 前置条件
|
|
33
|
+
|
|
34
|
+
下面是一组常见选择,名称都是示例:请按你实际使用的工具逐项确认、替换或删除。带“仅当”的项只在本次输入符合条件时才需要。
|
|
35
|
+
|
|
36
|
+
- 命令:yutto|用途:下载 B 站视频(BV / av 号、bilibili.com 链接),可用 `--audio-only` 只取音频、`-d` 指定输出目录|安装:`pipx install yutto`(需要已配置 FFmpeg)|仅当:输入是 B 站视频|缺失时:询问用户
|
|
37
|
+
- 命令:yt-dlp|用途:下载其他网站的在线视频|安装:`pipx install yt-dlp` 或系统包管理器|仅当:输入是 B 站以外的在线视频|缺失时:询问用户
|
|
38
|
+
- 命令:ffmpeg|用途:合并 B 站音视频流、从视频提取音频、转成转录工具需要的格式|安装:系统包管理器(如 `brew install ffmpeg`)|缺失时:询问用户
|
|
39
|
+
- 命令:whisper-cli|用途:本地模型转录|安装:按所用的本地转录工具的官方说明|替代:TRANSCRIBE_API_KEY|缺失时:使用替代
|
|
40
|
+
- 路径:~/models/whisper.bin|用途:whisper-cli 需要的模型文件,请改成你的实际位置|缺失时:询问用户
|
|
41
|
+
- 环境变量:TRANSCRIBE_API_KEY|用途:改用云端转录 API 时的密钥(只写变量名)|缺失时:询问用户
|
|
42
|
+
|
|
43
|
+
## 步骤
|
|
44
|
+
|
|
45
|
+
1. 确认输入与选项
|
|
46
|
+
- 输入:视频链接或本地文件路径;语言;是否需要时间戳
|
|
47
|
+
- 检查点:输入明确,本地文件确实存在
|
|
48
|
+
2. 取得视频文件
|
|
49
|
+
- 工具:yutto、yt-dlp
|
|
50
|
+
- 输入:视频链接(本地文件则跳过本步)
|
|
51
|
+
- 中间产物:下载的视频或音频文件
|
|
52
|
+
- 检查点:文件存在且大小大于 0
|
|
53
|
+
- 失败时:询问用户(链接失效、需要登录或地区限制时不要自行绕过)
|
|
54
|
+
- 需确认:是
|
|
55
|
+
- 说明:B 站链接用 yutto,其他站点用 yt-dlp。需要登录才能看的内容,由用户自己登录并保存登录信息(yutto 的做法见其官方文档),登录凭据不写进本 SOP、不写进 Case。大文件下载属于耗时步骤,按“执行约定”决定是否先问
|
|
56
|
+
3. 提取音频
|
|
57
|
+
- 工具:ffmpeg
|
|
58
|
+
- 输入:上一步的视频或音频文件
|
|
59
|
+
- 中间产物:audio.wav(单声道,16 kHz;转录工具要求其他格式时按其要求)
|
|
60
|
+
- 检查点:音频时长与视频时长相差不超过 1 秒
|
|
61
|
+
4. 转录
|
|
62
|
+
- 工具:whisper-cli、TRANSCRIBE_API_KEY
|
|
63
|
+
- 输入:audio.wav;语言
|
|
64
|
+
- 中间产物:原始转录结果
|
|
65
|
+
- 检查点:文本非空,长度与音频时长大致匹配
|
|
66
|
+
- 说明:优先使用本地转录;本地不可用且用户同意时才改用云端 API,使用 API 会把音频发送给第三方服务,需要先问用户
|
|
67
|
+
5. 整理与保存
|
|
68
|
+
- 输入:原始转录结果
|
|
69
|
+
- 最终产物:文字稿(保存位置见完成标准)
|
|
70
|
+
- 检查点:抽查开头、中间、结尾各一段与音频一致
|
|
71
|
+
6. 清理
|
|
72
|
+
- 说明:按“执行约定”处理中间产物;只清理本次在 Case 里登记过的文件
|
|
73
|
+
|
|
74
|
+
## 完成标准
|
|
75
|
+
|
|
76
|
+
- 文字稿已保存到:【待补充】
|
|
77
|
+
- 文字稿开头记录了来源(链接或文件名)、转录工具与日期
|
|
78
|
+
- 中间产物已按约定处理,处理结果记在 Case 的工作记录里
|
|
79
|
+
|
|
80
|
+
## 例外与回退
|
|
81
|
+
|
|
82
|
+
- 视频无音轨:停止并告诉用户,不要凭空生成文本
|
|
83
|
+
- 音频很长:可按段切分转录再合并,合并后检查段落衔接
|
|
84
|
+
|
|
85
|
+
## 修订记录
|
|
86
|
+
|
|
87
|
+
暂无。
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: "1.0"
|
|
3
|
+
id: "{{id}}"
|
|
4
|
+
title: "Weekly review"
|
|
5
|
+
status: "draft"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
description: "Look back on the progress of chosen items each week, write a review and plan the next week"
|
|
8
|
+
trigger: "The user wants a weekly review or to look back on the week, or the fixed review day has come"
|
|
9
|
+
exclude: "Only asking where one item stands right now"
|
|
10
|
+
schedule: "weekly:sun"
|
|
11
|
+
confirm: "ask"
|
|
12
|
+
creates_case: "always"
|
|
13
|
+
created: "{{date}}"
|
|
14
|
+
aliases:
|
|
15
|
+
- "weekly review"
|
|
16
|
+
examples_hit:
|
|
17
|
+
- "Do this week's review"
|
|
18
|
+
- "Look back on what I did this week"
|
|
19
|
+
examples_miss:
|
|
20
|
+
- "Where is this item right now"
|
|
21
|
+
on_events: []
|
|
22
|
+
outputs: []
|
|
23
|
+
sources: []
|
|
24
|
+
decided: []
|
|
25
|
+
---
|
|
26
|
+
# {{title}}
|
|
27
|
+
|
|
28
|
+
## Purpose
|
|
29
|
+
|
|
30
|
+
Look back on what the chosen items actually achieved this week and where they got stuck, collect the lessons, and settle the few most important things for next week.
|
|
31
|
+
|
|
32
|
+
## Prerequisites
|
|
33
|
+
|
|
34
|
+
- Command: agenthelm | Purpose: read the progress of the chosen items (`agenthelm project progress --output json`) | Install: see agenthelm's INSTALL.md | If missing: Ask the user
|
|
35
|
+
|
|
36
|
+
## Steps
|
|
37
|
+
|
|
38
|
+
1. Settle the scope of the review
|
|
39
|
+
- Inputs: the items to include (tags, item names or IDs)
|
|
40
|
+
- Checkpoint: the user states the scope explicitly; do not include every item by default
|
|
41
|
+
- Needs confirmation: yes
|
|
42
|
+
- Note: the review reads the work logs of the chosen items, which may hold personal progress. Items the user did not include are never read and never written into the review; the review document stays in the project that runs it, and if that project may become public, do not use this procedure to review personal progress
|
|
43
|
+
2. Collect the progress of the chosen items
|
|
44
|
+
- Tools: agenthelm
|
|
45
|
+
- Inputs: this week's start and end dates; the scope from the previous step
|
|
46
|
+
- Intermediates: a progress list (item, status, this week's work log)
|
|
47
|
+
- Checkpoint: only items in scope are covered, and all of them that are in progress or were closed this week
|
|
48
|
+
3. Compare with last week's plan
|
|
49
|
+
- Inputs: the "next week's plan" in the previous review document
|
|
50
|
+
- Checkpoint: every planned item has a verdict: done / not done, with the reason
|
|
51
|
+
4. Write the review document
|
|
52
|
+
- Inputs: the results of the steps above
|
|
53
|
+
- Final outputs: docs/review-DATE.md inside this Case's directory (using the structure of templates/review.md in this directory)
|
|
54
|
+
- Checkpoint: every section has content and the conclusions have grounds (pointing to an item or a file); the scope of this review is stated at the top
|
|
55
|
+
5. Plan next week
|
|
56
|
+
- Inputs: the unfinished items and blockers in the review document
|
|
57
|
+
- Checkpoint: no more than the number the user set; every item has a clear next action
|
|
58
|
+
- Needs confirmation: yes
|
|
59
|
+
- Note: the user decides next week's plan; only suggest
|
|
60
|
+
6. Register the deliverable
|
|
61
|
+
- Note: register the review document as a deliverable of the Case
|
|
62
|
+
|
|
63
|
+
## Completion criteria
|
|
64
|
+
|
|
65
|
+
- The review document is saved inside this Case's directory, states its scope at the top and is registered as a deliverable
|
|
66
|
+
- Next week's plan was confirmed by the user
|
|
67
|
+
|
|
68
|
+
## Exceptions and fallback
|
|
69
|
+
|
|
70
|
+
- The chosen items have no records at all this week: say "no records this week" as it is, and ask the user whether something went unrecorded
|
|
71
|
+
- The user later wants to publish or share the review: the user first confirms, section by section, what may be public, and then it is copied out; the original document is not moved
|
|
72
|
+
|
|
73
|
+
## Revision log
|
|
74
|
+
|
|
75
|
+
None yet.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: "1.0"
|
|
3
|
+
id: "{{id}}"
|
|
4
|
+
title: "每周复盘"
|
|
5
|
+
status: "draft"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
description: "每周回看所选事项的进展,写复盘并规划下周"
|
|
8
|
+
trigger: "用户要做周复盘、回顾本周,或到了固定的复盘日"
|
|
9
|
+
exclude: "只是查询某个事项当前进展"
|
|
10
|
+
schedule: "weekly:sun"
|
|
11
|
+
confirm: "ask"
|
|
12
|
+
creates_case: "always"
|
|
13
|
+
created: "{{date}}"
|
|
14
|
+
aliases:
|
|
15
|
+
- "周复盘"
|
|
16
|
+
examples_hit:
|
|
17
|
+
- "做一下本周复盘"
|
|
18
|
+
- "回顾一下这周做了什么"
|
|
19
|
+
examples_miss:
|
|
20
|
+
- "这个事项现在到哪了"
|
|
21
|
+
on_events: []
|
|
22
|
+
outputs: []
|
|
23
|
+
sources: []
|
|
24
|
+
decided: []
|
|
25
|
+
---
|
|
26
|
+
# {{title}}
|
|
27
|
+
|
|
28
|
+
## 目的
|
|
29
|
+
|
|
30
|
+
回看本周所选事项实际完成了什么、卡在哪里,沉淀经验,并定下下周最重要的几件事。
|
|
31
|
+
|
|
32
|
+
## 前置条件
|
|
33
|
+
|
|
34
|
+
- 命令:agenthelm|用途:读取所选事项的进展(`agenthelm project progress --output json`)|安装:见 agenthelm 的 INSTALL.md|缺失时:询问用户
|
|
35
|
+
|
|
36
|
+
## 步骤
|
|
37
|
+
|
|
38
|
+
1. 确定复盘范围
|
|
39
|
+
- 输入:要纳入的事项(标签、事项名或编号)
|
|
40
|
+
- 检查点:范围由用户明确给出,不默认纳入全部事项
|
|
41
|
+
- 需确认:是
|
|
42
|
+
- 说明:复盘会读取所选事项的工作记录,其中可能有个人进度。未被用户纳入的事项一律不读、不写进复盘;复盘文档只留在运行它的这个项目里,该项目若会公开,不要用本流程复盘个人进度
|
|
43
|
+
2. 收集所选事项的进展
|
|
44
|
+
- 工具:agenthelm
|
|
45
|
+
- 输入:本周的起止日期;上一步确定的范围
|
|
46
|
+
- 中间产物:进展清单(事项、状态、本周的工作记录)
|
|
47
|
+
- 检查点:只覆盖范围内的事项,且覆盖其中所有进行中和本周关闭的
|
|
48
|
+
3. 对照上周计划
|
|
49
|
+
- 输入:上一次复盘文档里的“下周计划”
|
|
50
|
+
- 检查点:每条计划都有结论:完成 / 未完成及原因
|
|
51
|
+
4. 写复盘文档
|
|
52
|
+
- 输入:以上步骤的结果
|
|
53
|
+
- 最终产物:本 Case 目录内的 docs/review-日期.md(使用本目录 templates/review.md 的结构)
|
|
54
|
+
- 检查点:所有小节都有内容,结论有依据(指向事项或文件);开头写明本次范围
|
|
55
|
+
5. 规划下周
|
|
56
|
+
- 输入:复盘文档里的未完成项与阻塞
|
|
57
|
+
- 检查点:不超过用户设定的数量;每项有明确的下一动作
|
|
58
|
+
- 需确认:是
|
|
59
|
+
- 说明:下周计划由用户决定,只提出建议
|
|
60
|
+
6. 登记交付物
|
|
61
|
+
- 说明:把复盘文档登记为 Case 的交付物
|
|
62
|
+
|
|
63
|
+
## 完成标准
|
|
64
|
+
|
|
65
|
+
- 复盘文档已保存在本 Case 目录内,开头写明了范围,并登记为交付物
|
|
66
|
+
- 下周计划已经用户确认
|
|
67
|
+
|
|
68
|
+
## 例外与回退
|
|
69
|
+
|
|
70
|
+
- 所选事项本周没有任何记录:照实写“本周无记录”,并提示用户是否漏记
|
|
71
|
+
- 用户后来想把复盘公开或分享:先由用户逐段确认哪些内容可以公开,再复制出去,不直接移动原文档
|
|
72
|
+
|
|
73
|
+
## 修订记录
|
|
74
|
+
|
|
75
|
+
暂无。
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Summary
|
|
2
|
+
|
|
3
|
+
{{title}}; current state: {{current_state}}; next: {{next_action}}.
|
|
4
|
+
|
|
5
|
+
## Background and scope
|
|
6
|
+
|
|
7
|
+
Source: {{source}}. Goal: {{goal}}. Definition of done: {{done_when}}.
|
|
8
|
+
|
|
9
|
+
## Current trusted state
|
|
10
|
+
|
|
11
|
+
{{current_state}}
|
|
12
|
+
|
|
13
|
+
## Next action
|
|
14
|
+
|
|
15
|
+
{{next_action}}
|
|
16
|
+
|
|
17
|
+
## Blockers and resume conditions
|
|
18
|
+
|
|
19
|
+
None.
|
|
20
|
+
|
|
21
|
+
## Decision log
|
|
22
|
+
|
|
23
|
+
None yet.
|
|
24
|
+
|
|
25
|
+
## Work log
|
|
26
|
+
|
|
27
|
+
- {{created_at}} Case created.
|
|
28
|
+
|
|
29
|
+
## Deliverables and quality gates
|
|
30
|
+
|
|
31
|
+
Pending.
|
|
32
|
+
|
|
33
|
+
## Result
|
|
34
|
+
|
|
35
|
+
The definition of done is not met yet.
|
|
36
|
+
|
|
37
|
+
## Lessons candidates
|
|
38
|
+
|
|
39
|
+
None yet.
|