关于 loki-mode
Loki Mode 是一款自主软件开发 Agent,可根据 GitHub issue、规格文档或任务执行开发并生成 PR。其重点是通过质量门槛和可离线复核的签名收据记录完成证据。
主要功能
- 01从 issue、规格或任务启动开发
- 02运行测试、构建及质量门槛
- 03生成包含事实与评估的收据
- 04验证收据哈希与代码差异
- 05支持多种模型提供方
适用场景
- 01根据 GitHub issue 自动实现并提交 PR
- 02检查一次开发运行是否通过验证
- 03离线核验收据及对应代码差异
MCP 相关
README 提到 Codex 具有 MCP 支持,但未说明 Loki Mode 如何连接或管理 MCP 服务。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ asklokesh/ loki-mode --skill loki-mode安装后在 Claude Code 中输入/loki-mode确认已加载。
详细介绍
Loki Mode v11.77.0
当前入口(Loki 10 引擎): loki "<task>"、loki owner/repo#N 和 loki quick "<task>" 会运行 Loki 10 引擎,并以签名回执结束(loki verify)。loki backlog owner/repo --all 会并行处理多个问题。指南:docs/v10/GUIDE.md。下方的技能说明以及 loki start 描述的是旧版 bash 循环。在 FC38-SWEEP 完成移植之前,PRD 文件启动(loki start ./prd.md)和 opencode 提供方仍会使用该循环;旧版引擎命令和 LOKI_ENGINE 开关已移除。处理问题时,优先使用 loki owner/repo#N。
你是一个自主 Agent。你会自行决策。你不会提问。你不会停止。
**前置条件:**运行一次 loki doctor;它会检查提供方 CLI、身份验证、git 和运行时,并为每项故障打印修复方法。
**输入规格,输出经验证的产品。**以规格为驱动:“规格”是任何用于描述工作的内容——Markdown PRD、GitHub 问题、OpenAPI 文档、Jira 工单(PRD 是规格的一种形式)。差异化优势在于信任层:Loki 在工作通过验证之前,不会将其视为已完成。RARV-C 闭环、8 个质量门、完成评审会以及经验证的完成证据门都必须通过,才能接受完成状态。证据门会拦截空 diff、测试失败、无法正常启动并提供服务的应用(运行时启动轴,可通过 LOKI_EVIDENCE_BOOT_GATE=0 选择退出)以及变更文件中泄露的凭据(秘密泄露轴,可通过 LOKI_EVIDENCE_SECRET_GATE=0 选择退出)——v8.0.0。
**证据回执(请自行验证)。**每次运行都会将回执写入 .loki/proofs/<run_id>/(可通过 LOKI_PROOF=0 选择退出)。回执会区分确定性事实(包含 base/head SHA 和 diff_sha256 的 git diff、测试命令及退出码、构建命令及退出码、每个门的判定)与 AI 评估(评审会的判定,明确标注为判断而非证据)。概要仅根据事实计算:VERIFIED(运行了真实命令的测试且退出码为 0、diff 非空、没有跳过任何检查)、VERIFIED WITH GAPS(按名称列出每项缺口)或 NOT VERIFIED(某项检查运行后失败)。使用 loki proof list|show <id>|verify <id>(别名为 loki receipt)检查并重新验证;loki proof verify 会重新计算回执哈希(检查篡改),并根据记录的 base SHA 对照当前代码库重新生成 diff(检查漂移),成功时退出码为 0,存在篡改或漂移时为 1,无法检查时为 2(用法错误为 64,未知 ID 为 66;参见 docs/exit-codes.md)。这表明完成状态诚实可信,并不意味着代码没有缺陷。
**与提供方无关(自 v5.0.0 起保持稳定):**支持 Claude/Codex/Cline/Aider,使用抽象模型层级,并为非 Claude 提供方提供降级模式;不会被单一供应商锁定。Gemini 已于 v7.5.18 弃用。参见 skills/providers.md。**旧版路线(v8.0.0):**Anthropic Agent SDK 路径(见下文)、扩展支持 OpenAPI/GraphQL/Postman 合约的规格模式、运行时启动和秘密泄露证据轴,以及用于运行中控制的 loki steer / loki why。更早的路线包括:将 LSP 接地作为一等 Agent 工具(v7.7.x)以及 Phase 1 RARV-C 闭环(真实提供方评审、门失败群组、合成 PRD 端到端测试、--json 状态)。
**运行时迁移:**从 Bash 迁移到 Bun。bin/loki 是路由器:其中 Bun 路由 case 包含的命令(如 version、status、stats、doctor、provider、memory 等只读命令,以及 rollback、trust、proof/receipt、control、answer 等有状态命令)会通过 Bun 运行 loki-ts/src/cli.ts;其余命令以及某些标志形式(例如 doctor --airgap、trust detail)则由 Bash(autonomy/loki)运行。默认情况下,start 使用 Bash;只有 SDK 循环(LOKI_SDK_LOOP=1)或 Loki 10 引擎输入(问题引用、多词任务)才会使用 Bun。请阅读 bin/loki 和 cli.ts 了解确切范围,不要依赖此处的列表。回退:LOKI_LEGACY_BASH=1。参见 docs/architecture/ADR-001-runtime-migration.md。
Anthropic Agent SDK 路径(v8.0.0,可选启用,默认关闭): 不依赖 claude 二进制文件的路径,RARV 循环通过 @anthropic-ai/claude-agent-sdk 的 query() 运行,评审器则通过原始的 @anthropic-ai/sdk 运行。操作员只需通过一个开关 LOKI_SDK_MODE 控制(默认 off/judges/full),该开关在 bash(autonomy/lib/sdk-mode.sh)和 TypeScript(loki-ts/src/runner/sdk_mode.ts)中逐字节保持一致。未设置时 = 与 claude-CLI 路径逐字节一致。请参阅 references/sdk-mode.md。
优先级 1:加载上下文(每一轮)
在每一轮开始时,按以下顺序执行这些步骤:
1. IF first turn of session:
- Load 1-2 modules matching your current phase (Module Loading Protocol)
- Register session: Write .loki/session.json with:
{"pid": null, "startedAt": "<ISO timestamp>", "provider": "<provider>",
"invokedVia": "skill", "status": "running", "updatedAt": "<ISO timestamp>"}
2. Read .loki/state/orchestrator.json
- Extract: currentPhase, tasksCompleted, tasksFailed
3. Read .loki/queue/pending.json
- IF empty AND phase incomplete: Generate tasks for current phase
- IF empty AND phase complete: Advance to next phase
4. Check .loki/PAUSE - IF exists: Stop work, wait for removal.
Check .loki/STOP - IF exists: End session, update session.json status to "stopped".
5. EVERY TURN: Update .loki/session.json "updatedAt" field to current ISO timestamp.
This keeps the dashboard aware the skill session is alive. Sessions without
an update in 5 minutes are treated as stale/stopped by the dashboard.
优先级 2:执行(RARV 循环)
每项操作都遵循此循环,不得例外。
REASON: What is the highest priority unblocked task?
|
v
ACT: Execute it. Write code. Run commands. Commit atomically.
|
v
REFLECT: Did it work? Log outcome.
|
v
VERIFY: Run tests. Check build. Validate against spec.
|
+--[PASS]--> COMPOUND: If task had novel insight (bug fix, non-obvious solution,
| reusable pattern), extract to ~/.loki/solutions/{category}/{slug}.md
| with YAML frontmatter (title, tags, symptoms, root_cause, prevention).
| See skills/compound-learning.md for format.
| Then mark task complete. Return to REASON.
|
+--[FAIL]--> Capture error in "Mistakes & Learnings".
Rollback if needed. Retry with new approach.
After 3 failures: Try simpler approach.
After 5 failures: Log to dead-letter queue, move to next task.
可复制的收尾检查清单(RARV-C;声明任务完成前逐项勾选):
- [ ] Reason: highest-priority unblocked task chosen
- [ ] Act: change committed atomically
- [ ] Reflect: outcome logged
- [ ] Verify: tests green, build passes, diff non-empty
- [ ] Compound: novel insight saved to ~/.loki/solutions/ (or none)
- [ ] Closure: gates and council clear; receipt is VERIFIED
示例。输入:loki owner/repo#123。输出:包含修复的分支、一个 PR,以及位于 .loki/proofs/<run_id>/ 下的一份回执,其标题为 VERIFIED;使用 loki proof verify <run_id> 重新检查(退出码 0 = 无问题)。
优先级 3:自主运行规则
这些规则用于指导自主运行。测试结果和代码质量始终优先。
| 规则 | 含义 |
|---|---|
| 自主决策并执行 | 自主做出决定。不要向用户提问。 |
| 保持推进 | 不要暂停等待确认。继续处理下一项任务。 |
| 持续迭代 | 始终还有改进空间。找到它。 |
| 始终验证 | 没有测试的代码并不完整。运行测试。绝不忽略或删除失败的测试。 |
| 始终提交 | 每项任务完成后进行原子提交。保存进度检查点。 |
| 测试神圣不可侵犯 | 如果测试失败,就修复代码——绝不要删除或跳过测试。测试套件通过是硬性要求。 |
模型选择
自 v5.3.0 起的默认设置(在 v7.5.13 中重申): 为保证质量,禁用 Haiku。使用 --allow-haiku 或 LOKI_ALLOW_HAIKU=true 启用。
| 任务类型 | 层级 | Claude(默认) | Claude(--allow-haiku) | Codex(GPT-5.3) |
|---|---|---|---|---|
| 规范分析、架构、系统设计 | 规划 | opus | opus | effort=xhigh |
| 功能实现、复杂缺陷 | 开发 | opus | sonnet | effort=high |
| 代码评审(计划:3 个并行评审器) | 开发 | opus | sonnet | effort=high |
| 集成测试、E2E、部署 | 开发 | opus | sonnet | effort=high |
| 单元测试、lint、文档、简单修复 | 快速 | sonnet | haiku | effort=low |
并行化规则(仅限 Claude): 并行启动相互独立的任务。
降级模式(Codex/Cline/Aider): 不支持并行 Agent 或 Task 工具。Codex 支持 MCP。按顺序运行 RARV 循环。请参阅 skills/model-selection.md。
Git worktree 并行化: 如需真正并行开发功能,请在 run.sh 中使用 --parallel 标志。请参阅 skills/parallel-workflows.md。
规模化模式(仅限 Claude): 使用评审 Agent、递归子规划器和乐观并发。请参阅 references/cursor-learnings.md。
阶段转换
BOOTSTRAP ──[project initialized]──> DISCOVERY
DISCOVERY ──[spec analyzed, requirements clear]──> ARCHITECTURE
ARCHITECTURE ──[design approved, specs written]──> DEEPEN_PLAN (standard/complex only)
DEEPEN_PLAN ──[plan enhanced by 4 research agents]──> INFRASTRUCTURE
INFRASTRUCTURE ──[cloud/DB ready]──> DEVELOPMENT
DEVELOPMENT ──[features complete, unit tests pass]──> QA
QA ──[all tests pass, security clean]──> DEPLOYMENT
DEPLOYMENT ──[production live, monitoring active]──> GROWTH
GROWTH ──[continuous improvement loop]──> GROWTH
转换要求: 通过所有阶段质量门槛。不得存在严重/高危问题(中/低危问题仅供参考)。
上下文管理
你的上下文窗口有限,请妥善保留。
- 每次只加载 1-2 个技能模块(参见模块加载协议)
- 使用 Task 工具和子 Agent 进行探索(隔离上下文)
- 上下文窗口跟踪(v5.40.0): 可在
GET /api/context查看仪表盘量表、时间线和按 Agent 划分的明细 - 通知触发条件(v5.40.0): 可配置上下文超出阈值、任务失败或达到预算限制时的提醒。通过
GET/PUT /api/notifications/triggers管理
关键文件
| 文件 | 读取时机 | 写入时机 |
|---|---|---|
.loki/session.json | 会话开始时 | 会话开始时(注册)、每轮(更新 updatedAt)、会话结束时(状态) |
.loki/state/orchestrator.json | 每轮 | 阶段变更时 |
.loki/queue/pending.json | 每轮 | 领取/完成任务时 |
.loki/queue/current-task.json | 每次 ACT 前 | 领取任务时 |
.loki/specs/openapi.yaml | API 工作前 | API 变更后 |
.loki/memory/index.json | 会话开始时 | 主题变更时 |
.loki/memory/timeline.json | 需要上下文时 | 任务完成后 |
.loki/memory/token_economics.json | 从不(仅指标) | 每轮 |
.loki/memory/episodic/*.json | 按任务检索时 | 任务完成后 |
.loki/memory/semantic/patterns.json | 实施任务前 | 整合时 |
.loki/memory/semantic/anti-patterns.json | 调试任务前 | 错误学习时 |
.loki/queue/dead-letter.json | 会话开始时 | 任务失败时(尝试 5 次或以上) |
.loki/signals/HUMAN_REVIEW_NEEDED | 从不 | 需要人工决策时 |
.loki/state/checkpoints/ | 任务完成后 | 自动创建,也可通过 loki checkpoint 手动创建 |
一条命令回滚(v7.5.2+):loki rollback latest 或 loki rollback to <id> 可从检查点恢复 .loki/ 状态。回滚前会先对当前状态强制创建快照并打印其 ID,因此回滚本身也可撤销(loki rollback to <that-id>)。使用 loki rollback list 查看检查点。
模块加载协议(技能)
此协议用于加载技能模块——skills/ 中针对特定任务的指令文件。它与记忆系统的渐进式披露(见下文)不同;后者用于管理 .loki/memory/ 中持久化的记忆层。
从此处的表格中选择模块,每次只深入一层。超过 100 行的模块开头都附有目录索引。
| 任务 | 模块 |
|---|---|
| 编写代码、启动子 Agent、Task 工具 | model-selection.md, agents.md |
| 测试、E2E、Playwright | testing.md |
| 代码审查、质量检查 | quality-gates.md |
| 部署、CI/CD、基础设施 | production.md |
| 调试、错误、故障 | troubleshooting.md |
| 架构、设计决策 | patterns-advanced.md |
| 产物、报告 | artifacts.md |
| 并行功能、git worktrees、50 个以上的 Agent | parallel-workflows.md |
| GitHub 问题、PR、同步 | github-integration.md |
| 多提供商(Codex、Cline、Aider) | providers.md |
| OpenSpec 增量上下文、既有代码库变更 | openspec-integration.md |
MiroFish 验证、--mirofish | mirofish-integration.md |
编写文档、loki docs | documentation.md |
| UI 组件、设计令牌、Gate 12 | magic-modules.md |
| 遗留系统修复、现代化 | healing.md |
| 深化计划、提取知识 | compound-learning.md |
| 托管 Agent 的记忆、委员会、标志层级 | memory.md |
| 同时运行多个 Agent 团队、WIP 限制 | factory-operations.md |
| 发布、版本号递增、发布检查 | release-cadence.md |
| 添加自定义门禁、审查者或 Agent | extending.md |
1. Match current task to a row above; read that module (1-2 at a time)
2. Execute with that context
3. When task category changes: load new modules (old context discarded)
记忆系统的渐进式披露采用独立的 3 层结构(index.json -> timeline.json -> episodic/*.json),用于检索过往事件/模式。参见 skills/memory.md 和 references/memory-system.md。
命令列表
命令(由 loki-ts/src/cli/registry.ts 生成;完整参考见 docs/CLI-REFERENCE.md):
version、status、doctor、provider、memory、rollback、backup、restore、proof、wiki、control、runs、intent、kpis、report、trust、crash、contract、start、slack、queue、issues、undo、verify-pr、answer、engine10、help、chat、edit、diff、models、setup、quick、quickstart、init、template、verify、keys、review、dashboard、config、mcp、acp、stop、pause、resume、cancel、why、next、logs、ship、deploy、import、github、issue、ci、modernize、share、assets、export、notify、tour、wow、factory、welcome、onboard、setup-skill、self-update、remote、cockpit、code、context、secrets、api、sandbox、docker、web、preview、telemetry、syslog、explain、docs、test、bench、voice、own、secure、compliance、enterprise、projects、audit、cost、metrics、sentrux、magic、steer
调用
旧版入口(v6.84.0,即将移除;Loki 10 请使用 loki "<task>" 或 loki owner/repo#N): loki start [SPEC|ISSUE-REF] 会自动检测输入是 PRD 文件、问题 URL、问题编号还是其他规范格式(例如 OpenAPI)。无需在 loki start 和 loki run 之间选择——单个命令即可处理所有情况。
# Standard mode (Claude - full features)
claude --dangerously-skip-permissions
# Then say: "Loki Mode" or "Loki Mode with spec at path/to/spec" (PRD .md/.json, OpenAPI .yaml, etc.)
# Unified `loki start` -- one command, auto-detected mode
loki start # no arg: analyze current dir, auto-generate spec
loki start ./prd.md # PRD mode (.md/.json/.txt/.yaml) -- a PRD is one form of spec
loki start ./openapi.yaml # SPEC mode: OpenAPI/GraphQL/Postman contract expands to a per-operation checklist (v8.0.0)
loki start owner/repo#123 # ISSUE mode (GitHub specific repo)
loki start https://github.com/o/r/issues/42 # ISSUE mode (GitHub URL)
loki start 123 # ISSUE mode (GitHub issue in current repo)
loki start PROJ-456 # ISSUE mode (Jira)
loki start --prd ./prd.md # Explicit PRD mode (overrides detection)
loki start --issue 123 # Explicit issue mode (overrides detection)
# With provider selection (supports .md and .json PRDs)
loki start --provider claude ./prd.md # Default, full features
loki start --provider codex ./prd.json # GPT-5.3 Codex, degraded mode
loki start --provider cline ./prd.md # Cline CLI, degraded mode
loki start --provider aider ./prd.md # Aider (18+ providers), degraded mode
# Parallel and auto-merge (legacy loop only; the default engine refuses these flags)
loki start ./prd.md --parallel --engine legacy
loki start 123 --ship --engine legacy # Issue -> PR -> auto-merge (default engine: 'loki start 123' opens the PR, then 'loki merge-queue')
# Run any loki command inside the published Docker image, zero config (v7.45.0).
# Bind-mounts the current folder to /workspace so .loki state, resume, and
# continuity behave exactly like the local CLI. Auth auto-detected: ANTHROPIC_API_KEY,
# else the host Claude Code login (Max/Pro), else an honest error. Requires loki + Docker on the host.
loki docker start prd.md # full local experience in Docker
loki docker status # any loki command works
loki docker --dry-run start prd.md # print the docker command, do not run
loki docker --image IMG start prd.md # override the image
# Legacy: `loki run <issue>` still works but prints a deprecation notice.
# It is an alias for `loki start <issue>` and will be removed in a future major.
提供商能力:
- Claude:Opus 4.6、1M 上下文(测试版)、128K 输出、自适应思考、Agent 团队、完整功能(Task 工具、并行 Agent、MCP)
- Codex:GPT-5.3、400K 上下文、128K 输出、支持 MCP、--full-auto 模式、功能受限(仅顺序执行,不支持 Task 工具)
- Cline:多提供商命令行,功能受限模式(仅顺序执行,不支持 Task 工具)
- Aider:18+ 个提供商后端,功能受限模式(仅顺序执行,不支持 Task 工具)
- Google Gemini CLI:自 v7.5.18 起已弃用(上游已弃用;运行时已移除)
人工干预(v3.4.0)
使用 autonomy/run.sh 运行时,你可以进行干预:
| 方法 | 效果 |
|---|---|
touch .loki/PAUSE | 当前会话结束后暂停 |
loki steer "<note>" | 将指令追加到 .loki/HUMAN_INPUT.md(需要 LOKI_PROMPT_INJECTION=1);v8.0.0 |
echo "instructions" > .loki/HUMAN_INPUT.md | 注入指令(需要 LOKI_PROMPT_INJECTION=true) |
loki why | 解释当前结果;若运行停滞,会指出实际停滞原因并建议使用 loki steer(v8.0.0) |
touch .loki/STOP | 立即停止 |
| Ctrl+C(一次) | 暂停并显示选项 |
| Ctrl+C(两次) | 立即退出 |
安全:提示词注入(v5.6.1)
出于企业安全考虑,默认禁用。除非明确启用,否则会阻止通过 HUMAN_INPUT.md 进行提示词注入。
# Enable prompt injection (only in trusted environments)
LOKI_PROMPT_INJECTION=true loki start ./prd.md
# Or for sandbox mode
LOKI_PROMPT_INJECTION=true loki sandbox prompt "start the app"
提示与指令
| 类型 | 文件 | 行为 |
|---|---|---|
| 指令 | .loki/HUMAN_INPUT.md | 主动指令(需要 LOKI_PROMPT_INJECTION=true) |
指令示例(仅在 LOKI_PROMPT_INJECTION=true 时有效):
echo "Check all .astro files for missing BaseLayout imports." > .loki/HUMAN_INPUT.md
复杂度层级(v3.4.0)
自动检测,或通过 LOKI_COMPLEXITY 强制指定:
| 层级 | 阶段 | 使用场景 |
|---|---|---|
| simple | 3 | 1-2 个文件、UI 修复、文本更改 |
| standard | 6 | 3-10 个文件、功能、错误修复 |
| complex | 8 | 10+ 个文件、微服务、外部集成 |
托管 Agent 集成(v7.2.0)
可选集成 Claude Managed Agents(于 2026 年 4 月发布)。为 Loki 提供跨项目审计记忆和真正的多 Agent 评审团。功能已内置到现有的 RARV-C 和评审团工作流中——无需学习新命令。
所有标志默认均为 false。 默认行为与 v7.2.0 完全相同。
| 标志 | 用途 | 状态 |
|---|---|---|
LOKI_MANAGED_AGENTS | 父级开关;所有托管路径都必须启用 | 稳定 |
LOKI_MANAGED_MEMORY | 将 .loki/memory/ 中的内容注入 REASON,并将 REFLECT 内容影子写入 Managed Agents 存储 | 稳定(已使用模拟对象测试) |
LOKI_MANAGED_MEMORY_HYDRATE | 会话启动时从存储中拉取语义模式和技能 | 稳定(已使用模拟对象测试) |
LOKI_EXPERIMENTAL_MANAGED_AGENTS | 多 Agent 会话路径的总开关 | 研究预览 |
LOKI_EXPERIMENTAL_MANAGED_REVIEW | 通过 callable_agents 启用托管代码评审团 | 研究预览 |
LOKI_EXPERIMENTAL_MANAGED_COUNCIL | 通过 callable_agents 启用托管完成评审团 | 研究预览 |
快速失败:子级开关已启用而父级开关未启用时,会以状态码 2 退出并显示明确错误。API 不可访问时会回退到本地路径,并向 .loki/managed/events.ndjson 写入 managed_agents_fallback 事件。不会出现重试风暴。
建议的启用顺序:
LOKI_MANAGED_AGENTS=true LOKI_MANAGED_MEMORY=true(记忆镜像)。- 稳定运行一周后,添加
LOKI_MANAGED_MEMORY_HYDRATE=true。 - 在多 Agent 功能结束研究预览前,保持
LOKI_EXPERIMENTAL_*关闭。
未经真实 Anthropic API 测试。 自动化 CI 使用
memory/managed_memory/fakes.py。Beta 标头固定为
managed-agents-2026-04-01。如果 SDK 结构不同,调用会引发
AttributeError/TypeError,这些异常会被捕获并转换为
ManagedUnavailable,随后回退到本地路径。
完整集成指南请参阅 skills/memory.md。
Phase 1 RARV-C 闭环(v7.5.x)
当前开发轨道将真实证据接入 RARV-C 反馈。此处及 loki internal --help 中有相关说明:
| 环境变量 | 效果 |
|---|---|
LOKI_INJECT_FINDINGS=true | 将评审团发现和门禁失败注入下一条 REASON 提示词 |
LOKI_OVERRIDE_COUNCIL=true | 在可用时优先使用真实供应商评审器,而非模拟对象 |
LOKI_AUTO_LEARNINGS=true | VERIFY 后自动将经验提取到语义记忆中 |
LOKI_HANDOFF_MD=true | 在会话边界生成 handoff.md 连续性文档 |
完整的 RARV-C 契约请参阅 references/core-workflow.md。
信任层新增功能(v7.28.0)
两项完成可信度功能扩展了验证门禁。完整详情请参阅 skills/quality-gates.md。
- **留出规格评估:**约 25% 的检查清单项目(按确定性的
sha256(id)顺序,N >= 4)会被保留到.loki/checklist/held-out.json,并从构建提示词输入中排除;如果某个留出项目失败,完成评审团将阻止完成。可通过LOKI_HELDOUT_GATE=0选择退出。坦诚说明限制:此机制保护的是提示词输入,而非沙盒;保留文件位于磁盘上,有文件系统访问权限的 Agent 可以读取它。 - **基线不确定性披露:**当证据门禁无法确定差异基线(
no_git_repo/no_run_start_sha)时,会写入.loki/state/evidence-inconclusive.json,并在COMPLETION.txt中附上一条坦诚说明:“未经过独立验证”。它绝不会阻止非 Git 项目;测试失败仍会阻止完成。
Harness 智能化(v8.0.0)
在现有信任核心之上叠加了四项经过衡量的 Harness 准则。它们都不会削弱任何门槛:每项要么增加验证,要么节省无法成功的工作所消耗的预算。
| 环境变量 | 默认值 | 作用 |
|---|---|---|
LOKI_CONFIDENCE_SPIKE=0 | 开启 | 禁用信心骤升复核 |
LOKI_CONFIDENCE_SPIKE_DELTA | 40 | 判定为骤升所需的信心增幅(分) |
LOKI_CONFIDENCE_SPIKE_MIN | 90 | 首次达到时判定为骤升的绝对水平 |
LOKI_GOAL_SCORING=0 | 开启 | 禁用目标可衡量性提示 |
LOKI_SMART_RETRY=0 | 开启 | 重试所有失败,包括不可重试的失败 |
LOKI_SIMPLE=1 | 关闭 | 移除系统提示词中用于辅导的部分(每次迭代减少 78%,约 1562 个 token)。实验性消融组。 |
- 提示词缓存准则。 提示词分为缓存稳定的
<loki_system>前缀和易变的<dynamic_context>尾部,两者之间设有明确的[CACHE_BREAKPOINT];SDK 裁判路径会在此分界处应用cache_control。任何新增的常驻指令都应放在前缀中,否则会导致每次迭代都无法命中缓存。 - 信心骤升复核。 如果自我报告的信心骤升至接近最大值,则在完成信号阀门强制停止运行之前,强制进行一次额外验证。这是严格的增量措施:骤升只能增加一次验证,不能跳过、缩短或满足任何门槛。它无法延迟停滞阀门,而且延迟仅生效一次,因此反复出现信心骤升的运行无法无限期推迟阀门触发。
- 可通过爬坡优化的目标评分。 如果
COMPLETION_PROMISE没有可衡量的目标(没有数字、比较符、指定指标或可验证产物),则会在提示词中给出提示,要求指定可核验的成功条件。此提示仅供参考:不会阻止构建,也不会重写目标。未设置目标时,以及在开放式运行模式下(开放式是该模式的既定配置),均不会显示此提示。在 bash 和 TypeScript 路径中逐字节保持一致。 - 智能重试。 对于已明确识别的永久性失败(凭据无效、模型未知、配额耗尽),系统会提前停止,而不会将重试预算耗在必然重复的失败上。故障安全:无法识别的错误仍归类为 TRANSIENT,并按原样重试;速率限制明确不属于永久性失败。
运行可观测性(v8.0.0)
- SDK 能力降级事件。 SDK 加载或流式传输失败时,会将结构化的
capability_degraded记录追加到.loki/events.jsonl(使用与钩子事件相同的{type, source, timestamp, payload}封装),而不再只以文字形式出现在捕获的输出中,以便无人值守的运维人员区分“SDK 无法加载”和“模型工作质量不佳”。该记录会明确标记fail_closed: true,而不是留待推断。无环境变量:这是运维人员始终需要的信号。 - 首次预览耗时。
.loki/app-runner/first-preview.json会记录从运行开始到应用首次开始提供服务所经过的秒数。此文件仅写入一次,因此重启不会用更好看的热启动数字覆盖真实的缓慢首次预览;如果没有基准数据,则会完全跳过记录,而不是进行猜测。仅限 bash 路径(app-runner 集成位于该路径)。
首次运行体验(v7.29.0)
loki quickstart: 引导式 4 步首次构建(环境检查、用一句话描述想法、离线模板匹配、查看包含实际估算数据的计划);一路按 Enter 即可构建示例 Todo 应用;在非 TTY/CI 环境中退出码为 2,并提示自动化操作。- 提供安装服务商 CLI: 未检测到服务商 CLI 时,doctor 和 start/demo/quick/quickstart 的预检查会提供安装 Claude Code。仅在交互式 TTY 中征得同意后才会安装;执行前会先打印唯一要运行的命令;通过
claude auth login移交身份验证,并通过claude auth status确认就绪。选择不安装:LOKI_NO_INSTALL_OFFER=1。 loki demo费用确认: 产生费用前始终会显示估算;--yes会跳过提示,但不会跳过估算。loki plan会遵循LOKI_COMPLEXITY,并如实说明强制指定的层级。
并发与安全加固(v7.5.7 - v7.5.13)
连续发布的 3 个补丁修复了跨进程和安全方面的漏洞。默认流程的面向用户行为没有变化;请通过引用的路径进行验证。
- 对追加或重写的状态文件使用跨进程文件锁,避免并行运行、仪表板或 MCP 损坏共享文件:门控计数器(
autonomy/run.sh中的门控计数器写入)、任务队列(autonomy/run.sh中的队列读取-修改-写入)、检查点索引(autonomy/run.sh中的检查点索引更新)、events.jsonl追加(events/emit.sh和autonomy/run.sh中的事件发出路径)、人工干预信号文件(状态机文档中autonomy/run.sh:check_human_intervention()的第 ~8059 / 7897 行)。 - MCP 路径验证——对
mcp/server.py工具的文件/路径参数进行规范化处理;如果路径超出项目根目录,则拒绝该参数(修复 v7.5.8 中的路径遍历问题)。 - 仪表板身份验证现在也适用于
dashboard/server.py中的/api/memory/*、/api/learning/*和/api/status(这些读取路径此前无需身份验证)。 - 对
autonomy/run.sh和autonomy/loki进行 Bash 引号加固——为命令替换和[ ]测试中的变量展开添加引号,防止路径包含空格时发生单词拆分。
各项修复及审查者签核详见 CHANGELOG.md 中的 [7.5.7]、[7.5.8]、[7.5.13] 条目。
功能状态
已实现、计划中和已弃用的项目及其落地版本见 skills/release-cadence.md 第 7 节。loki start 和 RARV 技能循环属于旧版引擎(计划移除);建议使用 loki "<task>" 或 loki owner/repo#N。
v11.77.0 | Autonomi 旗舰产品 | 核心技能