不泄露隐私的会话分析:Better Harness如何把Coding Agent对话变成安全可用的证据
【免费下载链接】better-harnessAn open-source Harness Engineering platform for coding agents—define harnesses as code, run controlled experiments, inspect evidence, and compare outcomes. Turn task evidence into actionable team and organization insights.项目地址: https://gitcode.com/gh_mirrors/be/better-harness
如果你正在使用 Claude Code、Cursor、Codex 等 Coding Agent 写代码,那么 Better Harness 的会话分析(Session Analysis)能力值得你了解:它是一个开源的 Harness Engineering 平台,能把你与 Coding Agent 的本地对话记录,加工成脱敏、有边界、可追溯的工程证据——密钥、路径、私有 ID 自动打码,数据全程留在本机,最终产出带置信度标注的改进建议报告,全程不上传任何原始对话内容。
为什么 Coding Agent 会话分析必须“隐私安全”?
先想清楚风险:Coding Agent 的会话记录(通常是~/.claude/projects、~/.codex/sessions、~/.cursor/projects下的 JSONL 文件)里藏着什么?
- 📝 你输入的每一句提示词
- 💻 完整命令、绝对路径(暴露你的用户名和目录结构)
- 🔑 误粘贴进对话的API Key、Token、私钥
- 🖼️ 对话中引用的图片和文件内容
如果直接“把会话喂给分析工具”,等于把整个项目上下文(含凭据)交了出去。Better Harness 的做法是:先脱敏、再分析、只保留最小必要信息,并且所有分析默认在本地完成。
隐私安全会话分析的四道防线
防线一:本地优先,数据不出机器
会话分析 CLI 全部在本地读取会话文件,支持 Qoder、Codex、Claude Code、Cursor、Qwen Code、Copilot、Pi、Kimi Code、WorkBuddy、Grok 等 10 类主机:
# 第一步:探测本机有哪些会话证据源 node scripts/session-analysis.mjs sources --platform claude --workspace /path/to/repo命令只会列出“证据在哪里、有多少”,原始内容不会离开你的机器。入口脚本见 scripts/session-analysis.mjs。
防线二:文本脱敏引擎,密钥和路径自动打码
核心实现在 privacy-safe-text.mjs,它对任何进入报告的文本逐层清洗:
| 原文内容 | 脱敏后 |
|---|---|
Bearer eyJhbGci… | Bearer <redacted> |
api_key: sk-abcdef123 | api_key=<redacted> |
ghp_xxx、xoxb-xxx、AKIA… | <secret> |
/Users/alice/secret-project | <path> |
550e8400-e29b-…(UUID) | <id> |
session_abc123… | <id> |
它还做三件容易被忽略的事:
- 剥离注入的上下文块——Agent 框架自动拼进提示词的
<environment_context>、skill 片段等不属于“用户真正说的话”,直接剔除; - 去掉 Markdown 图片和链接——只保留链接文字,防止报告里混入内网地址;
- 强制截断——单条摘要最长 160~800 字符,防止整段源码或文件内容被夹带进证据。
防线三:有界保留,只留“第一句 / 一句中间 / 最后一句”
一个 40 轮的会话,真的需要全部 40 句提示词吗?不需要。privacy-safe-text.mjs 中的privacySafeUserInputEvidence最多保留3 条脱敏后的关键轮次(初始请求、中间关键轮、最后跟进),并显式记录observedTurns与omittedTurns——省略了多少轮本身就是证据,而不是悄悄吞掉。
防线四:明确“永远不读”的边界
不同平台的隐私边界都写在 sessions-diagnostics.md 里,举几个例子:
- Copilot 的
session-store.db文档标注为自动管理文件——永不读取;权限事件只保留“请求类型 + 决定结果”,命令内容一律不保留 - Kimi Code 的
credentials与server.token永不读取 - Cursor 的
store.db永不解码 - 调试命令
facts --debug会暴露原始会话 ID,被明确标记为“仅限操作者本地诊断,严禁进入报告”
从脱敏事件到可信报告:四阶段流水线
脱敏只是第一步。session-insights-report.md 定义了完整的四阶段契约:
- 证据提取:从脱敏后的事件、审计日志、配置中构建有界证据
- 洞察打包:把统计信号转成紧凑卡片(覆盖率、验证行为、重复摩擦、长会话)
- 分析与复核:写报告时对照同一份有界证据,专查“过度声称”和“跨工具串味”
- 修订与质量门:每条洞察必须带Scope(范围)+ Confidence(置信度,仅 Low/Medium/High),推断的机制一律标注为“可能”
可视化查看:Harness Inspector 的证据工作台
想亲自“翻”会话证据?Harness Inspector 是一个本地、只读的证据工作台,生成自包含的 HTML 报告(不写 Git、不重跑工具、不联网)。
它的关键设计正是隐私边界本身:“归一化但不扩大隐私边界”——报告里只保留脱敏提示词、中性化的动作标签、有界工具细节、仓库相对路径;原始工具载荷、隐藏推理过程、凭据、绝对家目录路径一律不进报告。详见 harness-inspector.md。
日期总览视图则把多天的用户提示词与 68 次归一化动作(Run Command、Edit Files、Read Files…)压缩成一张时间线,悬停可见动作、主机工具、状态与延迟——但依然看不到任何原始命令文本。
# 一条命令生成当前工作区的私有 Inspector 报告 npx @qoder-ai/better-harness inspector从单次分析到组织洞察
单次会话分析回答“这次 Agent 干得怎么样”;把多次报告按时间对齐后,历史视图能展示 Agent Work Loop 五个维度(任务理解、受控执行、变更验证、可靠交付、学习沉淀)的变化趋势——注意它诚实地标注:这是报告趋势,不是因果证明。
上手清单:三步得到隐私安全的会话洞察
- 探测:
sources确认本机存在哪些平台的会话证据,不存在的平台会明确标记,而不是当成“零活动” - 统计:
facets获取事件数、时间范围、验证行为等聚合信号(全脱敏) - 洞察:
insights得到紧凑的洞察卡片与行动候选,再按需对个别会话做有界抽查
核心模块位置速查:
- 会话分析实现:scripts/session-analysis/
- 脱敏引擎:scripts/session-analysis/privacy-safe-text.mjs
- 会话证据规范:references/session-evidence/
- Inspector 文档:docs/docs/concepts/harness-inspector.md
总结
Better Harness 给 Coding Agent 会话分析立了一个可参考的隐私基准:密钥自动打码、路径与 ID 归一化、只保留最小轮次、明确永不读取的文件边界、本地完成、报告可追溯。对你来说,这意味着可以安心把“Agent 到底在干什么、哪里反复卡壳、验证环节是否缺失”这类问题交给它来回答——而不必担心你的提示词和凭据出现在任何报告里。
【免费下载链接】better-harnessAn open-source Harness Engineering platform for coding agents—define harnesses as code, run controlled experiments, inspect evidence, and compare outcomes. Turn task evidence into actionable team and organization insights.项目地址: https://gitcode.com/gh_mirrors/be/better-harness
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考