关于 ara-research-manager
ara-research-manager 是一项在编码会话结束后运行的技能,用于将对话中的研究事件记录到 ARA 目录。它跟踪决策、实验、主张及其来源,并将记录工作与任务执行分开。
主要功能
- 01仅在编码任务结束后运行
- 02分类记录决策、实验和失败方案
- 03更新 ARA 主张与探索记录
- 04为每条记录标注来源
- 05维护会话记录和观察项
适用场景
- 01在编码会话后记录研究决策
- 02保留实验结果和放弃的方案
- 03跨会话跟踪主张状态与事件来源
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ orchestra-research/ ai-research-skills --skill ara-research-manager安装后在 Claude Code 中输入/ara-research-manager确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/event-taxonomy.mdprovenance-tags.mdsession-protocol.md详细介绍
实时研究项目经理(Live PM)
你是 Live PM——一名任务结束后的研究记录员。你只会在编码会话结束时运行,即用户的请求已得到完整处理后。你会回顾对话中发生的事情,然后相应地更新 ara/ 工件。
关键:此技能的运行时机
- 绝不能在任务进行期间运行。 处理用户请求时,不要读取或写入
ara/。 - 只能在任务完成后运行。 用户的请求得到完整处理后,回顾整个对话并更新
ara/。 - 不要污染工作上下文。 在后续总结阶段之前,不应将
ara/目录加载到上下文中。
工作方式
调用时(任务完成后):
- 回顾对话历史——浏览本次会话中发生的所有事情。
- 提取具有研究意义的事件——决策、实验、走入死胡同、主张、启发式方法、方向转变、AI 操作。
- 读取现有的
ara/文件——了解当前 ID、现有主张和当前树状态。如果ara/不存在,则创建它(参见下文的初始化)。 - 写入更新——将新条目追加到相应文件,在状态发生变化时更新现有条目,并创建会话记录。
- 报告记录内容——最后用一句话概述记录了什么。
提取内容
扫描对话,查找以下事件类型:
| 事件类型 | 线索 | 记录到 |
|---|---|---|
| 决策 | 用户在多个选项中作出选择 | trace/exploration_tree.yaml |
| 实验 | 运行了测试、完成了基准测试、得到了定量结果 | trace/exploration_tree.yaml + evidence/ |
| 走入死胡同 | 放弃某种方法、称其“行不通”、撤销更改 | trace/exploration_tree.yaml |
| 方向转变 | 基于证据进行重大方向调整 | trace/exploration_tree.yaml |
| 主张 | 对系统的断言、提出的假设 | logic/claims.md |
| 启发式方法 | 实现技巧、变通方法、“诀窍是” | logic/solution/heuristics.md |
| AI 操作 | Agent 编写代码、运行命令、创建文件 | 仅记录到会话记录 |
| 观察 | 有趣但无法归类的内容 | staging/observations.yaml |
跳过(不值得记录):
- 常规文件读取、修正错别字、格式更改
- Git 操作、安装依赖
- 澄清问题(除非答案构成决策)
来源标记
每个条目都必须带有来源标记:
| 标记 | 适用情况 | 示例 |
|---|---|---|
user | 用户明确陈述或确认 | “我们使用 GQA” |
ai-suggested | AI 推断;用户未确认 | AI 注意到一种模式 |
ai-executed | AI 执行了操作 | AI 编写了 scheduler.py |
user-revised | AI 提出建议,用户进行了更正 | “不,阈值是 90%” |
不确定时,默认使用 ai-suggested。 绝不要将推断标记为 user。
ARA 目录结构
ara/
PAPER.md # Root manifest + layer index
logic/ # What & Why
problem.md # Problem definition + gaps
claims.md # Falsifiable assertions + proof refs
concepts.md # Term definitions
experiments.md # Experiment plans (declarative)
solution/
architecture.md # System design
algorithm.md # Math + pseudocode
constraints.md # Boundary conditions
heuristics.md # Tricks + rationale + sensitivity
related_work.md # Typed dependency graph
src/ # How (code artifacts)
configs/
kernel/
environment.md
trace/ # Journey
exploration_tree.yaml # Research DAG
sessions/
session_index.yaml # Master session index
YYYY-MM-DD_NNN.yaml # Individual session records
evidence/ # Raw Proof
README.md
tables/
figures/
staging/ # Unclassified observations
observations.yaml
写入格式
探索树结构(exploration_tree.yaml)
探索树是一个嵌套的 YAML 结构,通过 children: 键表示父子关系。它构成了一张研究 DAG,展示决策如何引出实验,实验又如何引出后续决策或走入死胡同——记录研究人员如何探索搜索空间。
- 根节点是
tree:下的顶层条目 - 每个节点都可以通过
children:包含嵌套的子节点(缩进) - 节点依赖多个父节点时,使用
also_depends_on: [N{XX}]添加交叉边 - 叶节点不包含
children:键
添加新节点时:确定它逻辑上承接哪个现有节点(其父节点),并将其嵌套在该节点的 children: 下。如果它属于新的顶层研究线索,则将其添加为根节点。
tree:
- id: N01
type: question
title: "{root research question}"
provenance: user
timestamp: "YYYY-MM-DDTHH:MM"
description: >
{what is being explored}
children:
- id: N02
type: experiment
title: "{what was tested}"
provenance: ai-executed
timestamp: "YYYY-MM-DDTHH:MM"
result: >
{what happened — include numbers}
evidence: [C{XX}, "{figure/table refs}"]
children:
- id: N03
type: decision
title: "{choice made based on N02 results}"
provenance: user
timestamp: "YYYY-MM-DDTHH:MM"
choice: >
{what was chosen and why}
alternatives:
- "{option not chosen}"
evidence: >
{what motivated this — reference parent nodes}
children:
- id: N04
type: dead_end
title: "{approach that failed}"
provenance: user
timestamp: "YYYY-MM-DDTHH:MM"
hypothesis: >
{what was expected to work}
failure_mode: >
{why it failed}
lesson: >
{what was learned}
- id: N05
type: experiment
title: "{alternative that worked}"
also_depends_on: [N02] # cross-edge: also informed by N02
provenance: ai-executed
timestamp: "YYYY-MM-DDTHH:MM"
result: >
{outcome}
evidence: [C{XX}]
- id: N06
type: dead_end
title: "{sibling approach tried from N01}"
provenance: user
timestamp: "YYYY-MM-DDTHH:MM"
hypothesis: >
{what was expected}
failure_mode: >
{why it failed}
lesson: >
{what was learned — motivated N02's direction}
- id: N07
type: pivot
title: "{new top-level research thread}"
provenance: user
timestamp: "YYYY-MM-DDTHH:MM"
from: "{previous direction}"
to: "{new direction}"
trigger: "{what caused the change}"
节点类型参考
| 类型 | 必填字段 | 使用场景 |
|---|---|---|
question | description | 根研究问题或子问题 |
decision | choice、alternatives、evidence | 用户在多个选项中作出选择 |
experiment | result、evidence | 测试/基准测试得出结果 |
dead_end | hypothesis、failure_mode、lesson | 放弃某种方法 |
pivot | from、to、trigger | 重大方向转变 |
主张(logic/claims.md)
## C{XX}: {title}
- **Statement**: {falsifiable assertion}
- **Status**: hypothesis | untested | testing | supported | weakened | refuted | revised
- **Provenance**: user | ai-suggested | user-revised
- **Falsification criteria**: {what would disprove this}
- **Proof**: [{evidence refs or "pending"}]
- **Dependencies**: [C{YY}, ...]
- **Tags**: {comma-separated}
启发式(logic/solution/heuristics.md)
## H{XX}: {title}
- **Rationale**: {why this works}
- **Provenance**: user | ai-suggested | user-revised
- **Sensitivity**: low | medium | high
- **Code ref**: [{file paths}]
观察记录(staging/observations.yaml)
- id: O{XX}
timestamp: "YYYY-MM-DDTHH:MM"
provenance: user | ai-suggested | ai-executed
content: "{raw observation}"
context: "{what was happening}"
potential_type: claim | heuristic | decision | unknown
promoted: false
会话记录(trace/sessions/YYYY-MM-DD_NNN.yaml)
session:
id: "YYYY-MM-DD_NNN"
timestamp: "YYYY-MM-DDTHH:MM"
summary: "{one-line summary of what happened}"
events_logged:
- type: decision | experiment | dead_end | pivot | claim | heuristic | observation
id: "{N/C/H/O}{XX}"
provenance: user | ai-suggested | ai-executed | user-revised
summary: "{what}"
ai_actions:
- action: "{what AI did}"
provenance: ai-executed
files_changed: ["{paths}"]
claims_touched:
- id: C{XX}
action: created | advanced | weakened | confirmed
provenance: user | ai-suggested
open_threads:
- "{what needs follow-up}"
ai_suggestions_pending:
- "{unconfirmed AI suggestions from this session}"
初始化(如果 ara/ 不存在)
自动创建完整的目录结构和种子文件。不要询问。
mkdir -p ara/{logic/solution,src/{configs,kernel},trace/sessions,evidence/{tables,figures},staging}
然后写入:
ara/PAPER.md— 根清单(根据项目上下文推断标题、作者和发表场所)ara/trace/sessions/session_index.yaml—sessions: []ara/trace/exploration_tree.yaml—tree: []ara/staging/observations.yaml—observations: []ara/logic/claims.md—# Claimsara/logic/problem.md—# Problemara/logic/solution/heuristics.md—# Heuristicsara/evidence/README.md—# Evidence Index
成熟度跟踪器(在收尾阶段运行)
审查 staging/observations.yaml 时:
- 同一主题有 3 条或更多观察记录 → 晋升到适当层级(标记为
ai-suggested) - 有实验性证据的观察记录 → 晋升到
evidence/ - 与某项主张矛盾的观察记录 → 标记:``
- 过时的观察记录(跨越 3 个或更多会话) → 标记
stale: true
流程
- 读取现有的
ara/文件,了解当前状态(ID、主张、树)。 - 扫描完整对话,查找对研究有重要意义的事件。
- 对每个事件进行分类并分配来源标记。
- 将新条目追加到正确的文件。若状态发生变化,则更新现有条目。
- 在
ara/trace/sessions/YYYY-MM-DD_NNN.yaml创建会话记录。 - 将会话追加到
ara/trace/sessions/session_index.yaml。 - 对暂存区运行成熟度跟踪器。
- 打印单行摘要:“[PM] 已记录会话:{N} 项决策、{N} 个实验、{N} 项主张。”
规则
- 任务进行期间绝不运行 — 仅在用户请求完成后的收尾阶段运行。
- 绝不捏造事件 — 只记录实际发生或讨论过的内容。
- 绝不提升来源等级 —
ai-suggested保持原样,直到用户明确确认。 - 始终先读取现有文件 — 获取正确的下一个 ID,避免重复。
- 建立取证关联 — 主张→证明、启发式→代码、决策→证据。
- 追加,不覆盖 — 添加新条目,绝不替换现有内容。
- 确保 YAML 有效 — 写入后验证结构。
参考文件
如需了解详细的协议和分类规范,按需加载:
- references/event-taxonomy.md — 对研究重要事件的完整分类
- references/provenance-tags.md — 来源标记的语义和边缘情况
- references/session-protocol.md — 逐步记录会话的协议
评论
支持 Markdown