Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
1 line
7.8 KiB
JSON
1 line
7.8 KiB
JSON
{"repo": "ailiujiarui/chouxiang", "files": {"README.md": {"f9547d24977f7685c8a0d50d8955b2a5f10929d3": {"t": 1786068128.969567, "n": 4773, "h": "0e96f8f5f0b123cd", "c": "# Refactor Agent\n\n面向 Python 的本地代码审判与安全精简工具。当前支持:\n\n1. 粘贴 Python 代码,执行 AST 分析、多 Agent 对抗和人格化审查;\n2. 粘贴 Python 代码并提供 pytest,执行完整的本地验证精简;\n3. 只读克隆 allowlist 中的 GitHub 仓库,在本地完成分析与验证。\n\n项目不接收 GitHub Webhook,不创建分支、commit、push、Pull Request 或 Issue 评论。\n\n## 执行链\n\n统一分析流程为:\n\n```text\nInput Adapter\n -> AST Analyst\n -> Minimizer\n -> Defender\n -> Adversary\n -> Judge\n -> Persona Reporter\n```\n\n- LLM 生成的候选文件始终按不可信输入处理。\n- AST Guard 限制允许修改的区域,并拒绝危险调用、新增高风险 import、公开 API 破坏和越界修改。\n- API/Worker 使用无网络、非 root、只读根文件系统和资源受限的 Docker sandbox。\n- 用户测试、系统生成测试、对抗测试、变异测试和 Judge 共同形成可追溯证据。\n- 报告明确标记 `STATIC`、`GENERATED_TESTS`、`USER_TESTS` 或 `REPOSITORY_TESTS` 证据等级。\n- 人格只影响报告措辞,不参与技术裁决和安全判断。\n\n## 一键启动\n\n需要 Docker Desktop 和 Windows PowerShell:\n\n```powershell\n.\\scripts\\start.ps1 -Build\n```\n\n默认地址:\n\n- Dashboard:`http://127.0.0.1:8501`\n- API:`http://127.0.0.1:8000`\n\n默认是仅绑定 localhost 的本地单用户模式,不设置管理员令牌,Dashboard 可直接提交和管理本地任务。这个默认值不代表网络部署安全;不要把端口转发到不可信网络。\n\n默认配置为真实 DeepSeek LLM。缺少 `DEEPSEEK_API_KEY` 时 API 和 Dashboard 仍会启动,但 `/capabilities` 会报告 LLM 不可用,并禁用依赖 LLM 的任务入口;系统不会静默切换到 mock。仅在明确的离线演示或测试场景设置 `REFACTOR_AGENT_MOCK_LLM=true`。停止服务但保留本地数据:\n\n```powershell\n.\\scripts\\start.ps1 -Down\n```\n\nSQLite 默认使用统一的 5000ms `busy_timeout` 和 `auto` journal 策略;可通过 `REFACTOR_AGENT_SQLITE_JOURNAL_MODE=auto|wal|delete` 与 `REFACTOR_AGENT_SQLITE_BUSY_TIMEOUT_MS` 调整。WAL 只会在安全 SQLite 版本和本地文件系统上启用,备份与回退步骤见 [`docker/README.md`](docker/README.md#wal-备份与回退)。\n\n端口、基础镜像和 Python 包索引可以覆盖:\n\n```powershell\n.\\scripts\\start.ps1 -Build `\n -ApiPort 18000 `\n -DashboardPort 18501 `\n -PythonBaseImage \"your-registry.example.com/library/python:3.12-slim\" `\n -PipIndexUrl \"https://pypi.org/simple\"\n```\n\n### Nailong 桌面主动通知\n\n需要额外安装桌面依赖,并在启动服务时追加 `-Desktop`:\n\n```powershell\npython -m pip install -e \".[desktop]\"\n.\\scripts\\start.ps1 -Build -Desktop\n```\n\n桌面端通过现有分析事件流接收任务状态,按冷却、免打扰和终态优先级规则显示弹窗。默认数据目录为 `.runs`,其中包含 `nailong-agent.lock`、`nailong_privacy.sqlite` 和 `nailong_notifications.sqlite`;可通过 `NAILONG_DATA_DIR` 或启动脚本的 `-NailongDataDir` 修改。`NAILONG_ANALYSIS_URL` 和 `NAILONG_DEEPSEEK_MODEL` 可提供桌面端默认连接配置。桌宠数据库不会保存 API Key、源代码、原始窗口内容、截图、OCR、剪贴板或终端正文。完整的事件映射、接口和验证方式见 [`docs/designs/2026-07-24-nailong-proactive-notifications-update.md`](docs/designs/2026-07-24-nailong-proactive-notifications-update.md)。\n\n#### Nailong 活动监听\n\n活动监听默认由 `NAILONG_ACTIVITY_LISTENER_ENABLED=true` 创建;可设置为 `false`,或在本次启动使用 `--no-activity-listener` 关闭。该开关只控制是否创建监听器,已持久化的 `activity_listener_enabled`、手动暂停和应用白名单/黑名单仍在每次事件处理时生效。\n\n首次启动必须由用户明确授权活动采集。Windows 实现响应前台窗口变化,并每 15 秒采样系统空闲秒数:连续空闲达到 5 分钟时只发布一次 idle 事件,恢复活动后才允许下一次发布;同时读取进程可执行文件名和窗口是否覆盖当前显示器。为完成本地敏感/会议拦截和有限的 IDE 状态识别,窗口标题可能只在采集线程内短暂读取;原始标题会在隐私边界后丢弃,不会进入统一事件、EventBus、SQLite、日志或远程推理。编辑器/终端正文、代码、剪贴板、截图和 OCR 默认不会采集。会议应用和敏感应用会在入库前被隐私策略阻止。非 Windows 平台使用空实现,不采集任何活动。\n\n只允许通过隐私策略后的统一最小化事件写入 `nailong_privacy.sqlite`,其中只包含归一化应用类别、活动类型、置信度和固定格式摘要。空闲、全屏、会议等原始采集信号只在本地隐私边界内用于分类和拦截,不会写入统一事件。可在桌宠隐私控制中使用“删除本地活动记录”清除活动事件和聚合记录,首次授权选择不会被删除。\n\n## 可选认证\n\n本地单用户启动不需要管理员令牌。需要额外保护提交、取消、重试和 allowlist 管理操作时,可在启动前显式设置:\n\n```powershell\n$env:REFACTOR_AGENT_ADMIN_TOKEN=\"<strong-random-secret>\"\n.\\scripts\\start.ps1\n```\n\n此时 `/capabilities` 返回 `admin_token_required=true`,Dashboard 才显示管理员令牌输入框;未携带正确 Bearer Token 的控制请求会返回 `401`。令牌不会写入 SQLite 或运行产物。\n\n## DeepSeek\n\n使用真实模型:\n\n```powershell\n$env:DEEPSEEK_API_KEY=\"<set-in-environment>\"\n$env:REFACTOR_AGENT_MOCK_LLM=\"false\"\n.\\scripts\\start.ps1\n```\n\n离线演示(不会调用 DeepSeek):\n\n```powershell\n$env:REFACTOR_AGENT_MOCK_LLM=\"true\"\n.\\scripts\\start.ps1\n```\n\n可选变量为 `DEEPSEEK_BASE_URL` 和 `DEEPSEEK_MODEL`。API Key 不会写入 SQLite、日志或运行产物。\n\n## CLI\n\n安装开发依赖:\n\n```powershell\npython -m pip install -e .[dev]\n```\n\n审查文件或 stdin,`REVIEW` 不执行用户代码:\n\n```powershell\nrefactor-agent snippet --source snippet.py --mode review --persona tsundere\nGet-Content snippet.py | refactor-agent snippet --source - --mode review\n```\n\n提供 pytest 后执行验证精简:\n\n```powershell\nrefactor-agent snippet `\n --source snippet.py `\n --tests test_snippet.py `\n --mode verified-refactor `\n --sandbox-backend docker\n```\n\n只读 GitHub URL:\n\n```powershell\nrefactor-agent github-url `\n --repo-url https://github.com/owner/repository `\n --issue-text \"简化 calculate 函数\" `\n --target src/package/module.py `\n --tests tests\n```\n\n## 控制 API\n\n主要接口:\n\n- `/health`、`/capabilities`\n- `/analysis`、`/jobs/snippet`、`/jobs/url`\n- `/jobs`、任务详情、事件、取消和重试\n- `/runs`、trajectory、运行产物和 `/benchmarks`\n- `/admin/repository-allowlist`\n\n仓库 URL 仍必须通过 canonical URL 校验和持久化 allowlist。源码和测试会保存在本地任务数据中,不要提交密钥。\n\n## 验证\n\n```powershell\npytest -q\npython -m compileall -q src tests\ndocker compose config --quiet\ngit diff --check\n```\n\nDocker 细节见 `docker/README.md`,当前产品设计见 `docs/designs/2026-07-19-code-judge-product-redesign.md`。\n\n## 许可证\n\n本项目采用 [GNU Affero General Public License v3.0 或更高版本](LICENSE)。\n如果你向他人分发本项目或运行修改后的网络服务,必须遵守 AGPL-3.0-or-later,\n包括向交互用户提供对应源代码的义务。完整条款见 [`LICENSE`](LICENSE)。\n"}}}} |